@sap/open.fe 1.99.0 → 1.100.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/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +1748 -1813
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessageButton.ts +1801 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter-dbg.js +77 -32
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessageFilter.ts +26 -0
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover-dbg.js +43 -53
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.js +2 -3
- package/packages/sap.fe.common/src/sap/fe/common/MessagePopover.ts +39 -0
- package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +31 -38
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +8 -9
- package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js.map +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +23 -71
- package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +4 -4
- package/packages/sap.fe.common/src/sap/fe/common/library.js +4 -5
- package/packages/sap.fe.common/src/sap/fe/common/library.ts +35 -0
- package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
- package/packages/sap.fe.common/src/sap/fe/common/resources.json +54 -32
- package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +1 -69
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.ts +0 -70
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent-dbg.js +388 -399
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/AppComponent.ts +403 -0
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler-dbg.js +127 -158
- package/packages/sap.fe.core/src/sap/fe/core/AppStateHandler.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/BaseController-dbg.js +82 -58
- package/packages/sap.fe.core/src/sap/fe/core/BaseController.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/BaseController.ts +68 -0
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +111 -20
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.ts +131 -32
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI-dbg.js +278 -274
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/ExtensionAPI.ts +250 -0
- package/packages/sap.fe.core/src/sap/fe/core/PageController-dbg.js +157 -29
- package/packages/sap.fe.core/src/sap/fe/core/PageController.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/PageController.ts +60 -32
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +694 -756
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.ts +11 -9
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization-dbg.js +21 -31
- package/packages/sap.fe.core/src/sap/fe/core/Synchronization.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.ts +10 -3
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel-dbg.js +20 -38
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TemplateModel.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +1354 -1370
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.ts +33 -22
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync-dbg.js +392 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon-dbg.js +136 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage-dbg.js +262 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft-dbg.js +30 -68
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/draft.ts +44 -71
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +55 -36
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.ts +66 -46
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +34 -15
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/operations.ts +48 -18
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky-dbg.js +17 -4
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/actions/sticky.ts +21 -4
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata-dbg.js +69 -66
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +1593 -1669
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation-dbg.js +79 -54
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +718 -779
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +796 -816
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +1004 -1005
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +487 -521
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +141 -169
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +233 -244
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady-dbg.js +301 -336
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator-dbg.js +188 -175
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +157 -149
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing-dbg.js +144 -125
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener-dbg.js +7 -6
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share-dbg.js +230 -268
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/Share.ts +231 -0
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +592 -633
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +788 -806
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution-dbg.js +67 -66
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/CommandExecution.ts +72 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +90 -75
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +130 -125
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +103 -112
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper-dbg.js +122 -135
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar-dbg.js +162 -159
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FilterBar.ts +143 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper-dbg.js +45 -39
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate-dbg.js +37 -42
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -2
- package/packages/sap.fe.core/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +126 -116
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +241 -255
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +150 -141
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +335 -322
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +74 -74
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext-dbg.js +348 -379
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ConverterContext.ts +19 -16
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper-dbg.js +354 -378
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +6 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +26 -12
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -23
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +118 -53
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +161 -207
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +115 -133
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +20 -6
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject-dbg.js +12 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key-dbg.js +42 -57
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/Key.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +25 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +10 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +7 -5
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +92 -98
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +104 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.js +5 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +53 -2
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component-dbg.js +50 -54
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/fpm/Component.ts +48 -0
- package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/fpm/resources.json +7 -3
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +323 -309
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression-dbg.js +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport-dbg.js +186 -62
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper-dbg.js +5 -4
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper-dbg.js +601 -684
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +25 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +5 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
- package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +426 -451
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +36 -32
- package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +3 -3
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +644 -738
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js +24 -35
- package/packages/sap.fe.core/src/sap/fe/core/library-preload.support.js.map +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/library.js +2 -3
- package/packages/sap.fe.core/src/sap/fe/core/library.support.js +22 -33
- package/packages/sap.fe.core/src/sap/fe/core/library.support.ts +23 -0
- package/packages/sap.fe.core/src/sap/fe/core/library.ts +420 -0
- package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +5 -3
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +22 -5
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +26 -6
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +28 -8
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +26 -6
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +30 -10
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
- package/packages/sap.fe.core/src/sap/fe/core/resources.json +745 -384
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +45 -71
- package/packages/sap.fe.core/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +154 -192
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +66 -92
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +284 -339
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +67 -102
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +754 -814
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory-dbg.js +649 -736
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +567 -592
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +354 -386
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage-dbg.controller.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper-dbg.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/CommonHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics-dbg.js +36 -48
- package/packages/sap.fe.core/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +93 -85
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper-dbg.js +25 -32
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/FilterHelper.ts +36 -35
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper-dbg.js +2 -2
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/packages/sap.fe.core/src/sap/fe/core/templating/UIFormatters.ts +37 -24
- package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1664 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.jstemplates.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/model/MacroNavigationModel.js +59 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldDisplay/localService/RootEntity.json +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/Component.js +33 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.controller.js +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/FieldMessages.view.xml +18 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/Entities.json +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/localService/service.cds +6 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/field/fieldMessages/manifest.json +68 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/fieldMessages.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/filterBar/filterBarSVandAnnotationDefaults/FilterBarSVandAnnotationDefaults.controller.js +1 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.controller.js +7 -2
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/Page.view.xml +9 -3
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.js +23 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/RootEntity.ts +11 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableCustoms/localService/service.cds +11 -23
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/Component.js +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.controller.js +35 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/TableMessages.view.xml +21 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/RootEntity.json +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/localService/service.cds +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/table/tableMessages/manifest.json +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/tableMessages.html +37 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/basicExtensibility/localService/ChildEntity.json +5 -4
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/view/App.view.xml +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.js +1 -169
- package/packages/sap.fe.core/test/sap/fe/core/jest/AnnotationHelper.spec.ts +0 -212
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +2305 -119
- package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.ts +2206 -67
- package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.js +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FilterUtils.spec.ts +34 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.js +114 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/FlexibleColumnLayout.spec.ts +114 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.js +113 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/Paginators.spec.ts +78 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.js +599 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/RouterProxy.spec.ts +614 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.js +23 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/TemplateConverter.spec.ts +26 -14
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.js +87 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/TransactionHelper.spec.ts +82 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.js +124 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/VisualFilterUtils.spec.ts +141 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +34768 -67
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.js +170 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/ActivitySync.spec.ts +155 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.js +101 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/CollaborationCommon.spec.ts +94 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.js +82 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/collaboration/Manage.spec.ts +77 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/draft.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.js +7 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/messageHandling.spec.ts +7 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.js +104 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/operations.spec.ts +96 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.js +83 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/actions/sticky.spec.ts +79 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.js +72 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/appcomponent.spec.ts +64 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.js +619 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/EditFlow.spec.ts +668 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.js +297 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalEditFlow.spec.ts +276 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.js +149 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalIntentBasedNavigation.spec.ts +142 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.js +776 -182
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/InternalRouting.spec.ts +181 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/KPIManagement.spec.js +19 -43
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.js +2 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MassEdit.spec.ts +8 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +5 -27
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Routing.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.js +86 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/Share.spec.ts +80 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/SideEffects.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +2 -18
- package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.js +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/DataLossOrDraftDiscardHandler.spec.ts +29 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.js +51 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/FilterBar.spec.ts +47 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/controls/__snapshots__/FilterBar.spec.ts.snap +3 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.js +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ConverterContext.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.js +25 -36
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Filter.spec.ts +26 -36
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.js +3 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/ListReportConverter.spec.ts +2 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/MetaModelConverter.spec.ts +6 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +133 -9
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +171 -8
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.js +174 -210
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/TableStandardActions.spec.ts +294 -230
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/Filter.spec.ts.snap +3 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.js +237 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Chart.spec.ts +246 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.js +9993 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/DataVisualization.spec.ts +11352 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.js +460 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/Table.spec.ts +543 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.js +616 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/TableAnalytics.spec.ts +711 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/controls/manifest.json +887 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.js +393 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/converters/objectPage/HeaderAndFooterAction.spec.ts +434 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.js +31 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/DataConverter.ts +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Filter.cds +27 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/MassEditHelper.cds +12 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/manifest.json +150 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata.xml +365 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_groupable_options.xml +96 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_textArrangement.xml +102 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/OKRA/metadata_withPV.xml +359 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/Table.cds +89 -27
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.js +421 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/TemplatingTestData.ts +413 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/aggregatedSD/metadata.xml +3767 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/manifest.json +185 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/dsr/metadata.xml +1534 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/manifest.json +887 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/data/salesOrderMetadata_qunit.xml +4995 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.js +48 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/CollaborationFormatters.spec.ts +48 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +131 -51
- package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +81 -31
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.js +13 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/AppStartupHelper.spec.ts +12 -6
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.js +17 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/MassEditHelper.spec.ts +24 -7
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +61 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.ts +59 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.js +3 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/PasteHelper.spec.ts +1 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.js +4 -4
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/SemanticDateOperators.spec.ts +6 -3
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.js +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/StableIdHelper.spec.ts +1 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/AppStartupHelper.spec.ts.snap +19 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/__snapshots__/MassEditHelper.spec.ts.snap +0 -73
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.js +11 -1
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/ChangePageConfiguration.spec.ts +15 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/manifestmerger/__snapshots__/ChangePageConfiguration.spec.ts.snap +30 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.js +49 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/services/SideEffectsService.spec.ts +60 -5
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.js +384 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/DataModelPathHelper.spec.ts +427 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.js +132 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/PropertyHelper.spec.ts +156 -2
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.js +273 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/UIFormatters.spec.ts +402 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.js +45 -0
- package/packages/sap.fe.core/test/sap/fe/core/jest/templating/ValueHelpTemplating.spec.ts +40 -0
- package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +2 -1
- package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +0 -102
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.100.json +326 -0
- package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.99.json +0 -22
- package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Chart.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI-dbg.js +22 -43
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartAPI.ts +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +14 -24
- package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/DraftIndicator.fragment.xml +3 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/Field.fragment.xml +16 -18
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +162 -100
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +93 -16
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.fragment.xml +2 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata-dbg.js +16 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +58 -83
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +16 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +112 -192
- package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Form.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI-dbg.js +4 -20
- package/packages/sap.fe.macros/src/sap/fe/macros/FormAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI-dbg.js +10 -31
- package/packages/sap.fe.macros/src/sap/fe/macros/FormContainerAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI-dbg.js +147 -162
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroAPI.ts +32 -8
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata-dbg.js +5 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/MacroMetadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +56 -74
- package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +90 -39
- package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +284 -251
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +126 -14
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +38 -101
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +68 -6
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +72 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +67 -10
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/DraftEditState.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper-dbg.js +1 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterFieldHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils-dbg.js +62 -39
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/FilterUtils.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue-dbg.js +104 -50
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/MultiValue.ts +68 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range-dbg.js +83 -35
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Range.ts +66 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value-dbg.js +327 -216
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/filter/type/Value.ts +303 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollaborationAvatar.fragment.xml +15 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata-dbg.js +14 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/CollectionField.metadata.ts +18 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.fragment.xml +12 -29
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata-dbg.js +9 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/DataPoint.metadata.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata-dbg.js +529 -533
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.js +2 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.metadata.ts +568 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/FilterField.fragment.xml +0 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator-dbg.js +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/SituationsIndicator.ts +3 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldContent.fragment.xml +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +13 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/DataPoint.fragment.xml +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ExpandableText.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LabelSemanticKey.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Link.fragment.xml +38 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWithQuickViewForm.fragment.xml +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/LinkWrapper.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/MdcFieldWithValueHelp.fragment.xml +1 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/ObjectIdentifier.fragment.xml +55 -11
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/SemanticKeyWithDraftIndicator.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/displayStyle/Text.fragment.xml +3 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DatePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/DateTimePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/Input.fragment.xml +12 -3
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithUnit.fragment.xml +26 -5
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/InputWithValueHelp.fragment.xml +10 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/RatingIndicator.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/TimePicker.fragment.xml +9 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/fragments/ObjectIdentifierContent.fragment.xml +4 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +31 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +20 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime-dbg.js +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/situations/Runtime.ts +7 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +90 -118
- package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +13 -12
- package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +185 -214
- package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
- package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +4 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_saptrc.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +4 -2
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +3 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +273 -199
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/Column.fragment.xml +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +2 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CreationRow.fragment.xml +13 -20
- package/packages/sap.fe.macros/src/sap/fe/macros/table/CustomColumn.fragment.xml +1 -0
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +5 -110
- package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +98 -78
- package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata-dbg.js +1 -1
- package/packages/sap.fe.macros/src/sap/fe/macros/valuehelp/ValueHelpFilterBar.metadata.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +211 -10
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +1 -45
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +0 -60
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.js +78 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldAPI.spec.ts +71 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +35 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +44 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarDelegate.spec.js +0 -76
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.js +27 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterBarMacro.spec.ts +28 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.js +10 -12
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterFieldHelper.spec.ts +10 -10
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/FilterUtils.spec.js +129 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.js +13 -39
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/MacroAPI.spec.ts +2 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.js +119 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/RetrieveTextFromValueList.spec.ts +113 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.js +166 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/Table.spec.ts +190 -3
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.js +457 -389
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableAPI.spec.ts +504 -425
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.js +104 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableMacro.spec.ts +158 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +0 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +5 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +114 -25
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithSemanticKey.spec.ts.snap +40 -40
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroWithValueHelp.spec.ts.snap +4 -8
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterBarMacro.spec.ts.snap +19 -19
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FilterField.spec.ts.snap +3 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +12 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +89 -90
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/Table.spec.ts.snap +1314 -58
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableMacro.spec.ts.snap +459 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldMacroDataFieldTypes.cds +18 -2
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/QuickViewForm.cds +6 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +107 -106
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableAPI.cds +197 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +33 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +30 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.js +72 -29
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldTemplating.spec.ts +86 -18
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/__snapshots__/columnWidth.spec.ts.snap +51 -27
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.js +55 -9
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/columnWidth.spec.ts +46 -6
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/data/columnWidth.cds +28 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +170 -43
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +131 -15
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +90 -53
- package/packages/sap.fe.macros/test/sap/fe/macros/jest/tsx/TestTSX.spec.tsx +2 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelper.qunit.js +1 -99
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/MacroMetadata.qunit.js +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +4 -4
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueHelpTemplating.qunit.js +15 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/ValueListHelper.qunit.js +265 -106
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/metadata/simpleMetadata.js +38 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.100.json +372 -0
- package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.99.json +0 -11
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js.map +2 -2
- package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
- package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
- package/packages/sap.fe.navigation/src/sap/fe/navigation/resources.json +8 -8
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +27 -27
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/base/resources.json +1 -1
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/css_variables.source.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcb/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_hcw/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/css_variables.source.less +315 -14
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_belize_plus/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/css_variables.source.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/css_variables.source.less +317 -16
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_dark/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcb/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/css_variables.source.less +316 -15
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_fiori_3_hcw/resources.json +2 -2
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.less +400 -99
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/css_variables.source.less +400 -99
- package/packages/sap.fe.placeholder/src/sap/fe/placeholder/themes/sap_horizon/resources.json +2 -2
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
- package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/resources.json +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component-dbg.js +7 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +22 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +13 -18
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +7 -7
- package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.xml +3 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +50 -9
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +1 -12
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +50 -17
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +7 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox-dbg.designtime.js +3 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +19 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/CollaborationDraft.fragment.xml +36 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacetCustomContainer.fragment.xml +1 -0
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +3 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +3 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/designtime/library-preload.designtime.js.map +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +4 -3
- package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +22 -21
- package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
- package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
- package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +14 -14
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ar.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_bg.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ca.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cs.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_cy.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_da.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_de.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_el.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_GB.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_es_MX.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_et.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_fr_CA.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_hu.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_id.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_it.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_iw.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ja.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_kk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ko.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lt.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_lv.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ms.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_nl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_no.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_pt_PT.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ro.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_ru.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sh.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sl.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_sv.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_th.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_tr.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_uk.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_vi.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/messagebundle_zh_TW.properties +0 -15
- package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +115 -89
- package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +353 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.jsmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/IntentBasedNavigation.spec.ts +3 -3
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/Share.spec.ts +4 -4
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.js +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ListReport/overrides/ViewState.spec.ts +2 -2
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +2 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +7 -7
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.js +30 -61
- package/packages/sap.fe.templates/test/sap/fe/templates/jest/RootContainer/RootContainerBaseController.spec.ts +1 -1
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.100.json +192 -0
- package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.99.json +0 -11
- package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/FeMocks-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/FeMocks.ts +8 -8
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +6 -4
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +10 -6
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +126 -203
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +17 -2
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI-dbg.js +9 -1
- package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarAPI.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +2 -2
- package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js.map +2 -2
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +9 -18
- package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
- package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
- package/packages/sap.fe.test/src/sap/fe/test/resources.json +18 -18
- package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
- package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
- package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormTemplatingTs.qunit.js +0 -271
|
@@ -0,0 +1,616 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/MetaModelConverter", "../../data/DataConverter", "sap/base/util/merge", "sap/fe/core/converters/controls/Common/Table", "sap/fe/core/converters/helpers/Aggregation", "sap/fe/core/converters/ConverterContext", "sap/fe/test/JestTemplatingHelper", "path"], function (MetaModelConverter, DataConverter, merge, Table, Aggregation, ConverterContext, JestTemplatingHelper, path) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var getMetaModel = JestTemplatingHelper.getMetaModel;
|
|
9
|
+
var AggregationHelper = Aggregation.AggregationHelper;
|
|
10
|
+
var createTableVisualization = Table.createTableVisualization;
|
|
11
|
+
var getPageManifest = DataConverter.getPageManifest;
|
|
12
|
+
var getInvolvedDataModelObjects = MetaModelConverter.getInvolvedDataModelObjects;
|
|
13
|
+
var convertTypes = MetaModelConverter.convertTypes;
|
|
14
|
+
|
|
15
|
+
var converterOutput;
|
|
16
|
+
var metaModel;
|
|
17
|
+
var manifestSettings;
|
|
18
|
+
var converterContext;
|
|
19
|
+
var mockShellService = {
|
|
20
|
+
getContentDensity: function () {
|
|
21
|
+
return "not-a-correct-value";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
var mockDiagnostics = {
|
|
25
|
+
addIssue: function (issueCategory, issueSeverity, details) {
|
|
26
|
+
console.log(details);
|
|
27
|
+
},
|
|
28
|
+
getIssues: function () {
|
|
29
|
+
return [];
|
|
30
|
+
},
|
|
31
|
+
checkIfIssueExists: function (issueCategory, issueSeverity, details, issueCategoryType, issueSubCategory) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
describe("Table Converter Unit Tests with Analytics", function () {
|
|
36
|
+
beforeEach(function () {
|
|
37
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata.xml")).then(function (oMetaModel) {
|
|
38
|
+
metaModel = oMetaModel;
|
|
39
|
+
return convertTypes(oMetaModel);
|
|
40
|
+
}).then(function (_converterOutput) {
|
|
41
|
+
converterOutput = _converterOutput;
|
|
42
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
43
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/BusinessPartners")));
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
test("- groupable properties from AggregationHelper", {
|
|
47
|
+
"references": [{
|
|
48
|
+
"type": "JIRA",
|
|
49
|
+
"ID": "FIORITECHP1-19161"
|
|
50
|
+
}]
|
|
51
|
+
}, function () {
|
|
52
|
+
var entityType = converterContext.getEntityType();
|
|
53
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
54
|
+
var expectedGroupable = {
|
|
55
|
+
"Id": false,
|
|
56
|
+
"Name": true,
|
|
57
|
+
"Country": true,
|
|
58
|
+
"Region": true,
|
|
59
|
+
"Segment": true,
|
|
60
|
+
"Industry": false,
|
|
61
|
+
"AccountResponsible": true,
|
|
62
|
+
"SalesNumber": false,
|
|
63
|
+
"SalesAmount": false,
|
|
64
|
+
"SalesAmountLocalCurrency": false,
|
|
65
|
+
"AmountPerSale": false,
|
|
66
|
+
"Currency": true,
|
|
67
|
+
"LocalCurrency": true,
|
|
68
|
+
"SalesQuantity": false,
|
|
69
|
+
"QuantityUnit": true,
|
|
70
|
+
"myMessages": false,
|
|
71
|
+
"CountryVisibility": false,
|
|
72
|
+
"Country_Code": false,
|
|
73
|
+
"ReferencedCustomerId": false
|
|
74
|
+
};
|
|
75
|
+
entityType.entityProperties.forEach(function (property) {
|
|
76
|
+
expect(aggregationHelper.isPropertyGroupable(property)).toEqual(expectedGroupable[property.name]); //"check if property " + property.name + " is groupable"
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
test("- aggregatable properties from AggregationHelper", {
|
|
80
|
+
"references": [{
|
|
81
|
+
"type": "JIRA",
|
|
82
|
+
"ID": "FIORITECHP1-21270"
|
|
83
|
+
}]
|
|
84
|
+
}, function () {
|
|
85
|
+
var entityType = converterContext.getEntityType();
|
|
86
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
87
|
+
var expectedAggregatable = {
|
|
88
|
+
"Id": false,
|
|
89
|
+
"Name": false,
|
|
90
|
+
"Country": false,
|
|
91
|
+
"Region": false,
|
|
92
|
+
"Segment": false,
|
|
93
|
+
"Industry": false,
|
|
94
|
+
"AccountResponsible": false,
|
|
95
|
+
"SalesNumber": true,
|
|
96
|
+
"SalesAmount": false,
|
|
97
|
+
"SalesAmountLocalCurrency": true,
|
|
98
|
+
"AmountPerSale": true,
|
|
99
|
+
"Currency": true,
|
|
100
|
+
"LocalCurrency": true,
|
|
101
|
+
"SalesQuantity": true,
|
|
102
|
+
"QuantityUnit": false,
|
|
103
|
+
"myMessages": false,
|
|
104
|
+
"CountryVisibility": false,
|
|
105
|
+
"Country_Code": false,
|
|
106
|
+
"ReferencedCustomerId": false
|
|
107
|
+
};
|
|
108
|
+
entityType.entityProperties.forEach(function (property) {
|
|
109
|
+
expect(aggregationHelper.isPropertyAggregatable(property)).toEqual(expectedAggregatable[property.name]); //"check if property " + property.name + " is aggregatable"
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
test("- custom aggregations from AggregationHelper", {
|
|
113
|
+
"references": [{
|
|
114
|
+
"type": "JIRA",
|
|
115
|
+
"ID": "FIORITECHP1-19161"
|
|
116
|
+
}]
|
|
117
|
+
}, function () {
|
|
118
|
+
var entityType = converterContext.getEntityType();
|
|
119
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
120
|
+
var expectedAggregates = {
|
|
121
|
+
"SalesAmountLocalCurrency": ["LocalCurrency"],
|
|
122
|
+
"AmountPerSale": ["Currency"],
|
|
123
|
+
"SalesNumber": [],
|
|
124
|
+
"SalesQuantity": [],
|
|
125
|
+
"Currency": [],
|
|
126
|
+
"LocalCurrency": []
|
|
127
|
+
};
|
|
128
|
+
var aggregationAnnotations = aggregationHelper.getCustomAggregateDefinitions();
|
|
129
|
+
var aggregates = {};
|
|
130
|
+
aggregationAnnotations.forEach(function (annotation) {
|
|
131
|
+
var oAggregatedProperty = aggregationHelper._entityType.entityProperties.find(function (oProperty) {
|
|
132
|
+
return oProperty.name === annotation.qualifier;
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
if (oAggregatedProperty) {
|
|
136
|
+
var _annotation$annotatio, _annotation$annotatio2;
|
|
137
|
+
|
|
138
|
+
var aContextDefiningProperties = (_annotation$annotatio = annotation.annotations) === null || _annotation$annotatio === void 0 ? void 0 : (_annotation$annotatio2 = _annotation$annotatio.Aggregation) === null || _annotation$annotatio2 === void 0 ? void 0 : _annotation$annotatio2.ContextDefiningProperties;
|
|
139
|
+
aggregates[oAggregatedProperty.name] = aContextDefiningProperties ? aContextDefiningProperties.map(function (oCtxDefProperty) {
|
|
140
|
+
return oCtxDefProperty.value;
|
|
141
|
+
}) : [];
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
expect(Object.keys(aggregates).length).toEqual(Object.keys(expectedAggregates).length); //, "Correct number of custom aggregates");
|
|
145
|
+
|
|
146
|
+
Object.keys(aggregates).forEach(function (aggregateKey) {
|
|
147
|
+
expect(aggregates[aggregateKey]).toEqual(expectedAggregates[aggregateKey]); //"Check aggregate " + aggregateKey + " and context-defining properties"
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
test("- Column properties", {
|
|
151
|
+
"references": [{
|
|
152
|
+
"type": "JIRA",
|
|
153
|
+
"ID": "FIORITECHP1-19161"
|
|
154
|
+
}]
|
|
155
|
+
}, function () {
|
|
156
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
157
|
+
var lineItem = resolvedTarget.annotation;
|
|
158
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
159
|
+
var aColumns = visualization.columns; // Check on key properties
|
|
160
|
+
|
|
161
|
+
var aKeyProperties = aColumns.filter(function (column) {
|
|
162
|
+
return column.isKey;
|
|
163
|
+
}).map(function (column) {
|
|
164
|
+
return column.relativePath;
|
|
165
|
+
});
|
|
166
|
+
expect(aKeyProperties).toEqual(["Id"]); //, "Check on key properties");
|
|
167
|
+
// Check on groupable properties
|
|
168
|
+
|
|
169
|
+
var aGroupableProperties = aColumns.filter(function (column) {
|
|
170
|
+
return column.isGroupable && !column.propertyInfos;
|
|
171
|
+
}).map(function (column) {
|
|
172
|
+
return column.relativePath;
|
|
173
|
+
});
|
|
174
|
+
var aExpectedGroupableProperties = ["Name", "Country", "Region", "Segment", "AccountResponsible", "Currency", "LocalCurrency", "QuantityUnit"];
|
|
175
|
+
expect(aGroupableProperties.length).toEqual(aExpectedGroupableProperties.length); // , "Check number of groupable properties");
|
|
176
|
+
|
|
177
|
+
aGroupableProperties.forEach(function (sPropName) {
|
|
178
|
+
expect(aExpectedGroupableProperties.indexOf(sPropName)).not.toEqual(-1); // , "Checking " + sPropName + " is groupable");
|
|
179
|
+
}); // Check on units/currencies
|
|
180
|
+
|
|
181
|
+
var aColumnsWithUnits = aColumns.filter(function (column) {
|
|
182
|
+
return column.unit !== undefined;
|
|
183
|
+
}).map(function (column) {
|
|
184
|
+
return {
|
|
185
|
+
path: column.relativePath,
|
|
186
|
+
unit: column.unit
|
|
187
|
+
};
|
|
188
|
+
});
|
|
189
|
+
var aExpectColumnsWithUnits = [{
|
|
190
|
+
path: "SalesAmount",
|
|
191
|
+
unit: "Property::Currency"
|
|
192
|
+
}, {
|
|
193
|
+
path: "SalesAmountLocalCurrency",
|
|
194
|
+
unit: "LocalCurrency"
|
|
195
|
+
}, {
|
|
196
|
+
path: "AmountPerSale",
|
|
197
|
+
unit: "Property::Currency"
|
|
198
|
+
}, {
|
|
199
|
+
path: "SalesQuantity",
|
|
200
|
+
unit: "QuantityUnit"
|
|
201
|
+
}];
|
|
202
|
+
expect(aColumnsWithUnits.length).toEqual(aExpectColumnsWithUnits.length); // , "Check number of properties with units");
|
|
203
|
+
|
|
204
|
+
aColumnsWithUnits.forEach(function (oColumn) {
|
|
205
|
+
var oExpected = aExpectColumnsWithUnits.find(function (oExpectedColumn) {
|
|
206
|
+
return oExpectedColumn.path === oColumn.path;
|
|
207
|
+
});
|
|
208
|
+
expect(oExpected).not.toEqual(undefined); // );
|
|
209
|
+
|
|
210
|
+
expect(oColumn.unit).toEqual(oExpected === null || oExpected === void 0 ? void 0 : oExpected.unit); // , "Checking " + oColumn.path + " has proper unit");
|
|
211
|
+
}); // Check on aggregates
|
|
212
|
+
|
|
213
|
+
var expectedAggregates = {
|
|
214
|
+
"Property::SalesAmountLocalCurrency": {
|
|
215
|
+
defaultAggregate: {
|
|
216
|
+
contextDefiningProperties: ["LocalCurrency"]
|
|
217
|
+
},
|
|
218
|
+
relativePath: "SalesAmountLocalCurrency"
|
|
219
|
+
},
|
|
220
|
+
"Property::AmountPerSale": {
|
|
221
|
+
defaultAggregate: {
|
|
222
|
+
contextDefiningProperties: ["Property::Currency"]
|
|
223
|
+
},
|
|
224
|
+
"relativePath": "AmountPerSale"
|
|
225
|
+
},
|
|
226
|
+
"Property::SalesNumber": {
|
|
227
|
+
defaultAggregate: {},
|
|
228
|
+
relativePath: "SalesNumber"
|
|
229
|
+
},
|
|
230
|
+
"Property::SalesQuantity": {
|
|
231
|
+
defaultAggregate: {},
|
|
232
|
+
"relativePath": "SalesQuantity"
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
var aggregates = visualization.aggregates || {};
|
|
236
|
+
expect(Object.keys(aggregates).length).toEqual(Object.keys(expectedAggregates).length); //, "Correct number of custom aggregates");
|
|
237
|
+
|
|
238
|
+
Object.keys(aggregates).forEach(function (aggregateKey) {
|
|
239
|
+
expect(aggregates[aggregateKey]).toEqual(expectedAggregates[aggregateKey]); //"Check aggregate " + aggregateKey + " and context-defining properties"
|
|
240
|
+
}); // Check initial aggregates/groups
|
|
241
|
+
|
|
242
|
+
expect(visualization.annotation.groupConditions).toEqual(undefined); // , "No visual groupings by default");
|
|
243
|
+
|
|
244
|
+
expect(visualization.annotation.aggregateConditions).toEqual(undefined); // , "No aggregates by default");
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe("Table Converter Unit Tests with Analytics - Personalization settings:", function () {
|
|
248
|
+
beforeEach(function () {
|
|
249
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata.xml")).then(function (oMetaModel) {
|
|
250
|
+
metaModel = oMetaModel;
|
|
251
|
+
return convertTypes(oMetaModel);
|
|
252
|
+
}).then(function (_converterOutput) {
|
|
253
|
+
converterOutput = _converterOutput;
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
var aP13NTestData = [{
|
|
257
|
+
"desc": "default settings",
|
|
258
|
+
"options": {
|
|
259
|
+
"references": [{
|
|
260
|
+
"type": "JIRA",
|
|
261
|
+
"ID": "FIORITECHP1-19161"
|
|
262
|
+
}]
|
|
263
|
+
},
|
|
264
|
+
"personalization": undefined,
|
|
265
|
+
"groupEnabled": true,
|
|
266
|
+
"aggregateEnabled": true
|
|
267
|
+
}, {
|
|
268
|
+
"desc": "all settings",
|
|
269
|
+
"options": {
|
|
270
|
+
"references": [{
|
|
271
|
+
"type": "JIRA",
|
|
272
|
+
"ID": "FIORITECHP1-19161"
|
|
273
|
+
}]
|
|
274
|
+
},
|
|
275
|
+
"personalization": true,
|
|
276
|
+
"groupEnabled": true,
|
|
277
|
+
"aggregateEnabled": true
|
|
278
|
+
}, {
|
|
279
|
+
"desc": "group only",
|
|
280
|
+
"options": {
|
|
281
|
+
"references": [{
|
|
282
|
+
"type": "JIRA",
|
|
283
|
+
"ID": "FIORITECHP1-19161"
|
|
284
|
+
}]
|
|
285
|
+
},
|
|
286
|
+
"personalization": {
|
|
287
|
+
"group": true
|
|
288
|
+
},
|
|
289
|
+
"groupEnabled": true,
|
|
290
|
+
"aggregateEnabled": false
|
|
291
|
+
}, {
|
|
292
|
+
"desc": "aggregate only",
|
|
293
|
+
"options": {
|
|
294
|
+
"references": [{
|
|
295
|
+
"type": "JIRA",
|
|
296
|
+
"ID": "FIORITECHP1-19161"
|
|
297
|
+
}]
|
|
298
|
+
},
|
|
299
|
+
"personalization": {
|
|
300
|
+
"aggregate": true
|
|
301
|
+
},
|
|
302
|
+
"groupEnabled": false,
|
|
303
|
+
"aggregateEnabled": true
|
|
304
|
+
}, {
|
|
305
|
+
"desc": "group + aggregate",
|
|
306
|
+
"options": {
|
|
307
|
+
"references": [{
|
|
308
|
+
"type": "JIRA",
|
|
309
|
+
"ID": "FIORITECHP1-19161"
|
|
310
|
+
}]
|
|
311
|
+
},
|
|
312
|
+
"personalization": {
|
|
313
|
+
"group": true,
|
|
314
|
+
"aggregate": true
|
|
315
|
+
},
|
|
316
|
+
"groupEnabled": true,
|
|
317
|
+
"aggregateEnabled": true
|
|
318
|
+
}, {
|
|
319
|
+
"desc": "no group nor aggregate",
|
|
320
|
+
"options": {
|
|
321
|
+
"references": [{
|
|
322
|
+
"type": "JIRA",
|
|
323
|
+
"ID": "FIORITECHP1-19161"
|
|
324
|
+
}]
|
|
325
|
+
},
|
|
326
|
+
"personalization": {
|
|
327
|
+
sort: true
|
|
328
|
+
},
|
|
329
|
+
"groupEnabled": false,
|
|
330
|
+
"aggregateEnabled": false
|
|
331
|
+
}];
|
|
332
|
+
aP13NTestData.forEach(function (testData) {
|
|
333
|
+
test(testData.desc, testData.options, function () {
|
|
334
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
335
|
+
manifestSettings["controlConfiguration"]["@com.sap.vocabularies.UI.v1.LineItem"]["tableSettings"]["personalization"] = testData.personalization;
|
|
336
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/BusinessPartners")));
|
|
337
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
338
|
+
var lineItem = resolvedTarget.annotation;
|
|
339
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
340
|
+
|
|
341
|
+
if (testData.groupEnabled) {
|
|
342
|
+
var _visualization$annota;
|
|
343
|
+
|
|
344
|
+
expect((_visualization$annota = visualization.annotation.p13nMode) === null || _visualization$annota === void 0 ? void 0 : _visualization$annota.indexOf("Group")).not.toEqual(-1); // , "Group personalization is enabled");
|
|
345
|
+
} else {
|
|
346
|
+
var _visualization$annota2;
|
|
347
|
+
|
|
348
|
+
expect((_visualization$annota2 = visualization.annotation.p13nMode) === null || _visualization$annota2 === void 0 ? void 0 : _visualization$annota2.indexOf("Group")).toEqual(-1); // , "Group personalization is disabled");
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if (testData.aggregateEnabled) {
|
|
352
|
+
var _visualization$annota3;
|
|
353
|
+
|
|
354
|
+
expect((_visualization$annota3 = visualization.annotation.p13nMode) === null || _visualization$annota3 === void 0 ? void 0 : _visualization$annota3.indexOf("Aggregate")).not.toEqual(-1); // , "Aggregate personalization is enabled");
|
|
355
|
+
} else {
|
|
356
|
+
var _visualization$annota4;
|
|
357
|
+
|
|
358
|
+
expect((_visualization$annota4 = visualization.annotation.p13nMode) === null || _visualization$annota4 === void 0 ? void 0 : _visualization$annota4.indexOf("Aggregate")).toEqual(-1); // , "Aggregate personalization is disabled");
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
describe("Table Converter Unit Tests with Presentation Variant", function () {
|
|
364
|
+
test("- Check default aggregates and visual groupings", function () {
|
|
365
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata_withPV.xml")).then(function (oMetaModel) {
|
|
366
|
+
metaModel = oMetaModel;
|
|
367
|
+
return convertTypes(oMetaModel);
|
|
368
|
+
}).then(function (_converterOutput) {
|
|
369
|
+
converterOutput = _converterOutput;
|
|
370
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
371
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/BusinessPartners")));
|
|
372
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.PresentationVariant");
|
|
373
|
+
var presentationVariant = resolvedTarget.annotation;
|
|
374
|
+
var lineItem = presentationVariant.Visualizations[0].$target;
|
|
375
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext, presentationVariant); // Check initial aggregates/groups
|
|
376
|
+
|
|
377
|
+
var expectedGroups = {
|
|
378
|
+
groupLevels: [{
|
|
379
|
+
name: "Property::Segment"
|
|
380
|
+
}, {
|
|
381
|
+
name: "Industry"
|
|
382
|
+
}]
|
|
383
|
+
};
|
|
384
|
+
var expectedAggregates = {
|
|
385
|
+
"Property::SalesAmount": {},
|
|
386
|
+
"Property::SalesAmountLocalCurrency": {}
|
|
387
|
+
};
|
|
388
|
+
expect(JSON.parse(visualization.annotation.groupConditions || "")).toEqual(expectedGroups); //"Check initial visual groupings"
|
|
389
|
+
|
|
390
|
+
expect(JSON.parse(visualization.annotation.aggregateConditions || "")).toEqual(expectedAggregates); // "Check initial aggregates"
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
describe("AggregationHelper Unit Tests for groupable properties", function () {
|
|
395
|
+
test("AggregationHelper Unit Tests for groupable properties - Different options to flag groupable props", {
|
|
396
|
+
"references": [{
|
|
397
|
+
"type": "JIRA",
|
|
398
|
+
"ID": "FIORITECHP1-19935"
|
|
399
|
+
}]
|
|
400
|
+
}, function () {
|
|
401
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata_groupable_options.xml")).then(function (oMetaModel) {
|
|
402
|
+
metaModel = oMetaModel;
|
|
403
|
+
return convertTypes(oMetaModel);
|
|
404
|
+
}).then(function (_converterOutput) {
|
|
405
|
+
converterOutput = _converterOutput;
|
|
406
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
407
|
+
var testData = [{
|
|
408
|
+
entitySet: "BusinessPartners",
|
|
409
|
+
expectedGroupable: {
|
|
410
|
+
"Id": false,
|
|
411
|
+
"Name": true,
|
|
412
|
+
"Country": true,
|
|
413
|
+
"Region": true,
|
|
414
|
+
"Segment": true,
|
|
415
|
+
"Industry": true
|
|
416
|
+
}
|
|
417
|
+
}, {
|
|
418
|
+
entitySet: "Customers"
|
|
419
|
+
}, {
|
|
420
|
+
entitySet: "Industries"
|
|
421
|
+
}]; //testData.forEach(oData => {
|
|
422
|
+
|
|
423
|
+
var _loop = function (I) {
|
|
424
|
+
var oData = testData[I];
|
|
425
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/" + oData.entitySet)));
|
|
426
|
+
var entityType = converterContext.getEntityType();
|
|
427
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
428
|
+
entityType.entityProperties.forEach(function (property) {
|
|
429
|
+
expect(aggregationHelper.isPropertyGroupable(property)).toEqual(oData.expectedGroupable === undefined || oData.expectedGroupable[property.name]); //, oData.entitySet + ": check if property " + property.name + " is groupable");
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
|
|
433
|
+
for (var I = 0; I < testData.length; I++) {
|
|
434
|
+
_loop(I);
|
|
435
|
+
}
|
|
436
|
+
});
|
|
437
|
+
});
|
|
438
|
+
});
|
|
439
|
+
describe("Table Converter Unit Tests for groupheader format", function () {
|
|
440
|
+
test("- Check format info", function () {
|
|
441
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata_textArrangement.xml")).then(function (oMetaModel) {
|
|
442
|
+
metaModel = oMetaModel;
|
|
443
|
+
return convertTypes(oMetaModel);
|
|
444
|
+
}).then(function (_converterOutput) {
|
|
445
|
+
converterOutput = _converterOutput;
|
|
446
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
447
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/BusinessPartners")));
|
|
448
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
449
|
+
var lineItem = resolvedTarget.annotation;
|
|
450
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
451
|
+
var aColumns = visualization.columns;
|
|
452
|
+
var expectedFormatInfo = [{
|
|
453
|
+
path: "Country_Code1",
|
|
454
|
+
mode: "ValueDescription",
|
|
455
|
+
description: "Format for TextLast"
|
|
456
|
+
}, {
|
|
457
|
+
path: "Country_Code2",
|
|
458
|
+
mode: "DescriptionValue",
|
|
459
|
+
description: "Format for TextFirst"
|
|
460
|
+
}, {
|
|
461
|
+
path: "Country_Code3",
|
|
462
|
+
mode: "Description",
|
|
463
|
+
description: "Format for TextOnly"
|
|
464
|
+
}, {
|
|
465
|
+
path: "Country_Code4",
|
|
466
|
+
mode: undefined,
|
|
467
|
+
description: "Format for TextSeparate"
|
|
468
|
+
}, {
|
|
469
|
+
path: "Country_Code5",
|
|
470
|
+
mode: "DescriptionValue",
|
|
471
|
+
description: "Format for unspecified text arrangement"
|
|
472
|
+
}, {
|
|
473
|
+
path: "Country_Code6",
|
|
474
|
+
mode: undefined,
|
|
475
|
+
description: "Format when Common.Text isn't a path"
|
|
476
|
+
}];
|
|
477
|
+
expectedFormatInfo.forEach(function (info) {
|
|
478
|
+
var oColumn = aColumns.find(function (oCol) {
|
|
479
|
+
return !oCol.propertyInfos && oCol.relativePath === info.path;
|
|
480
|
+
});
|
|
481
|
+
expect(oColumn).not.toEqual(undefined); // , "Found related column for " + info.path);
|
|
482
|
+
|
|
483
|
+
if (info.mode) {
|
|
484
|
+
var _oColumn$textArrangem, _oColumn$textArrangem2;
|
|
485
|
+
|
|
486
|
+
expect(oColumn === null || oColumn === void 0 ? void 0 : oColumn.textArrangement).not.toEqual(undefined); // , "Column for " + info.path + " has a text arrangement info");
|
|
487
|
+
|
|
488
|
+
expect(oColumn === null || oColumn === void 0 ? void 0 : (_oColumn$textArrangem = oColumn.textArrangement) === null || _oColumn$textArrangem === void 0 ? void 0 : _oColumn$textArrangem.mode).toEqual(info.mode); // , "Check mode - " + info.description + " = " + info.mode);
|
|
489
|
+
|
|
490
|
+
expect(oColumn === null || oColumn === void 0 ? void 0 : (_oColumn$textArrangem2 = oColumn.textArrangement) === null || _oColumn$textArrangem2 === void 0 ? void 0 : _oColumn$textArrangem2.textProperty).toEqual("CountryDesc"); // , "Check text property");
|
|
491
|
+
} else {
|
|
492
|
+
expect(oColumn === null || oColumn === void 0 ? void 0 : oColumn.textArrangement).toEqual(undefined); // , "Check " + info.path + " has no text arrangement info (" + info.description + ")");
|
|
493
|
+
}
|
|
494
|
+
});
|
|
495
|
+
});
|
|
496
|
+
});
|
|
497
|
+
});
|
|
498
|
+
describe("Table Converter Unit Tests with Analytics service", function () {
|
|
499
|
+
beforeEach(function () {
|
|
500
|
+
return getMetaModel(path.join(__dirname, "../../data/OKRA/metadata.xml")).then(function (oMetaModel) {
|
|
501
|
+
metaModel = oMetaModel;
|
|
502
|
+
return convertTypes(oMetaModel);
|
|
503
|
+
}).then(function (_converterOutput) {
|
|
504
|
+
converterOutput = _converterOutput;
|
|
505
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/OKRA/manifest.json", "BusinessPartnersList");
|
|
506
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/BusinessPartners")));
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
test("- Column properties", {
|
|
510
|
+
"references": [{
|
|
511
|
+
"type": "JIRA",
|
|
512
|
+
"ID": "FIORITECHP1-19862"
|
|
513
|
+
}]
|
|
514
|
+
}, function () {
|
|
515
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
516
|
+
var lineItem = resolvedTarget.annotation;
|
|
517
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
518
|
+
var aColumns = visualization.columns;
|
|
519
|
+
var actualResult = aColumns.filter(function (column) {
|
|
520
|
+
return column.additionalPropertyInfos;
|
|
521
|
+
}).map(function (col) {
|
|
522
|
+
return {
|
|
523
|
+
"key": col.key,
|
|
524
|
+
"additionalPropertyInfos": col.additionalPropertyInfos
|
|
525
|
+
};
|
|
526
|
+
});
|
|
527
|
+
var expectedResult = [{
|
|
528
|
+
"key": "DataField::Country",
|
|
529
|
+
"additionalPropertyInfos": ["CountryVisibility"]
|
|
530
|
+
}, {
|
|
531
|
+
"key": "DataField::Country_Code",
|
|
532
|
+
"additionalPropertyInfos": ["CountryVisibility"]
|
|
533
|
+
}, {
|
|
534
|
+
"key": "DataFieldForAnnotation::FieldGroup",
|
|
535
|
+
"additionalPropertyInfos": ["CountryVisibility"]
|
|
536
|
+
}, {
|
|
537
|
+
"key": "DataField::SalesAmount",
|
|
538
|
+
"additionalPropertyInfos": ["_Customer/SetSalesAmountHidden"]
|
|
539
|
+
}];
|
|
540
|
+
expect(actualResult).toEqual(expectedResult); //, "Table columns definition does not match the expectation");
|
|
541
|
+
});
|
|
542
|
+
});
|
|
543
|
+
describe("Table Converter Unit Tests with non-Analytics service", function () {
|
|
544
|
+
beforeEach(function () {
|
|
545
|
+
return getMetaModel(path.join(__dirname, "../../data/salesOrderMetadata_qunit.xml")).then(function (oMetaModel) {
|
|
546
|
+
metaModel = oMetaModel;
|
|
547
|
+
return convertTypes(oMetaModel);
|
|
548
|
+
}).then(function (_converterOutput) {
|
|
549
|
+
converterOutput = _converterOutput;
|
|
550
|
+
manifestSettings = getPageManifest("test/sap/fe/core/jest/data/manifest.json", "SalesOrderManageList");
|
|
551
|
+
converterContext = new ConverterContext(converterOutput, manifestSettings, mockDiagnostics, merge, getInvolvedDataModelObjects(metaModel.createBindingContext("/SalesOrderManage")));
|
|
552
|
+
});
|
|
553
|
+
});
|
|
554
|
+
test("Table Converter Unit Tests with non-Analytics - no groupable properties from AggregationHelper", function () {
|
|
555
|
+
var entityType = converterContext.getEntityType();
|
|
556
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
557
|
+
entityType.entityProperties.forEach(function (property) {
|
|
558
|
+
expect(aggregationHelper.isPropertyGroupable(property)).toEqual(undefined); // , "isPropertyGroupable shall be undefined for property " + property.name);
|
|
559
|
+
});
|
|
560
|
+
});
|
|
561
|
+
test("Table Converter Unit Tests with non-Analytics - no custom aggregations from AggregationHelper", function () {
|
|
562
|
+
var entityType = converterContext.getEntityType();
|
|
563
|
+
var aggregationHelper = new AggregationHelper(entityType, converterContext);
|
|
564
|
+
var aggregates = aggregationHelper.getCustomAggregateDefinitions();
|
|
565
|
+
expect(Object.keys(aggregates).length).toEqual(0); // , "No custom aggregates are defined");
|
|
566
|
+
});
|
|
567
|
+
test("Table Converter Unit Tests with non-Analytics - Column properties", function () {
|
|
568
|
+
var resolvedTarget = converterContext.getEntityTypeAnnotation("@com.sap.vocabularies.UI.v1.LineItem");
|
|
569
|
+
var lineItem = resolvedTarget.annotation;
|
|
570
|
+
var visualization = createTableVisualization(lineItem, "@com.sap.vocabularies.UI.v1.LineItem", converterContext);
|
|
571
|
+
var aColumns = visualization.columns; // Check on key properties
|
|
572
|
+
|
|
573
|
+
var aKeyProperties = aColumns.filter(function (column) {
|
|
574
|
+
return column.isKey;
|
|
575
|
+
}).map(function (column) {
|
|
576
|
+
return column.relativePath;
|
|
577
|
+
});
|
|
578
|
+
expect(aKeyProperties).toEqual(["IsActiveEntity", "ID"]); // "Check on key properties");
|
|
579
|
+
// Check on groupable properties
|
|
580
|
+
|
|
581
|
+
var aGroupableProperties = aColumns.filter(function (column) {
|
|
582
|
+
return column.isGroupable;
|
|
583
|
+
}).map(function (column) {
|
|
584
|
+
return column.relativePath;
|
|
585
|
+
});
|
|
586
|
+
expect(aGroupableProperties.length).toEqual(0); // , "No groupable properties");
|
|
587
|
+
// Check on units/currencies
|
|
588
|
+
|
|
589
|
+
var aColumnsWithUnits = aColumns.filter(function (column) {
|
|
590
|
+
return column.unit !== undefined;
|
|
591
|
+
}).map(function (column) {
|
|
592
|
+
return {
|
|
593
|
+
path: column.relativePath,
|
|
594
|
+
unit: column.unit
|
|
595
|
+
};
|
|
596
|
+
});
|
|
597
|
+
var aExpectColumnsWithUnits = [{
|
|
598
|
+
path: "TotalNetAmount",
|
|
599
|
+
unit: "TransactionCurrency"
|
|
600
|
+
}];
|
|
601
|
+
expect(aColumnsWithUnits.length).toEqual(aExpectColumnsWithUnits.length); // , "Check number of properties with units");
|
|
602
|
+
|
|
603
|
+
aColumnsWithUnits.forEach(function (oColumn) {
|
|
604
|
+
var oExpected = aExpectColumnsWithUnits.find(function (oExpectedColumn) {
|
|
605
|
+
return oExpectedColumn.path === oColumn.path;
|
|
606
|
+
});
|
|
607
|
+
expect(oExpected).not.toEqual(undefined); // );
|
|
608
|
+
|
|
609
|
+
expect(oColumn.unit).toEqual(oExpected === null || oExpected === void 0 ? void 0 : oExpected.unit); // , "Checking " + oColumn.path + " has proper unit");
|
|
610
|
+
}); // Check on aggregates
|
|
611
|
+
|
|
612
|
+
expect(visualization.aggregates).toEqual(undefined); // , "No aggregates are defined");
|
|
613
|
+
});
|
|
614
|
+
});
|
|
615
|
+
}, false);
|
|
616
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlRhYmxlQW5hbHl0aWNzLnNwZWMudHMiXSwibmFtZXMiOlsiY29udmVydGVyT3V0cHV0IiwibWV0YU1vZGVsIiwibWFuaWZlc3RTZXR0aW5ncyIsImNvbnZlcnRlckNvbnRleHQiLCJtb2NrU2hlbGxTZXJ2aWNlIiwiZ2V0Q29udGVudERlbnNpdHkiLCJtb2NrRGlhZ25vc3RpY3MiLCJhZGRJc3N1ZSIsImlzc3VlQ2F0ZWdvcnkiLCJpc3N1ZVNldmVyaXR5IiwiZGV0YWlscyIsImNvbnNvbGUiLCJsb2ciLCJnZXRJc3N1ZXMiLCJjaGVja0lmSXNzdWVFeGlzdHMiLCJpc3N1ZUNhdGVnb3J5VHlwZSIsImlzc3VlU3ViQ2F0ZWdvcnkiLCJkZXNjcmliZSIsImJlZm9yZUVhY2giLCJnZXRNZXRhTW9kZWwiLCJwYXRoIiwiam9pbiIsIl9fZGlybmFtZSIsInRoZW4iLCJvTWV0YU1vZGVsIiwiY29udmVydFR5cGVzIiwiX2NvbnZlcnRlck91dHB1dCIsImdldFBhZ2VNYW5pZmVzdCIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwidGVzdCIsImVudGl0eVR5cGUiLCJnZXRFbnRpdHlUeXBlIiwiYWdncmVnYXRpb25IZWxwZXIiLCJBZ2dyZWdhdGlvbkhlbHBlciIsImV4cGVjdGVkR3JvdXBhYmxlIiwiZW50aXR5UHJvcGVydGllcyIsImZvckVhY2giLCJwcm9wZXJ0eSIsImV4cGVjdCIsImlzUHJvcGVydHlHcm91cGFibGUiLCJ0b0VxdWFsIiwibmFtZSIsImV4cGVjdGVkQWdncmVnYXRhYmxlIiwiaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZSIsImV4cGVjdGVkQWdncmVnYXRlcyIsImFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnMiLCJnZXRDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9ucyIsImFnZ3JlZ2F0ZXMiLCJhbm5vdGF0aW9uIiwib0FnZ3JlZ2F0ZWRQcm9wZXJ0eSIsIl9lbnRpdHlUeXBlIiwiZmluZCIsIm9Qcm9wZXJ0eSIsInF1YWxpZmllciIsImFDb250ZXh0RGVmaW5pbmdQcm9wZXJ0aWVzIiwiYW5ub3RhdGlvbnMiLCJBZ2dyZWdhdGlvbiIsIkNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMiLCJtYXAiLCJvQ3R4RGVmUHJvcGVydHkiLCJ2YWx1ZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJhZ2dyZWdhdGVLZXkiLCJyZXNvbHZlZFRhcmdldCIsImdldEVudGl0eVR5cGVBbm5vdGF0aW9uIiwibGluZUl0ZW0iLCJ2aXN1YWxpemF0aW9uIiwiY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uIiwiYUNvbHVtbnMiLCJjb2x1bW5zIiwiYUtleVByb3BlcnRpZXMiLCJmaWx0ZXIiLCJjb2x1bW4iLCJpc0tleSIsInJlbGF0aXZlUGF0aCIsImFHcm91cGFibGVQcm9wZXJ0aWVzIiwiaXNHcm91cGFibGUiLCJwcm9wZXJ0eUluZm9zIiwiYUV4cGVjdGVkR3JvdXBhYmxlUHJvcGVydGllcyIsInNQcm9wTmFtZSIsImluZGV4T2YiLCJub3QiLCJhQ29sdW1uc1dpdGhVbml0cyIsInVuaXQiLCJ1bmRlZmluZWQiLCJhRXhwZWN0Q29sdW1uc1dpdGhVbml0cyIsIm9Db2x1bW4iLCJvRXhwZWN0ZWQiLCJvRXhwZWN0ZWRDb2x1bW4iLCJkZWZhdWx0QWdncmVnYXRlIiwiY29udGV4dERlZmluaW5nUHJvcGVydGllcyIsImdyb3VwQ29uZGl0aW9ucyIsImFnZ3JlZ2F0ZUNvbmRpdGlvbnMiLCJhUDEzTlRlc3REYXRhIiwic29ydCIsInRlc3REYXRhIiwiZGVzYyIsIm9wdGlvbnMiLCJwZXJzb25hbGl6YXRpb24iLCJncm91cEVuYWJsZWQiLCJwMTNuTW9kZSIsImFnZ3JlZ2F0ZUVuYWJsZWQiLCJwcmVzZW50YXRpb25WYXJpYW50IiwiVmlzdWFsaXphdGlvbnMiLCIkdGFyZ2V0IiwiZXhwZWN0ZWRHcm91cHMiLCJncm91cExldmVscyIsIkpTT04iLCJwYXJzZSIsImVudGl0eVNldCIsIkkiLCJvRGF0YSIsImV4cGVjdGVkRm9ybWF0SW5mbyIsIm1vZGUiLCJkZXNjcmlwdGlvbiIsImluZm8iLCJvQ29sIiwidGV4dEFycmFuZ2VtZW50IiwidGV4dFByb3BlcnR5IiwiYWN0dWFsUmVzdWx0IiwiYWRkaXRpb25hbFByb3BlcnR5SW5mb3MiLCJjb2wiLCJrZXkiLCJleHBlY3RlZFJlc3VsdCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7QUFhQSxNQUFJQSxlQUFKO0FBQ0EsTUFBSUMsU0FBSjtBQUNBLE1BQUlDLGdCQUFKO0FBQ0EsTUFBSUMsZ0JBQUo7QUFFQSxNQUFNQyxnQkFBcUIsR0FBRztBQUM3QkMsSUFBQUEsaUJBRDZCLGNBQ1Q7QUFDbkIsYUFBTyxxQkFBUDtBQUNBO0FBSDRCLEdBQTlCO0FBTUEsTUFBTUMsZUFBNkIsR0FBRztBQUNyQ0MsSUFBQUEsUUFEcUMsWUFDNUJDLGFBRDRCLEVBQ0VDLGFBREYsRUFDZ0NDLE9BRGhDLEVBQ3VEO0FBQzNGQyxNQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsT0FBWjtBQUNBLEtBSG9DO0FBSXJDRyxJQUFBQSxTQUpxQyxjQUlsQjtBQUNsQixhQUFPLEVBQVA7QUFDQSxLQU5vQztBQU9yQ0MsSUFBQUEsa0JBUHFDLFlBUXBDTixhQVJvQyxFQVNwQ0MsYUFUb0MsRUFVcENDLE9BVm9DLEVBV3BDSyxpQkFYb0MsRUFZcENDLGdCQVpvQyxFQWExQjtBQUNWLGFBQU8sS0FBUDtBQUNBO0FBZm9DLEdBQXRDO0FBa0JBQyxFQUFBQSxRQUFRLENBQUMsMkNBQUQsRUFBOEMsWUFBVztBQUNoRUMsSUFBQUEsVUFBVSxDQUFDLFlBQU07QUFDaEIsYUFBT0MsWUFBWSxDQUFDQyxJQUFJLENBQUNDLElBQUwsQ0FBVUMsU0FBVixFQUFxQiw4QkFBckIsQ0FBRCxDQUFaLENBQ0xDLElBREssQ0FDQSxVQUFBQyxVQUFVLEVBQUk7QUFDbkJ2QixRQUFBQSxTQUFTLEdBQUd1QixVQUFaO0FBQ0EsZUFBT0MsWUFBWSxDQUFDRCxV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QUFDcEMsWUFBTUMsU0FBUyxHQUFHRix1QkFBdUIsQ0FBQ3BDLElBQXhCLENBQTZCLFVBQUF1QyxlQUFlLEVBQUk7QUFDakUsaUJBQU9BLGVBQWUsQ0FBQ3pFLElBQWhCLEtBQXlCdUUsT0FBTyxDQUFDdkUsSUFBeEM7QUFDQSxTQUZpQixDQUFsQjtBQUdBcUIsUUFBQUEsTUFBTSxDQUFDbUQsU0FBRCxDQUFOLENBQWtCTixHQUFsQixDQUFzQjNDLE9BQXRCLENBQThCOEMsU0FBOUIsRUFKb0MsQ0FJTTs7QUFDMUNoRCxRQUFBQSxNQUFNLENBQUNrRCxPQUFPLENBQUNILElBQVQsQ0FBTixDQUFxQjdDLE9BQXJCLENBQTZCaUQsU0FBN0IsYUFBNkJBLFNBQTdCLHVCQUE2QkEsU0FBUyxDQUFFSixJQUF4QyxFQUxvQyxDQUtXO0FBQy9DLE9BTkQsRUF0QitFLENBOEIvRTs7QUFDQS9DLE1BQUFBLE1BQU0sQ0FBQzhCLGFBQWEsQ0FBQ3JCLFVBQWYsQ0FBTixDQUFpQ1AsT0FBakMsQ0FBeUM4QyxTQUF6QyxFQS9CK0UsQ0ErQjFCO0FBQ3JELEtBaENHLENBQUo7QUFpQ0EsR0F0RU8sQ0FBUiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGluZUl0ZW0sIFByZXNlbnRhdGlvblZhcmlhbnRUeXBlVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbnZlcnRlck91dHB1dCwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB7IGNvbnZlcnRUeXBlcywgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRQYWdlTWFuaWZlc3QgfSBmcm9tIFwiLi4vLi4vZGF0YS9EYXRhQ29udmVydGVyXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCB7IElEaWFnbm9zdGljcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB7IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbiwgQW5ub3RhdGlvblRhYmxlQ29sdW1uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgeyBBZ2dyZWdhdGlvbkhlbHBlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQWdncmVnYXRpb25cIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2V0TWV0YU1vZGVsIH0gZnJvbSBcInNhcC9mZS90ZXN0L0plc3RUZW1wbGF0aW5nSGVscGVyXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5sZXQgY29udmVydGVyT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQ7XG5sZXQgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbDtcbmxldCBtYW5pZmVzdFNldHRpbmdzOiBhbnk7XG5sZXQgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dDtcblxuY29uc3QgbW9ja1NoZWxsU2VydmljZTogYW55ID0ge1xuXHRnZXRDb250ZW50RGVuc2l0eSgpIHtcblx0XHRyZXR1cm4gXCJub3QtYS1jb3JyZWN0LXZhbHVlXCI7XG5cdH1cbn07XG5cbmNvbnN0IG1vY2tEaWFnbm9zdGljczogSURpYWdub3N0aWNzID0ge1xuXHRhZGRJc3N1ZShpc3N1ZUNhdGVnb3J5OiBJc3N1ZUNhdGVnb3J5LCBpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LCBkZXRhaWxzOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRjb25zb2xlLmxvZyhkZXRhaWxzKTtcblx0fSxcblx0Z2V0SXNzdWVzKCk6IGFueVtdIHtcblx0XHRyZXR1cm4gW107XG5cdH0sXG5cdGNoZWNrSWZJc3N1ZUV4aXN0cyhcblx0XHRpc3N1ZUNhdGVnb3J5OiBJc3N1ZUNhdGVnb3J5LFxuXHRcdGlzc3VlU2V2ZXJpdHk6IElzc3VlU2V2ZXJpdHksXG5cdFx0ZGV0YWlsczogc3RyaW5nLFxuXHRcdGlzc3VlQ2F0ZWdvcnlUeXBlPzogYW55LFxuXHRcdGlzc3VlU3ViQ2F0ZWdvcnk/OiBzdHJpbmdcblx0KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xuXG5kZXNjcmliZShcIlRhYmxlIENvbnZlcnRlciBVbml0IFRlc3RzIHdpdGggQW5hbHl0aWNzXCIsIGZ1bmN0aW9uKCkge1xuXHRiZWZvcmVFYWNoKCgpID0+IHtcblx0XHRyZXR1cm4gZ2V0TWV0YU1vZGVsKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vZGF0YS9PS1JBL21ldGFkYXRhLnhtbFwiKSlcblx0XHRcdC50aGVuKG9NZXRhTW9kZWwgPT4ge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHRcdFx0XHRyZXR1cm4gY29udmVydFR5cGVzKG9NZXRhTW9kZWwpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChfY29udmVydGVyT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQpID0+IHtcblx0XHRcdFx0Y29udmVydGVyT3V0cHV0ID0gX2NvbnZlcnRlck91dHB1dDtcblx0XHRcdFx0bWFuaWZlc3RTZXR0aW5ncyA9IGdldFBhZ2VNYW5pZmVzdChcInRlc3Qvc2FwL2ZlL2NvcmUvamVzdC9kYXRhL09LUkEvbWFuaWZlc3QuanNvblwiLCBcIkJ1c2luZXNzUGFydG5lcnNMaXN0XCIpO1xuXHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0ID0gbmV3IENvbnZlcnRlckNvbnRleHQoXG5cdFx0XHRcdFx0Y29udmVydGVyT3V0cHV0LFxuXHRcdFx0XHRcdG1hbmlmZXN0U2V0dGluZ3MsXG5cdFx0XHRcdFx0bW9ja0RpYWdub3N0aWNzLFxuXHRcdFx0XHRcdG1lcmdlLFxuXHRcdFx0XHRcdGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvQnVzaW5lc3NQYXJ0bmVyc1wiKSBhcyBDb250ZXh0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdH0pO1xuXG5cdHRlc3QoXG5cdFx0XCItIGdyb3VwYWJsZSBwcm9wZXJ0aWVzIGZyb20gQWdncmVnYXRpb25IZWxwZXJcIixcblx0XHR7XG5cdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0XHRjb25zdCBleHBlY3RlZEdyb3VwYWJsZTogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7XG5cdFx0XHRcdFwiSWRcIjogZmFsc2UsXG5cdFx0XHRcdFwiTmFtZVwiOiB0cnVlLFxuXHRcdFx0XHRcIkNvdW50cnlcIjogdHJ1ZSxcblx0XHRcdFx0XCJSZWdpb25cIjogdHJ1ZSxcblx0XHRcdFx0XCJTZWdtZW50XCI6IHRydWUsXG5cdFx0XHRcdFwiSW5kdXN0cnlcIjogZmFsc2UsXG5cdFx0XHRcdFwiQWNjb3VudFJlc3BvbnNpYmxlXCI6IHRydWUsXG5cdFx0XHRcdFwiU2FsZXNOdW1iZXJcIjogZmFsc2UsXG5cdFx0XHRcdFwiU2FsZXNBbW91bnRcIjogZmFsc2UsXG5cdFx0XHRcdFwiU2FsZXNBbW91bnRMb2NhbEN1cnJlbmN5XCI6IGZhbHNlLFxuXHRcdFx0XHRcIkFtb3VudFBlclNhbGVcIjogZmFsc2UsXG5cdFx0XHRcdFwiQ3VycmVuY3lcIjogdHJ1ZSxcblx0XHRcdFx0XCJMb2NhbEN1cnJlbmN5XCI6IHRydWUsXG5cdFx0XHRcdFwiU2FsZXNRdWFudGl0eVwiOiBmYWxzZSxcblx0XHRcdFx0XCJRdWFudGl0eVVuaXRcIjogdHJ1ZSxcblx0XHRcdFx0XCJteU1lc3NhZ2VzXCI6IGZhbHNlLFxuXHRcdFx0XHRcIkNvdW50cnlWaXNpYmlsaXR5XCI6IGZhbHNlLFxuXHRcdFx0XHRcIkNvdW50cnlfQ29kZVwiOiBmYWxzZSxcblx0XHRcdFx0XCJSZWZlcmVuY2VkQ3VzdG9tZXJJZFwiOiBmYWxzZVxuXHRcdFx0fTtcblxuXHRcdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRleHBlY3QoYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUdyb3VwYWJsZShwcm9wZXJ0eSkpLnRvRXF1YWwoZXhwZWN0ZWRHcm91cGFibGVbcHJvcGVydHkubmFtZV0pOyAvL1wiY2hlY2sgaWYgcHJvcGVydHkgXCIgKyBwcm9wZXJ0eS5uYW1lICsgXCIgaXMgZ3JvdXBhYmxlXCJcblx0XHRcdH0pO1xuXHRcdH1cblx0KTtcblxuXHR0ZXN0KFxuXHRcdFwiLSBhZ2dyZWdhdGFibGUgcHJvcGVydGllcyBmcm9tIEFnZ3JlZ2F0aW9uSGVscGVyXCIsXG5cdFx0e1xuXHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiRklPUklURUNIUDEtMjEyNzBcIlxuXHRcdFx0XHR9XG5cdFx0XHRdXG5cdFx0fSxcblx0XHQoKSA9PiB7XG5cdFx0XHRjb25zdCBlbnRpdHlUeXBlID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCk7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihlbnRpdHlUeXBlLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRcdFx0Y29uc3QgZXhwZWN0ZWRBZ2dyZWdhdGFibGU6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge1xuXHRcdFx0XHRcIklkXCI6IGZhbHNlLFxuXHRcdFx0XHRcIk5hbWVcIjogZmFsc2UsXG5cdFx0XHRcdFwiQ291bnRyeVwiOiBmYWxzZSxcblx0XHRcdFx0XCJSZWdpb25cIjogZmFsc2UsXG5cdFx0XHRcdFwiU2VnbWVudFwiOiBmYWxzZSxcblx0XHRcdFx0XCJJbmR1c3RyeVwiOiBmYWxzZSxcblx0XHRcdFx0XCJBY2NvdW50UmVzcG9uc2libGVcIjogZmFsc2UsXG5cdFx0XHRcdFwiU2FsZXNOdW1iZXJcIjogdHJ1ZSxcblx0XHRcdFx0XCJTYWxlc0Ftb3VudFwiOiBmYWxzZSxcblx0XHRcdFx0XCJTYWxlc0Ftb3VudExvY2FsQ3VycmVuY3lcIjogdHJ1ZSxcblx0XHRcdFx0XCJBbW91bnRQZXJTYWxlXCI6IHRydWUsXG5cdFx0XHRcdFwiQ3VycmVuY3lcIjogdHJ1ZSxcblx0XHRcdFx0XCJMb2NhbEN1cnJlbmN5XCI6IHRydWUsXG5cdFx0XHRcdFwiU2FsZXNRdWFudGl0eVwiOiB0cnVlLFxuXHRcdFx0XHRcIlF1YW50aXR5VW5pdFwiOiBmYWxzZSxcblx0XHRcdFx0XCJteU1lc3NhZ2VzXCI6IGZhbHNlLFxuXHRcdFx0XHRcIkNvdW50cnlWaXNpYmlsaXR5XCI6IGZhbHNlLFxuXHRcdFx0XHRcIkNvdW50cnlfQ29kZVwiOiBmYWxzZSxcblx0XHRcdFx0XCJSZWZlcmVuY2VkQ3VzdG9tZXJJZFwiOiBmYWxzZVxuXHRcdFx0fTtcblxuXHRcdFx0ZW50aXR5VHlwZS5lbnRpdHlQcm9wZXJ0aWVzLmZvckVhY2goKHByb3BlcnR5OiBQcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRleHBlY3QoYWdncmVnYXRpb25IZWxwZXIuaXNQcm9wZXJ0eUFnZ3JlZ2F0YWJsZShwcm9wZXJ0eSkpLnRvRXF1YWwoZXhwZWN0ZWRBZ2dyZWdhdGFibGVbcHJvcGVydHkubmFtZV0pOyAvL1wiY2hlY2sgaWYgcHJvcGVydHkgXCIgKyBwcm9wZXJ0eS5uYW1lICsgXCIgaXMgYWdncmVnYXRhYmxlXCJcblx0XHRcdH0pO1xuXHRcdH1cblx0KTtcblxuXHR0ZXN0KFxuXHRcdFwiLSBjdXN0b20gYWdncmVnYXRpb25zIGZyb20gQWdncmVnYXRpb25IZWxwZXJcIixcblx0XHR7XG5cdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0XHRjb25zdCBleHBlY3RlZEFnZ3JlZ2F0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHtcblx0XHRcdFx0XCJTYWxlc0Ftb3VudExvY2FsQ3VycmVuY3lcIjogW1wiTG9jYWxDdXJyZW5jeVwiXSxcblx0XHRcdFx0XCJBbW91bnRQZXJTYWxlXCI6IFtcIkN1cnJlbmN5XCJdLFxuXHRcdFx0XHRcIlNhbGVzTnVtYmVyXCI6IFtdLFxuXHRcdFx0XHRcIlNhbGVzUXVhbnRpdHlcIjogW10sXG5cdFx0XHRcdFwiQ3VycmVuY3lcIjogW10sXG5cdFx0XHRcdFwiTG9jYWxDdXJyZW5jeVwiOiBbXVxuXHRcdFx0fTtcblxuXHRcdFx0Y29uc3QgYWdncmVnYXRpb25Bbm5vdGF0aW9ucyA9IGFnZ3JlZ2F0aW9uSGVscGVyLmdldEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb25zKCk7XG5cdFx0XHRjb25zdCBhZ2dyZWdhdGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fTtcblx0XHRcdGFnZ3JlZ2F0aW9uQW5ub3RhdGlvbnMuZm9yRWFjaChhbm5vdGF0aW9uID0+IHtcblx0XHRcdFx0Y29uc3Qgb0FnZ3JlZ2F0ZWRQcm9wZXJ0eSA9IGFnZ3JlZ2F0aW9uSGVscGVyLl9lbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZmluZChvUHJvcGVydHkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBvUHJvcGVydHkubmFtZSA9PT0gYW5ub3RhdGlvbi5xdWFsaWZpZXI7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChvQWdncmVnYXRlZFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0Y29uc3QgYUNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMgPSBhbm5vdGF0aW9uLmFubm90YXRpb25zPy5BZ2dyZWdhdGlvbj8uQ29udGV4dERlZmluaW5nUHJvcGVydGllcztcblx0XHRcdFx0XHRhZ2dyZWdhdGVzW29BZ2dyZWdhdGVkUHJvcGVydHkubmFtZV0gPSBhQ29udGV4dERlZmluaW5nUHJvcGVydGllc1xuXHRcdFx0XHRcdFx0PyBhQ29udGV4dERlZmluaW5nUHJvcGVydGllcy5tYXAob0N0eERlZlByb3BlcnR5ID0+IHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gb0N0eERlZlByb3BlcnR5LnZhbHVlO1xuXHRcdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHRcdFx0OiBbXTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRleHBlY3QoT2JqZWN0LmtleXMoYWdncmVnYXRlcykubGVuZ3RoKS50b0VxdWFsKE9iamVjdC5rZXlzKGV4cGVjdGVkQWdncmVnYXRlcykubGVuZ3RoKTsgLy8sIFwiQ29ycmVjdCBudW1iZXIgb2YgY3VzdG9tIGFnZ3JlZ2F0ZXNcIik7XG5cdFx0XHRPYmplY3Qua2V5cyhhZ2dyZWdhdGVzKS5mb3JFYWNoKGFnZ3JlZ2F0ZUtleSA9PiB7XG5cdFx0XHRcdGV4cGVjdChhZ2dyZWdhdGVzW2FnZ3JlZ2F0ZUtleV0pLnRvRXF1YWwoZXhwZWN0ZWRBZ2dyZWdhdGVzW2FnZ3JlZ2F0ZUtleV0pOyAvL1wiQ2hlY2sgYWdncmVnYXRlIFwiICsgYWdncmVnYXRlS2V5ICsgXCIgYW5kIGNvbnRleHQtZGVmaW5pbmcgcHJvcGVydGllc1wiXG5cdFx0XHR9KTtcblx0XHR9XG5cdCk7XG5cblx0dGVzdChcblx0XHRcIi0gQ29sdW1uIHByb3BlcnRpZXNcIixcblx0XHR7XG5cdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiKTtcblx0XHRcdGNvbnN0IGxpbmVJdGVtID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhcyBMaW5lSXRlbTtcblx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb24gPSBjcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24obGluZUl0ZW0sIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0Y29uc3QgYUNvbHVtbnMgPSB2aXN1YWxpemF0aW9uLmNvbHVtbnMgYXMgQW5ub3RhdGlvblRhYmxlQ29sdW1uW107XG5cblx0XHRcdC8vIENoZWNrIG9uIGtleSBwcm9wZXJ0aWVzXG5cdFx0XHRjb25zdCBhS2V5UHJvcGVydGllcyA9IGFDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzS2V5KS5tYXAoY29sdW1uID0+IGNvbHVtbi5yZWxhdGl2ZVBhdGgpO1xuXHRcdFx0ZXhwZWN0KGFLZXlQcm9wZXJ0aWVzKS50b0VxdWFsKFtcIklkXCJdKTsgLy8sIFwiQ2hlY2sgb24ga2V5IHByb3BlcnRpZXNcIik7XG5cblx0XHRcdC8vIENoZWNrIG9uIGdyb3VwYWJsZSBwcm9wZXJ0aWVzXG5cdFx0XHRjb25zdCBhR3JvdXBhYmxlUHJvcGVydGllcyA9IGFDb2x1bW5zXG5cdFx0XHRcdC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc0dyb3VwYWJsZSAmJiAhY29sdW1uLnByb3BlcnR5SW5mb3MpXG5cdFx0XHRcdC5tYXAoY29sdW1uID0+IGNvbHVtbi5yZWxhdGl2ZVBhdGgpO1xuXHRcdFx0Y29uc3QgYUV4cGVjdGVkR3JvdXBhYmxlUHJvcGVydGllcyA9IFtcblx0XHRcdFx0XCJOYW1lXCIsXG5cdFx0XHRcdFwiQ291bnRyeVwiLFxuXHRcdFx0XHRcIlJlZ2lvblwiLFxuXHRcdFx0XHRcIlNlZ21lbnRcIixcblx0XHRcdFx0XCJBY2NvdW50UmVzcG9uc2libGVcIixcblx0XHRcdFx0XCJDdXJyZW5jeVwiLFxuXHRcdFx0XHRcIkxvY2FsQ3VycmVuY3lcIixcblx0XHRcdFx0XCJRdWFudGl0eVVuaXRcIlxuXHRcdFx0XTtcblx0XHRcdGV4cGVjdChhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGgpLnRvRXF1YWwoYUV4cGVjdGVkR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGgpOyAvLyAsIFwiQ2hlY2sgbnVtYmVyIG9mIGdyb3VwYWJsZSBwcm9wZXJ0aWVzXCIpO1xuXHRcdFx0YUdyb3VwYWJsZVByb3BlcnRpZXMuZm9yRWFjaChzUHJvcE5hbWUgPT4ge1xuXHRcdFx0XHRleHBlY3QoYUV4cGVjdGVkR3JvdXBhYmxlUHJvcGVydGllcy5pbmRleE9mKHNQcm9wTmFtZSkpLm5vdC50b0VxdWFsKC0xKTsgLy8gLCBcIkNoZWNraW5nIFwiICsgc1Byb3BOYW1lICsgXCIgaXMgZ3JvdXBhYmxlXCIpO1xuXHRcdFx0fSk7XG5cblx0XHRcdC8vIENoZWNrIG9uIHVuaXRzL2N1cnJlbmNpZXNcblx0XHRcdGNvbnN0IGFDb2x1bW5zV2l0aFVuaXRzID0gYUNvbHVtbnNcblx0XHRcdFx0LmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnVuaXQgIT09IHVuZGVmaW5lZClcblx0XHRcdFx0Lm1hcChjb2x1bW4gPT4ge1xuXHRcdFx0XHRcdHJldHVybiB7IHBhdGg6IGNvbHVtbi5yZWxhdGl2ZVBhdGgsIHVuaXQ6IGNvbHVtbi51bml0IH07XG5cdFx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgYUV4cGVjdENvbHVtbnNXaXRoVW5pdHMgPSBbXG5cdFx0XHRcdHsgcGF0aDogXCJTYWxlc0Ftb3VudFwiLCB1bml0OiBcIlByb3BlcnR5OjpDdXJyZW5jeVwiIH0sXG5cdFx0XHRcdHsgcGF0aDogXCJTYWxlc0Ftb3VudExvY2FsQ3VycmVuY3lcIiwgdW5pdDogXCJMb2NhbEN1cnJlbmN5XCIgfSxcblx0XHRcdFx0eyBwYXRoOiBcIkFtb3VudFBlclNhbGVcIiwgdW5pdDogXCJQcm9wZXJ0eTo6Q3VycmVuY3lcIiB9LFxuXHRcdFx0XHR7IHBhdGg6IFwiU2FsZXNRdWFudGl0eVwiLCB1bml0OiBcIlF1YW50aXR5VW5pdFwiIH1cblx0XHRcdF07XG5cdFx0XHRleHBlY3QoYUNvbHVtbnNXaXRoVW5pdHMubGVuZ3RoKS50b0VxdWFsKGFFeHBlY3RDb2x1bW5zV2l0aFVuaXRzLmxlbmd0aCk7IC8vICwgXCJDaGVjayBudW1iZXIgb2YgcHJvcGVydGllcyB3aXRoIHVuaXRzXCIpO1xuXHRcdFx0YUNvbHVtbnNXaXRoVW5pdHMuZm9yRWFjaChvQ29sdW1uID0+IHtcblx0XHRcdFx0Y29uc3Qgb0V4cGVjdGVkID0gYUV4cGVjdENvbHVtbnNXaXRoVW5pdHMuZmluZChvRXhwZWN0ZWRDb2x1bW4gPT4ge1xuXHRcdFx0XHRcdHJldHVybiBvRXhwZWN0ZWRDb2x1bW4ucGF0aCA9PT0gb0NvbHVtbi5wYXRoO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0ZXhwZWN0KG9FeHBlY3RlZCkubm90LnRvRXF1YWwodW5kZWZpbmVkKTsgLy8gKTtcblx0XHRcdFx0ZXhwZWN0KG9Db2x1bW4udW5pdCkudG9FcXVhbChvRXhwZWN0ZWQ/LnVuaXQpOyAvLyAsIFwiQ2hlY2tpbmcgXCIgKyBvQ29sdW1uLnBhdGggKyBcIiBoYXMgcHJvcGVyIHVuaXRcIik7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gQ2hlY2sgb24gYWdncmVnYXRlc1xuXHRcdFx0Y29uc3QgZXhwZWN0ZWRBZ2dyZWdhdGVzOiBSZWNvcmQ8c3RyaW5nLCBPYmplY3Q+ID0ge1xuXHRcdFx0XHRcIlByb3BlcnR5OjpTYWxlc0Ftb3VudExvY2FsQ3VycmVuY3lcIjoge1xuXHRcdFx0XHRcdGRlZmF1bHRBZ2dyZWdhdGU6IHsgY29udGV4dERlZmluaW5nUHJvcGVydGllczogW1wiTG9jYWxDdXJyZW5jeVwiXSB9LFxuXHRcdFx0XHRcdHJlbGF0aXZlUGF0aDogXCJTYWxlc0Ftb3VudExvY2FsQ3VycmVuY3lcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRcIlByb3BlcnR5OjpBbW91bnRQZXJTYWxlXCI6IHtcblx0XHRcdFx0XHRkZWZhdWx0QWdncmVnYXRlOiB7IGNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXM6IFtcIlByb3BlcnR5OjpDdXJyZW5jeVwiXSB9LFxuXHRcdFx0XHRcdFwicmVsYXRpdmVQYXRoXCI6IFwiQW1vdW50UGVyU2FsZVwiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdFwiUHJvcGVydHk6OlNhbGVzTnVtYmVyXCI6IHsgZGVmYXVsdEFnZ3JlZ2F0ZToge30sIHJlbGF0aXZlUGF0aDogXCJTYWxlc051bWJlclwiIH0sXG5cdFx0XHRcdFwiUHJvcGVydHk6OlNhbGVzUXVhbnRpdHlcIjogeyBkZWZhdWx0QWdncmVnYXRlOiB7fSwgXCJyZWxhdGl2ZVBhdGhcIjogXCJTYWxlc1F1YW50aXR5XCIgfVxuXHRcdFx0fTtcblx0XHRcdGNvbnN0IGFnZ3JlZ2F0ZXMgPSB2aXN1YWxpemF0aW9uLmFnZ3JlZ2F0ZXMgfHwge307XG5cblx0XHRcdGV4cGVjdChPYmplY3Qua2V5cyhhZ2dyZWdhdGVzKS5sZW5ndGgpLnRvRXF1YWwoT2JqZWN0LmtleXMoZXhwZWN0ZWRBZ2dyZWdhdGVzKS5sZW5ndGgpOyAvLywgXCJDb3JyZWN0IG51bWJlciBvZiBjdXN0b20gYWdncmVnYXRlc1wiKTtcblx0XHRcdE9iamVjdC5rZXlzKGFnZ3JlZ2F0ZXMpLmZvckVhY2goYWdncmVnYXRlS2V5ID0+IHtcblx0XHRcdFx0ZXhwZWN0KGFnZ3JlZ2F0ZXNbYWdncmVnYXRlS2V5XSkudG9FcXVhbChleHBlY3RlZEFnZ3JlZ2F0ZXNbYWdncmVnYXRlS2V5XSk7IC8vXCJDaGVjayBhZ2dyZWdhdGUgXCIgKyBhZ2dyZWdhdGVLZXkgKyBcIiBhbmQgY29udGV4dC1kZWZpbmluZyBwcm9wZXJ0aWVzXCJcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBDaGVjayBpbml0aWFsIGFnZ3JlZ2F0ZXMvZ3JvdXBzXG5cdFx0XHRleHBlY3QodmlzdWFsaXphdGlvbi5hbm5vdGF0aW9uLmdyb3VwQ29uZGl0aW9ucykudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiTm8gdmlzdWFsIGdyb3VwaW5ncyBieSBkZWZhdWx0XCIpO1xuXHRcdFx0ZXhwZWN0KHZpc3VhbGl6YXRpb24uYW5ub3RhdGlvbi5hZ2dyZWdhdGVDb25kaXRpb25zKS50b0VxdWFsKHVuZGVmaW5lZCk7IC8vICwgXCJObyBhZ2dyZWdhdGVzIGJ5IGRlZmF1bHRcIik7XG5cdFx0fVxuXHQpO1xufSk7XG5kZXNjcmliZShcIlRhYmxlIENvbnZlcnRlciBVbml0IFRlc3RzIHdpdGggQW5hbHl0aWNzIC0gUGVyc29uYWxpemF0aW9uIHNldHRpbmdzOlwiLCBmdW5jdGlvbigpIHtcblx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0cmV0dXJuIGdldE1ldGFNb2RlbChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2RhdGEvT0tSQS9tZXRhZGF0YS54bWxcIikpXG5cdFx0XHQudGhlbihvTWV0YU1vZGVsID0+IHtcblx0XHRcdFx0bWV0YU1vZGVsID0gb01ldGFNb2RlbDtcblx0XHRcdFx0cmV0dXJuIGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoX2NvbnZlcnRlck91dHB1dDogQ29udmVydGVyT3V0cHV0KSA9PiB7XG5cdFx0XHRcdGNvbnZlcnRlck91dHB1dCA9IF9jb252ZXJ0ZXJPdXRwdXQ7XG5cdFx0XHR9KTtcblx0fSk7XG5cblx0Y29uc3QgYVAxM05UZXN0RGF0YSA9IFtcblx0XHR7XG5cdFx0XHRcImRlc2NcIjogXCJkZWZhdWx0IHNldHRpbmdzXCIsXG5cdFx0XHRcIm9wdGlvbnNcIjoge1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdXG5cdFx0XHR9LFxuXHRcdFx0XCJwZXJzb25hbGl6YXRpb25cIjogdW5kZWZpbmVkLFxuXHRcdFx0XCJncm91cEVuYWJsZWRcIjogdHJ1ZSxcblx0XHRcdFwiYWdncmVnYXRlRW5hYmxlZFwiOiB0cnVlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImRlc2NcIjogXCJhbGwgc2V0dGluZ3NcIixcblx0XHRcdFwib3B0aW9uc1wiOiB7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFx0XCJJRFwiOiBcIkZJT1JJVEVDSFAxLTE5MTYxXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRcInBlcnNvbmFsaXphdGlvblwiOiB0cnVlLFxuXHRcdFx0XCJncm91cEVuYWJsZWRcIjogdHJ1ZSxcblx0XHRcdFwiYWdncmVnYXRlRW5hYmxlZFwiOiB0cnVlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImRlc2NcIjogXCJncm91cCBvbmx5XCIsXG5cdFx0XHRcIm9wdGlvbnNcIjoge1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdXG5cdFx0XHR9LFxuXHRcdFx0XCJwZXJzb25hbGl6YXRpb25cIjoge1xuXHRcdFx0XHRcImdyb3VwXCI6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRcImdyb3VwRW5hYmxlZFwiOiB0cnVlLFxuXHRcdFx0XCJhZ2dyZWdhdGVFbmFibGVkXCI6IGZhbHNlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRcImRlc2NcIjogXCJhZ2dyZWdhdGUgb25seVwiLFxuXHRcdFx0XCJvcHRpb25zXCI6IHtcblx0XHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcInR5cGVcIjogXCJKSVJBXCIsXG5cdFx0XHRcdFx0XHRcIklEXCI6IFwiRklPUklURUNIUDEtMTkxNjFcIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XVxuXHRcdFx0fSxcblx0XHRcdFwicGVyc29uYWxpemF0aW9uXCI6IHtcblx0XHRcdFx0XCJhZ2dyZWdhdGVcIjogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdFwiZ3JvdXBFbmFibGVkXCI6IGZhbHNlLFxuXHRcdFx0XCJhZ2dyZWdhdGVFbmFibGVkXCI6IHRydWVcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiZGVzY1wiOiBcImdyb3VwICsgYWdncmVnYXRlXCIsXG5cdFx0XHRcIm9wdGlvbnNcIjoge1xuXHRcdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTE2MVwiXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdXG5cdFx0XHR9LFxuXHRcdFx0XCJwZXJzb25hbGl6YXRpb25cIjoge1xuXHRcdFx0XHRcImdyb3VwXCI6IHRydWUsXG5cdFx0XHRcdFwiYWdncmVnYXRlXCI6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRcImdyb3VwRW5hYmxlZFwiOiB0cnVlLFxuXHRcdFx0XCJhZ2dyZWdhdGVFbmFibGVkXCI6IHRydWVcblx0XHR9LFxuXHRcdHtcblx0XHRcdFwiZGVzY1wiOiBcIm5vIGdyb3VwIG5vciBhZ2dyZWdhdGVcIixcblx0XHRcdFwib3B0aW9uc1wiOiB7XG5cdFx0XHRcdFwicmVmZXJlbmNlc1wiOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFx0XCJJRFwiOiBcIkZJT1JJVEVDSFAxLTE5MTYxXCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH0sXG5cdFx0XHRcInBlcnNvbmFsaXphdGlvblwiOiB7XG5cdFx0XHRcdHNvcnQ6IHRydWVcblx0XHRcdH0sXG5cdFx0XHRcImdyb3VwRW5hYmxlZFwiOiBmYWxzZSxcblx0XHRcdFwiYWdncmVnYXRlRW5hYmxlZFwiOiBmYWxzZVxuXHRcdH1cblx0XTtcblxuXHRhUDEzTlRlc3REYXRhLmZvckVhY2godGVzdERhdGEgPT4ge1xuXHRcdHRlc3QodGVzdERhdGEuZGVzYywgdGVzdERhdGEub3B0aW9ucywgKCkgPT4ge1xuXHRcdFx0bWFuaWZlc3RTZXR0aW5ncyA9IGdldFBhZ2VNYW5pZmVzdChcInRlc3Qvc2FwL2ZlL2NvcmUvamVzdC9kYXRhL09LUkEvbWFuaWZlc3QuanNvblwiLCBcIkJ1c2luZXNzUGFydG5lcnNMaXN0XCIpO1xuXHRcdFx0bWFuaWZlc3RTZXR0aW5nc1tcImNvbnRyb2xDb25maWd1cmF0aW9uXCJdW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCJdW1widGFibGVTZXR0aW5nc1wiXVtcInBlcnNvbmFsaXphdGlvblwiXSA9XG5cdFx0XHRcdHRlc3REYXRhLnBlcnNvbmFsaXphdGlvbjtcblx0XHRcdGNvbnZlcnRlckNvbnRleHQgPSBuZXcgQ29udmVydGVyQ29udGV4dChcblx0XHRcdFx0Y29udmVydGVyT3V0cHV0LFxuXHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRtb2NrRGlhZ25vc3RpY3MsXG5cdFx0XHRcdG1lcmdlLFxuXHRcdFx0XHRnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL0J1c2luZXNzUGFydG5lcnNcIikgYXMgQ29udGV4dClcblx0XHRcdCk7XG5cblx0XHRcdGNvbnN0IHJlc29sdmVkVGFyZ2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlQW5ub3RhdGlvbihcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiKTtcblx0XHRcdGNvbnN0IGxpbmVJdGVtID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhcyBMaW5lSXRlbTtcblx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb24gPSBjcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24obGluZUl0ZW0sIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsIGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0XHRpZiAodGVzdERhdGEuZ3JvdXBFbmFibGVkKSB7XG5cdFx0XHRcdGV4cGVjdCh2aXN1YWxpemF0aW9uLmFubm90YXRpb24ucDEzbk1vZGU/LmluZGV4T2YoXCJHcm91cFwiKSkubm90LnRvRXF1YWwoLTEpOyAvLyAsIFwiR3JvdXAgcGVyc29uYWxpemF0aW9uIGlzIGVuYWJsZWRcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHBlY3QodmlzdWFsaXphdGlvbi5hbm5vdGF0aW9uLnAxM25Nb2RlPy5pbmRleE9mKFwiR3JvdXBcIikpLnRvRXF1YWwoLTEpOyAvLyAsIFwiR3JvdXAgcGVyc29uYWxpemF0aW9uIGlzIGRpc2FibGVkXCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGVzdERhdGEuYWdncmVnYXRlRW5hYmxlZCkge1xuXHRcdFx0XHRleHBlY3QodmlzdWFsaXphdGlvbi5hbm5vdGF0aW9uLnAxM25Nb2RlPy5pbmRleE9mKFwiQWdncmVnYXRlXCIpKS5ub3QudG9FcXVhbCgtMSk7IC8vICwgXCJBZ2dyZWdhdGUgcGVyc29uYWxpemF0aW9uIGlzIGVuYWJsZWRcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRleHBlY3QodmlzdWFsaXphdGlvbi5hbm5vdGF0aW9uLnAxM25Nb2RlPy5pbmRleE9mKFwiQWdncmVnYXRlXCIpKS50b0VxdWFsKC0xKTsgLy8gLCBcIkFnZ3JlZ2F0ZSBwZXJzb25hbGl6YXRpb24gaXMgZGlzYWJsZWRcIik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0pO1xufSk7XG5cbmRlc2NyaWJlKFwiVGFibGUgQ29udmVydGVyIFVuaXQgVGVzdHMgd2l0aCBQcmVzZW50YXRpb24gVmFyaWFudFwiLCBmdW5jdGlvbigpIHtcblx0dGVzdChcIi0gQ2hlY2sgZGVmYXVsdCBhZ2dyZWdhdGVzIGFuZCB2aXN1YWwgZ3JvdXBpbmdzXCIsICgpID0+IHtcblx0XHRyZXR1cm4gZ2V0TWV0YU1vZGVsKHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vZGF0YS9PS1JBL21ldGFkYXRhX3dpdGhQVi54bWxcIikpXG5cdFx0XHQudGhlbihvTWV0YU1vZGVsID0+IHtcblx0XHRcdFx0bWV0YU1vZGVsID0gb01ldGFNb2RlbDtcblx0XHRcdFx0cmV0dXJuIGNvbnZlcnRUeXBlcyhvTWV0YU1vZGVsKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbigoX2NvbnZlcnRlck91dHB1dDogQ29udmVydGVyT3V0cHV0KSA9PiB7XG5cdFx0XHRcdGNvbnZlcnRlck91dHB1dCA9IF9jb252ZXJ0ZXJPdXRwdXQ7XG5cdFx0XHRcdG1hbmlmZXN0U2V0dGluZ3MgPSBnZXRQYWdlTWFuaWZlc3QoXCJ0ZXN0L3NhcC9mZS9jb3JlL2plc3QvZGF0YS9PS1JBL21hbmlmZXN0Lmpzb25cIiwgXCJCdXNpbmVzc1BhcnRuZXJzTGlzdFwiKTtcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dCA9IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHRcdGNvbnZlcnRlck91dHB1dCxcblx0XHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdG1vY2tEaWFnbm9zdGljcyxcblx0XHRcdFx0XHRtZXJnZSxcblx0XHRcdFx0XHRnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL0J1c2luZXNzUGFydG5lcnNcIikgYXMgQ29udGV4dClcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiKTtcblx0XHRcdFx0Y29uc3QgcHJlc2VudGF0aW9uVmFyaWFudCA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgUHJlc2VudGF0aW9uVmFyaWFudFR5cGVUeXBlcztcblx0XHRcdFx0Y29uc3QgbGluZUl0ZW0gPSBwcmVzZW50YXRpb25WYXJpYW50LlZpc3VhbGl6YXRpb25zWzBdLiR0YXJnZXQgYXMgTGluZUl0ZW07XG5cdFx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb24gPSBjcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24oXG5cdFx0XHRcdFx0bGluZUl0ZW0sXG5cdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIixcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdHByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdFx0KTtcblxuXHRcdFx0XHQvLyBDaGVjayBpbml0aWFsIGFnZ3JlZ2F0ZXMvZ3JvdXBzXG5cdFx0XHRcdGNvbnN0IGV4cGVjdGVkR3JvdXBzID0ge1xuXHRcdFx0XHRcdGdyb3VwTGV2ZWxzOiBbeyBuYW1lOiBcIlByb3BlcnR5OjpTZWdtZW50XCIgfSwgeyBuYW1lOiBcIkluZHVzdHJ5XCIgfV1cblx0XHRcdFx0fTtcblx0XHRcdFx0Y29uc3QgZXhwZWN0ZWRBZ2dyZWdhdGVzID0ge1xuXHRcdFx0XHRcdFwiUHJvcGVydHk6OlNhbGVzQW1vdW50XCI6IHt9LFxuXHRcdFx0XHRcdFwiUHJvcGVydHk6OlNhbGVzQW1vdW50TG9jYWxDdXJyZW5jeVwiOiB7fVxuXHRcdFx0XHR9O1xuXHRcdFx0XHRleHBlY3QoSlNPTi5wYXJzZSh2aXN1YWxpemF0aW9uLmFubm90YXRpb24uZ3JvdXBDb25kaXRpb25zIHx8IFwiXCIpKS50b0VxdWFsKGV4cGVjdGVkR3JvdXBzKTsgLy9cIkNoZWNrIGluaXRpYWwgdmlzdWFsIGdyb3VwaW5nc1wiXG5cdFx0XHRcdGV4cGVjdChKU09OLnBhcnNlKHZpc3VhbGl6YXRpb24uYW5ub3RhdGlvbi5hZ2dyZWdhdGVDb25kaXRpb25zIHx8IFwiXCIpKS50b0VxdWFsKGV4cGVjdGVkQWdncmVnYXRlcyk7IC8vIFwiQ2hlY2sgaW5pdGlhbCBhZ2dyZWdhdGVzXCJcblx0XHRcdH0pO1xuXHR9KTtcbn0pO1xuZGVzY3JpYmUoXCJBZ2dyZWdhdGlvbkhlbHBlciBVbml0IFRlc3RzIGZvciBncm91cGFibGUgcHJvcGVydGllc1wiLCBmdW5jdGlvbigpIHtcblx0dGVzdChcblx0XHRcIkFnZ3JlZ2F0aW9uSGVscGVyIFVuaXQgVGVzdHMgZm9yIGdyb3VwYWJsZSBwcm9wZXJ0aWVzIC0gRGlmZmVyZW50IG9wdGlvbnMgdG8gZmxhZyBncm91cGFibGUgcHJvcHNcIixcblx0XHR7XG5cdFx0XHRcInJlZmVyZW5jZXNcIjogW1xuXHRcdFx0XHR7XG5cdFx0XHRcdFx0XCJ0eXBlXCI6IFwiSklSQVwiLFxuXHRcdFx0XHRcdFwiSURcIjogXCJGSU9SSVRFQ0hQMS0xOTkzNVwiXG5cdFx0XHRcdH1cblx0XHRcdF1cblx0XHR9LFxuXHRcdCgpID0+IHtcblx0XHRcdHJldHVybiBnZXRNZXRhTW9kZWwocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9kYXRhL09LUkEvbWV0YWRhdGFfZ3JvdXBhYmxlX29wdGlvbnMueG1sXCIpKVxuXHRcdFx0XHQudGhlbihvTWV0YU1vZGVsID0+IHtcblx0XHRcdFx0XHRtZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHRcdFx0XHRcdHJldHVybiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50aGVuKChfY29udmVydGVyT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQpID0+IHtcblx0XHRcdFx0XHRjb252ZXJ0ZXJPdXRwdXQgPSBfY29udmVydGVyT3V0cHV0O1xuXHRcdFx0XHRcdG1hbmlmZXN0U2V0dGluZ3MgPSBnZXRQYWdlTWFuaWZlc3QoXCJ0ZXN0L3NhcC9mZS9jb3JlL2plc3QvZGF0YS9PS1JBL21hbmlmZXN0Lmpzb25cIiwgXCJCdXNpbmVzc1BhcnRuZXJzTGlzdFwiKTtcblxuXHRcdFx0XHRcdGNvbnN0IHRlc3REYXRhID0gW1xuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IFwiQnVzaW5lc3NQYXJ0bmVyc1wiLFxuXHRcdFx0XHRcdFx0XHRleHBlY3RlZEdyb3VwYWJsZToge1xuXHRcdFx0XHRcdFx0XHRcdFwiSWRcIjogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0XCJOYW1lXCI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XCJDb3VudHJ5XCI6IHRydWUsXG5cdFx0XHRcdFx0XHRcdFx0XCJSZWdpb25cIjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcIlNlZ21lbnRcIjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcIkluZHVzdHJ5XCI6IHRydWVcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0ZW50aXR5U2V0OiBcIkN1c3RvbWVyc1wiXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRlbnRpdHlTZXQ6IFwiSW5kdXN0cmllc1wiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XTtcblxuXHRcdFx0XHRcdC8vdGVzdERhdGEuZm9yRWFjaChvRGF0YSA9PiB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgSSA9IDA7IEkgPCB0ZXN0RGF0YS5sZW5ndGg7IEkrKykge1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0RhdGEgPSB0ZXN0RGF0YVtJXTtcblx0XHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQgPSBuZXcgQ29udmVydGVyQ29udGV4dChcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyT3V0cHV0LFxuXHRcdFx0XHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdFx0XHRtb2NrRGlhZ25vc3RpY3MsXG5cdFx0XHRcdFx0XHRcdG1lcmdlLFxuXHRcdFx0XHRcdFx0XHRnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiICsgb0RhdGEuZW50aXR5U2V0KSBhcyBDb250ZXh0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRcdFx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uSGVscGVyID0gbmV3IEFnZ3JlZ2F0aW9uSGVscGVyKGVudGl0eVR5cGUsIGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdFx0XHRcdFx0XHRlbnRpdHlUeXBlLmVudGl0eVByb3BlcnRpZXMuZm9yRWFjaCgocHJvcGVydHk6IFByb3BlcnR5KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGV4cGVjdChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5R3JvdXBhYmxlKHByb3BlcnR5KSkudG9FcXVhbChcblx0XHRcdFx0XHRcdFx0XHRvRGF0YS5leHBlY3RlZEdyb3VwYWJsZSA9PT0gdW5kZWZpbmVkIHx8IChvRGF0YS5leHBlY3RlZEdyb3VwYWJsZSBhcyBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPilbcHJvcGVydHkubmFtZV1cblx0XHRcdFx0XHRcdFx0KTsgLy8sIG9EYXRhLmVudGl0eVNldCArIFwiOiBjaGVjayBpZiBwcm9wZXJ0eSBcIiArIHByb3BlcnR5Lm5hbWUgKyBcIiBpcyBncm91cGFibGVcIik7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0KTtcbn0pO1xuZGVzY3JpYmUoXCJUYWJsZSBDb252ZXJ0ZXIgVW5pdCBUZXN0cyBmb3IgZ3JvdXBoZWFkZXIgZm9ybWF0XCIsIGZ1bmN0aW9uKCkge1xuXHR0ZXN0KFwiLSBDaGVjayBmb3JtYXQgaW5mb1wiLCAoKSA9PiB7XG5cdFx0cmV0dXJuIGdldE1ldGFNb2RlbChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2RhdGEvT0tSQS9tZXRhZGF0YV90ZXh0QXJyYW5nZW1lbnQueG1sXCIpKVxuXHRcdFx0LnRoZW4ob01ldGFNb2RlbCA9PiB7XG5cdFx0XHRcdG1ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdFx0XHRcdHJldHVybiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKF9jb252ZXJ0ZXJPdXRwdXQ6IENvbnZlcnRlck91dHB1dCkgPT4ge1xuXHRcdFx0XHRjb252ZXJ0ZXJPdXRwdXQgPSBfY29udmVydGVyT3V0cHV0O1xuXHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzID0gZ2V0UGFnZU1hbmlmZXN0KFwidGVzdC9zYXAvZmUvY29yZS9qZXN0L2RhdGEvT0tSQS9tYW5pZmVzdC5qc29uXCIsIFwiQnVzaW5lc3NQYXJ0bmVyc0xpc3RcIik7XG5cblx0XHRcdFx0Y29udmVydGVyQ29udGV4dCA9IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHRcdGNvbnZlcnRlck91dHB1dCxcblx0XHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdG1vY2tEaWFnbm9zdGljcyxcblx0XHRcdFx0XHRtZXJnZSxcblx0XHRcdFx0XHRnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL0J1c2luZXNzUGFydG5lcnNcIikgYXMgQ29udGV4dClcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIik7XG5cdFx0XHRcdGNvbnN0IGxpbmVJdGVtID0gcmVzb2x2ZWRUYXJnZXQuYW5ub3RhdGlvbiBhcyBMaW5lSXRlbTtcblx0XHRcdFx0Y29uc3QgdmlzdWFsaXphdGlvbiA9IGNyZWF0ZVRhYmxlVmlzdWFsaXphdGlvbihsaW5lSXRlbSwgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIiwgY29udmVydGVyQ29udGV4dCk7XG5cdFx0XHRcdGNvbnN0IGFDb2x1bW5zID0gdmlzdWFsaXphdGlvbi5jb2x1bW5zIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbltdO1xuXG5cdFx0XHRcdGNvbnN0IGV4cGVjdGVkRm9ybWF0SW5mbyA9IFtcblx0XHRcdFx0XHR7IHBhdGg6IFwiQ291bnRyeV9Db2RlMVwiLCBtb2RlOiBcIlZhbHVlRGVzY3JpcHRpb25cIiwgZGVzY3JpcHRpb246IFwiRm9ybWF0IGZvciBUZXh0TGFzdFwiIH0sXG5cdFx0XHRcdFx0eyBwYXRoOiBcIkNvdW50cnlfQ29kZTJcIiwgbW9kZTogXCJEZXNjcmlwdGlvblZhbHVlXCIsIGRlc2NyaXB0aW9uOiBcIkZvcm1hdCBmb3IgVGV4dEZpcnN0XCIgfSxcblx0XHRcdFx0XHR7IHBhdGg6IFwiQ291bnRyeV9Db2RlM1wiLCBtb2RlOiBcIkRlc2NyaXB0aW9uXCIsIGRlc2NyaXB0aW9uOiBcIkZvcm1hdCBmb3IgVGV4dE9ubHlcIiB9LFxuXHRcdFx0XHRcdHsgcGF0aDogXCJDb3VudHJ5X0NvZGU0XCIsIG1vZGU6IHVuZGVmaW5lZCwgZGVzY3JpcHRpb246IFwiRm9ybWF0IGZvciBUZXh0U2VwYXJhdGVcIiB9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHBhdGg6IFwiQ291bnRyeV9Db2RlNVwiLFxuXHRcdFx0XHRcdFx0bW9kZTogXCJEZXNjcmlwdGlvblZhbHVlXCIsXG5cdFx0XHRcdFx0XHRkZXNjcmlwdGlvbjogXCJGb3JtYXQgZm9yIHVuc3BlY2lmaWVkIHRleHQgYXJyYW5nZW1lbnRcIlxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0eyBwYXRoOiBcIkNvdW50cnlfQ29kZTZcIiwgbW9kZTogdW5kZWZpbmVkLCBkZXNjcmlwdGlvbjogXCJGb3JtYXQgd2hlbiBDb21tb24uVGV4dCBpc24ndCBhIHBhdGhcIiB9XG5cdFx0XHRcdF07XG5cblx0XHRcdFx0ZXhwZWN0ZWRGb3JtYXRJbmZvLmZvckVhY2goaW5mbyA9PiB7XG5cdFx0XHRcdFx0Y29uc3Qgb0NvbHVtbiA9IGFDb2x1bW5zLmZpbmQob0NvbCA9PiAhb0NvbC5wcm9wZXJ0eUluZm9zICYmIG9Db2wucmVsYXRpdmVQYXRoID09PSBpbmZvLnBhdGgpO1xuXHRcdFx0XHRcdGV4cGVjdChvQ29sdW1uKS5ub3QudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiRm91bmQgcmVsYXRlZCBjb2x1bW4gZm9yIFwiICsgaW5mby5wYXRoKTtcblx0XHRcdFx0XHRpZiAoaW5mby5tb2RlKSB7XG5cdFx0XHRcdFx0XHRleHBlY3Qob0NvbHVtbj8udGV4dEFycmFuZ2VtZW50KS5ub3QudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiQ29sdW1uIGZvciBcIiArIGluZm8ucGF0aCArIFwiIGhhcyBhIHRleHQgYXJyYW5nZW1lbnQgaW5mb1wiKTtcblx0XHRcdFx0XHRcdGV4cGVjdChvQ29sdW1uPy50ZXh0QXJyYW5nZW1lbnQ/Lm1vZGUpLnRvRXF1YWwoaW5mby5tb2RlKTsgLy8gLCBcIkNoZWNrIG1vZGUgLSBcIiArIGluZm8uZGVzY3JpcHRpb24gKyBcIiA9IFwiICsgaW5mby5tb2RlKTtcblx0XHRcdFx0XHRcdGV4cGVjdChvQ29sdW1uPy50ZXh0QXJyYW5nZW1lbnQ/LnRleHRQcm9wZXJ0eSkudG9FcXVhbChcIkNvdW50cnlEZXNjXCIpOyAvLyAsIFwiQ2hlY2sgdGV4dCBwcm9wZXJ0eVwiKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0ZXhwZWN0KG9Db2x1bW4/LnRleHRBcnJhbmdlbWVudCkudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiQ2hlY2sgXCIgKyBpbmZvLnBhdGggKyBcIiBoYXMgbm8gdGV4dCBhcnJhbmdlbWVudCBpbmZvIChcIiArIGluZm8uZGVzY3JpcHRpb24gKyBcIilcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHR9KTtcbn0pO1xuXG5kZXNjcmliZShcIlRhYmxlIENvbnZlcnRlciBVbml0IFRlc3RzIHdpdGggQW5hbHl0aWNzIHNlcnZpY2VcIiwgZnVuY3Rpb24oKSB7XG5cdGJlZm9yZUVhY2goKCkgPT4ge1xuXHRcdHJldHVybiBnZXRNZXRhTW9kZWwocGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9kYXRhL09LUkEvbWV0YWRhdGEueG1sXCIpKVxuXHRcdFx0LnRoZW4ob01ldGFNb2RlbCA9PiB7XG5cdFx0XHRcdG1ldGFNb2RlbCA9IG9NZXRhTW9kZWw7XG5cdFx0XHRcdHJldHVybiBjb252ZXJ0VHlwZXMob01ldGFNb2RlbCk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oKF9jb252ZXJ0ZXJPdXRwdXQ6IENvbnZlcnRlck91dHB1dCkgPT4ge1xuXHRcdFx0XHRjb252ZXJ0ZXJPdXRwdXQgPSBfY29udmVydGVyT3V0cHV0O1xuXHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzID0gZ2V0UGFnZU1hbmlmZXN0KFwidGVzdC9zYXAvZmUvY29yZS9qZXN0L2RhdGEvT0tSQS9tYW5pZmVzdC5qc29uXCIsIFwiQnVzaW5lc3NQYXJ0bmVyc0xpc3RcIik7XG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQgPSBuZXcgQ29udmVydGVyQ29udGV4dChcblx0XHRcdFx0XHRjb252ZXJ0ZXJPdXRwdXQsXG5cdFx0XHRcdFx0bWFuaWZlc3RTZXR0aW5ncyxcblx0XHRcdFx0XHRtb2NrRGlhZ25vc3RpY3MsXG5cdFx0XHRcdFx0bWVyZ2UsXG5cdFx0XHRcdFx0Z2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG1ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9CdXNpbmVzc1BhcnRuZXJzXCIpIGFzIENvbnRleHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0fSk7XG5cdHRlc3QoXG5cdFx0XCItIENvbHVtbiBwcm9wZXJ0aWVzXCIsXG5cdFx0e1xuXHRcdFx0XCJyZWZlcmVuY2VzXCI6IFtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdFwidHlwZVwiOiBcIkpJUkFcIixcblx0XHRcdFx0XHRcIklEXCI6IFwiRklPUklURUNIUDEtMTk4NjJcIlxuXHRcdFx0XHR9XG5cdFx0XHRdXG5cdFx0fSxcblx0XHQoKSA9PiB7XG5cdFx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIik7XG5cdFx0XHRjb25zdCBsaW5lSXRlbSA9IHJlc29sdmVkVGFyZ2V0LmFubm90YXRpb24gYXMgTGluZUl0ZW07XG5cdFx0XHRjb25zdCB2aXN1YWxpemF0aW9uID0gY3JlYXRlVGFibGVWaXN1YWxpemF0aW9uKGxpbmVJdGVtLCBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5MaW5lSXRlbVwiLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRcdGNvbnN0IGFDb2x1bW5zID0gdmlzdWFsaXphdGlvbi5jb2x1bW5zIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbltdO1xuXHRcdFx0Y29uc3QgYWN0dWFsUmVzdWx0ID0gYUNvbHVtbnNcblx0XHRcdFx0LmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmFkZGl0aW9uYWxQcm9wZXJ0eUluZm9zKVxuXHRcdFx0XHQubWFwKGZ1bmN0aW9uKGNvbCkge1xuXHRcdFx0XHRcdHJldHVybiB7IFwia2V5XCI6IGNvbC5rZXksIFwiYWRkaXRpb25hbFByb3BlcnR5SW5mb3NcIjogY29sLmFkZGl0aW9uYWxQcm9wZXJ0eUluZm9zIH07XG5cdFx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgZXhwZWN0ZWRSZXN1bHQgPSBbXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcImtleVwiOiBcIkRhdGFGaWVsZDo6Q291bnRyeVwiLFxuXHRcdFx0XHRcdFwiYWRkaXRpb25hbFByb3BlcnR5SW5mb3NcIjogW1wiQ291bnRyeVZpc2liaWxpdHlcIl1cblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdFwia2V5XCI6IFwiRGF0YUZpZWxkOjpDb3VudHJ5X0NvZGVcIixcblx0XHRcdFx0XHRcImFkZGl0aW9uYWxQcm9wZXJ0eUluZm9zXCI6IFtcIkNvdW50cnlWaXNpYmlsaXR5XCJdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcImtleVwiOiBcIkRhdGFGaWVsZEZvckFubm90YXRpb246OkZpZWxkR3JvdXBcIixcblx0XHRcdFx0XHRcImFkZGl0aW9uYWxQcm9wZXJ0eUluZm9zXCI6IFtcIkNvdW50cnlWaXNpYmlsaXR5XCJdXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRcImtleVwiOiBcIkRhdGFGaWVsZDo6U2FsZXNBbW91bnRcIixcblx0XHRcdFx0XHRcImFkZGl0aW9uYWxQcm9wZXJ0eUluZm9zXCI6IFtcIl9DdXN0b21lci9TZXRTYWxlc0Ftb3VudEhpZGRlblwiXVxuXHRcdFx0XHR9XG5cdFx0XHRdO1xuXG5cdFx0XHRleHBlY3QoYWN0dWFsUmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkUmVzdWx0KTsgLy8sIFwiVGFibGUgY29sdW1ucyBkZWZpbml0aW9uIGRvZXMgbm90IG1hdGNoIHRoZSBleHBlY3RhdGlvblwiKTtcblx0XHR9XG5cdCk7XG59KTtcblxuZGVzY3JpYmUoXCJUYWJsZSBDb252ZXJ0ZXIgVW5pdCBUZXN0cyB3aXRoIG5vbi1BbmFseXRpY3Mgc2VydmljZVwiLCBmdW5jdGlvbigpIHtcblx0YmVmb3JlRWFjaCgoKSA9PiB7XG5cdFx0cmV0dXJuIGdldE1ldGFNb2RlbChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL2RhdGEvc2FsZXNPcmRlck1ldGFkYXRhX3F1bml0LnhtbFwiKSlcblx0XHRcdC50aGVuKG9NZXRhTW9kZWwgPT4ge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBvTWV0YU1vZGVsO1xuXHRcdFx0XHRyZXR1cm4gY29udmVydFR5cGVzKG9NZXRhTW9kZWwpO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKChfY29udmVydGVyT3V0cHV0OiBDb252ZXJ0ZXJPdXRwdXQpID0+IHtcblx0XHRcdFx0Y29udmVydGVyT3V0cHV0ID0gX2NvbnZlcnRlck91dHB1dDtcblx0XHRcdFx0bWFuaWZlc3RTZXR0aW5ncyA9IGdldFBhZ2VNYW5pZmVzdChcInRlc3Qvc2FwL2ZlL2NvcmUvamVzdC9kYXRhL21hbmlmZXN0Lmpzb25cIiwgXCJTYWxlc09yZGVyTWFuYWdlTGlzdFwiKTtcblx0XHRcdFx0Y29udmVydGVyQ29udGV4dCA9IG5ldyBDb252ZXJ0ZXJDb250ZXh0KFxuXHRcdFx0XHRcdGNvbnZlcnRlck91dHB1dCxcblx0XHRcdFx0XHRtYW5pZmVzdFNldHRpbmdzLFxuXHRcdFx0XHRcdG1vY2tEaWFnbm9zdGljcyxcblx0XHRcdFx0XHRtZXJnZSxcblx0XHRcdFx0XHRnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMobWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1NhbGVzT3JkZXJNYW5hZ2VcIikgYXMgQ29udGV4dClcblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXHR9KTtcblxuXHR0ZXN0KFwiVGFibGUgQ29udmVydGVyIFVuaXQgVGVzdHMgd2l0aCBub24tQW5hbHl0aWNzIC0gIG5vIGdyb3VwYWJsZSBwcm9wZXJ0aWVzIGZyb20gQWdncmVnYXRpb25IZWxwZXJcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihlbnRpdHlUeXBlLCBjb252ZXJ0ZXJDb250ZXh0KTtcblxuXHRcdGVudGl0eVR5cGUuZW50aXR5UHJvcGVydGllcy5mb3JFYWNoKChwcm9wZXJ0eTogUHJvcGVydHkpID0+IHtcblx0XHRcdGV4cGVjdChhZ2dyZWdhdGlvbkhlbHBlci5pc1Byb3BlcnR5R3JvdXBhYmxlKHByb3BlcnR5KSkudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiaXNQcm9wZXJ0eUdyb3VwYWJsZSBzaGFsbCBiZSB1bmRlZmluZWQgZm9yIHByb3BlcnR5IFwiICsgcHJvcGVydHkubmFtZSk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdHRlc3QoXCJUYWJsZSBDb252ZXJ0ZXIgVW5pdCBUZXN0cyB3aXRoIG5vbi1BbmFseXRpY3MgLSBubyBjdXN0b20gYWdncmVnYXRpb25zIGZyb20gQWdncmVnYXRpb25IZWxwZXJcIiwgKCkgPT4ge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRjb25zdCBhZ2dyZWdhdGlvbkhlbHBlciA9IG5ldyBBZ2dyZWdhdGlvbkhlbHBlcihlbnRpdHlUeXBlLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRjb25zdCBhZ2dyZWdhdGVzID0gYWdncmVnYXRpb25IZWxwZXIuZ2V0Q3VzdG9tQWdncmVnYXRlRGVmaW5pdGlvbnMoKTtcblxuXHRcdGV4cGVjdChPYmplY3Qua2V5cyhhZ2dyZWdhdGVzKS5sZW5ndGgpLnRvRXF1YWwoMCk7IC8vICwgXCJObyBjdXN0b20gYWdncmVnYXRlcyBhcmUgZGVmaW5lZFwiKTtcblx0fSk7XG5cblx0dGVzdChcIlRhYmxlIENvbnZlcnRlciBVbml0IFRlc3RzIHdpdGggbm9uLUFuYWx5dGljcyAtIENvbHVtbiBwcm9wZXJ0aWVzXCIsICgpID0+IHtcblx0XHRjb25zdCByZXNvbHZlZFRhcmdldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZUFubm90YXRpb24oXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuTGluZUl0ZW1cIik7XG5cdFx0Y29uc3QgbGluZUl0ZW0gPSByZXNvbHZlZFRhcmdldC5hbm5vdGF0aW9uIGFzIExpbmVJdGVtO1xuXHRcdGNvbnN0IHZpc3VhbGl6YXRpb24gPSBjcmVhdGVUYWJsZVZpc3VhbGl6YXRpb24obGluZUl0ZW0sIFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVJdGVtXCIsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdGNvbnN0IGFDb2x1bW5zID0gdmlzdWFsaXphdGlvbi5jb2x1bW5zIGFzIEFubm90YXRpb25UYWJsZUNvbHVtbltdO1xuXG5cdFx0Ly8gQ2hlY2sgb24ga2V5IHByb3BlcnRpZXNcblx0XHRjb25zdCBhS2V5UHJvcGVydGllcyA9IGFDb2x1bW5zLmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLmlzS2V5KS5tYXAoY29sdW1uID0+IGNvbHVtbi5yZWxhdGl2ZVBhdGgpO1xuXHRcdGV4cGVjdChhS2V5UHJvcGVydGllcykudG9FcXVhbChbXCJJc0FjdGl2ZUVudGl0eVwiLCBcIklEXCJdKTsgLy8gXCJDaGVjayBvbiBrZXkgcHJvcGVydGllc1wiKTtcblxuXHRcdC8vIENoZWNrIG9uIGdyb3VwYWJsZSBwcm9wZXJ0aWVzXG5cdFx0Y29uc3QgYUdyb3VwYWJsZVByb3BlcnRpZXMgPSBhQ29sdW1ucy5maWx0ZXIoY29sdW1uID0+IGNvbHVtbi5pc0dyb3VwYWJsZSkubWFwKGNvbHVtbiA9PiBjb2x1bW4ucmVsYXRpdmVQYXRoKTtcblx0XHRleHBlY3QoYUdyb3VwYWJsZVByb3BlcnRpZXMubGVuZ3RoKS50b0VxdWFsKDApOyAvLyAsIFwiTm8gZ3JvdXBhYmxlIHByb3BlcnRpZXNcIik7XG5cblx0XHQvLyBDaGVjayBvbiB1bml0cy9jdXJyZW5jaWVzXG5cdFx0Y29uc3QgYUNvbHVtbnNXaXRoVW5pdHMgPSBhQ29sdW1uc1xuXHRcdFx0LmZpbHRlcihjb2x1bW4gPT4gY29sdW1uLnVuaXQgIT09IHVuZGVmaW5lZClcblx0XHRcdC5tYXAoY29sdW1uID0+IHtcblx0XHRcdFx0cmV0dXJuIHsgcGF0aDogY29sdW1uLnJlbGF0aXZlUGF0aCwgdW5pdDogY29sdW1uLnVuaXQgfTtcblx0XHRcdH0pO1xuXHRcdGNvbnN0IGFFeHBlY3RDb2x1bW5zV2l0aFVuaXRzID0gW3sgcGF0aDogXCJUb3RhbE5ldEFtb3VudFwiLCB1bml0OiBcIlRyYW5zYWN0aW9uQ3VycmVuY3lcIiB9XTtcblx0XHRleHBlY3QoYUNvbHVtbnNXaXRoVW5pdHMubGVuZ3RoKS50b0VxdWFsKGFFeHBlY3RDb2x1bW5zV2l0aFVuaXRzLmxlbmd0aCk7IC8vICwgXCJDaGVjayBudW1iZXIgb2YgcHJvcGVydGllcyB3aXRoIHVuaXRzXCIpO1xuXHRcdGFDb2x1bW5zV2l0aFVuaXRzLmZvckVhY2gob0NvbHVtbiA9PiB7XG5cdFx0XHRjb25zdCBvRXhwZWN0ZWQgPSBhRXhwZWN0Q29sdW1uc1dpdGhVbml0cy5maW5kKG9FeHBlY3RlZENvbHVtbiA9PiB7XG5cdFx0XHRcdHJldHVybiBvRXhwZWN0ZWRDb2x1bW4ucGF0aCA9PT0gb0NvbHVtbi5wYXRoO1xuXHRcdFx0fSk7XG5cdFx0XHRleHBlY3Qob0V4cGVjdGVkKS5ub3QudG9FcXVhbCh1bmRlZmluZWQpOyAvLyApO1xuXHRcdFx0ZXhwZWN0KG9Db2x1bW4udW5pdCkudG9FcXVhbChvRXhwZWN0ZWQ/LnVuaXQpOyAvLyAsIFwiQ2hlY2tpbmcgXCIgKyBvQ29sdW1uLnBhdGggKyBcIiBoYXMgcHJvcGVyIHVuaXRcIik7XG5cdFx0fSk7XG5cblx0XHQvLyBDaGVjayBvbiBhZ2dyZWdhdGVzXG5cdFx0ZXhwZWN0KHZpc3VhbGl6YXRpb24uYWdncmVnYXRlcykudG9FcXVhbCh1bmRlZmluZWQpOyAvLyAsIFwiTm8gYWdncmVnYXRlcyBhcmUgZGVmaW5lZFwiKTtcblx0fSk7XG59KTtcbiJdfQ==
|