@sapui5/sap.fe.core 1.102.2 → 1.104.1
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 +6 -6
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +73 -30
- package/src/sap/fe/core/AppComponent.ts +65 -43
- package/src/sap/fe/core/AppStateHandler.js +82 -70
- package/src/sap/fe/core/AppStateHandler.ts +32 -37
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +227 -126
- package/src/sap/fe/core/CommonUtils.ts +240 -163
- package/src/sap/fe/core/ExtensionAPI.js +24 -27
- package/src/sap/fe/core/ExtensionAPI.ts +36 -38
- package/src/sap/fe/core/PageController.js +4 -4
- package/src/sap/fe/core/PageController.ts +4 -5
- package/src/sap/fe/core/TemplateComponent.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +6 -6
- package/src/sap/fe/core/TemplateModel.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +181 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +150 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +585 -210
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +246 -96
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +30 -30
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +32 -29
- package/src/sap/fe/core/controllerextensions/EditFlow.js +379 -330
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +253 -245
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +101 -74
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +69 -79
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +67 -67
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +76 -76
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +85 -77
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +103 -99
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +9 -9
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +20 -27
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +20 -12
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +21 -14
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +98 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +21 -22
- package/src/sap/fe/core/controllerextensions/Paginator.ts +24 -25
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +170 -139
- package/src/sap/fe/core/controllerextensions/Share.ts +117 -118
- package/src/sap/fe/core/controllerextensions/SideEffects.js +46 -50
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +56 -60
- package/src/sap/fe/core/controllerextensions/ViewState.js +200 -131
- package/src/sap/fe/core/controllerextensions/ViewState.ts +141 -148
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +5 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -7
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +11 -10
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +17 -20
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +18 -19
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +190 -141
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +258 -210
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +183 -125
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +213 -156
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +164 -140
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +180 -150
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +24 -26
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +35 -33
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +71 -41
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +102 -82
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +61 -71
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +56 -64
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +11 -25
- package/src/sap/fe/core/controls/CommandExecution.ts +11 -25
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +22 -22
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +25 -24
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +5 -5
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +7 -2
- package/src/sap/fe/core/controls/FileWrapper.ts +15 -11
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MassEditSelect.ts +0 -4
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +49 -49
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +54 -54
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +8 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +89 -88
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +107 -106
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +52 -61
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -15
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +64 -35
- package/src/sap/fe/core/converters/MetaModelConverter.ts +154 -129
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +58 -35
- package/src/sap/fe/core/converters/annotations/DataField.ts +102 -76
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +50 -41
- package/src/sap/fe/core/converters/controls/Common/Action.ts +56 -46
- package/src/sap/fe/core/converters/controls/Common/Chart.js +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -33
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +30 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -61
- package/src/sap/fe/core/converters/controls/Common/Form.js +27 -28
- package/src/sap/fe/core/converters/controls/Common/Form.ts +44 -57
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +49 -52
- package/src/sap/fe/core/converters/controls/Common/Table.js +181 -197
- package/src/sap/fe/core/converters/controls/Common/Table.ts +251 -280
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +119 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +144 -141
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +45 -41
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +65 -59
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +77 -73
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +101 -97
- package/src/sap/fe/core/converters/helpers/Aggregation.js +2 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +12 -15
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -31
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +30 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +48 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +26 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -5
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +55 -42
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +81 -66
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +39 -38
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +52 -61
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +4 -4
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +4 -4
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +96 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +70 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +11 -11
- package/src/sap/fe/core/formatters/TableFormatter.ts +12 -12
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1832 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +396 -269
- package/src/sap/fe/core/helpers/ClassSupport.js +49 -12
- package/src/sap/fe/core/helpers/ClassSupport.ts +37 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -2
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +306 -280
- package/src/sap/fe/core/helpers/MassEditHelper.ts +380 -360
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +34 -32
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +12 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +12 -12
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +99 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +82 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/library.js +42 -3
- package/src/sap/fe/core/library.ts +38 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +39 -63
- package/src/sap/fe/core/messagebundle_ar.properties +25 -39
- package/src/sap/fe/core/messagebundle_bg.properties +25 -39
- package/src/sap/fe/core/messagebundle_ca.properties +25 -39
- package/src/sap/fe/core/messagebundle_cs.properties +25 -39
- package/src/sap/fe/core/messagebundle_cy.properties +25 -39
- package/src/sap/fe/core/messagebundle_da.properties +25 -39
- package/src/sap/fe/core/messagebundle_de.properties +25 -39
- package/src/sap/fe/core/messagebundle_el.properties +26 -40
- package/src/sap/fe/core/messagebundle_en.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_GB.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +25 -39
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +26 -18
- package/src/sap/fe/core/messagebundle_es.properties +27 -41
- package/src/sap/fe/core/messagebundle_es_MX.properties +25 -39
- package/src/sap/fe/core/messagebundle_et.properties +25 -39
- package/src/sap/fe/core/messagebundle_fi.properties +25 -39
- package/src/sap/fe/core/messagebundle_fr.properties +26 -40
- package/src/sap/fe/core/messagebundle_fr_CA.properties +25 -39
- package/src/sap/fe/core/messagebundle_hi.properties +25 -39
- package/src/sap/fe/core/messagebundle_hr.properties +25 -39
- package/src/sap/fe/core/messagebundle_hu.properties +25 -39
- package/src/sap/fe/core/messagebundle_id.properties +25 -39
- package/src/sap/fe/core/messagebundle_it.properties +41 -55
- package/src/sap/fe/core/messagebundle_iw.properties +25 -39
- package/src/sap/fe/core/messagebundle_ja.properties +25 -39
- package/src/sap/fe/core/messagebundle_kk.properties +25 -39
- package/src/sap/fe/core/messagebundle_ko.properties +30 -44
- package/src/sap/fe/core/messagebundle_lt.properties +25 -39
- package/src/sap/fe/core/messagebundle_lv.properties +25 -39
- package/src/sap/fe/core/messagebundle_ms.properties +25 -39
- package/src/sap/fe/core/messagebundle_nl.properties +27 -41
- package/src/sap/fe/core/messagebundle_no.properties +25 -39
- package/src/sap/fe/core/messagebundle_pl.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt.properties +26 -40
- package/src/sap/fe/core/messagebundle_pt_PT.properties +25 -39
- package/src/sap/fe/core/messagebundle_ro.properties +25 -39
- package/src/sap/fe/core/messagebundle_ru.properties +25 -39
- package/src/sap/fe/core/messagebundle_sh.properties +25 -39
- package/src/sap/fe/core/messagebundle_sk.properties +25 -39
- package/src/sap/fe/core/messagebundle_sl.properties +25 -39
- package/src/sap/fe/core/messagebundle_sv.properties +25 -39
- package/src/sap/fe/core/messagebundle_th.properties +25 -39
- package/src/sap/fe/core/messagebundle_tr.properties +25 -39
- package/src/sap/fe/core/messagebundle_uk.properties +25 -39
- package/src/sap/fe/core/messagebundle_vi.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_CN.properties +25 -39
- package/src/sap/fe/core/messagebundle_zh_TW.properties +25 -39
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +97 -69
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +68 -69
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +3 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +61 -49
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +63 -52
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +55 -55
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +67 -65
- package/src/sap/fe/core/services/ShellServicesFactory.js +92 -76
- package/src/sap/fe/core/services/ShellServicesFactory.ts +95 -82
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +224 -198
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +138 -139
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -3
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.ts +6 -8
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +16 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +18 -18
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +25 -25
- package/src/sap/fe/core/templating/PropertyHelper.ts +25 -26
- package/src/sap/fe/core/templating/UIFormatters.js +152 -95
- package/src/sap/fe/core/templating/UIFormatters.ts +202 -128
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1732
|
@@ -2,24 +2,24 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/converters/helpers/ConfigurableObject", "sap/fe/core/converters/helpers/ID", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/helpers/
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/converters/helpers/ConfigurableObject", "sap/fe/core/converters/helpers/ID", "sap/fe/core/converters/ManifestSettings", "sap/fe/core/formatters/FPMFormatter", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/StableIdHelper"], function (BindingHelper, ConfigurableObject, ID, ManifestSettings, fpmFormatter, BindingToolkit, StableIdHelper) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
9
9
|
var replaceSpecialChars = StableIdHelper.replaceSpecialChars;
|
|
10
|
-
var resolveBindingString =
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var and =
|
|
10
|
+
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
11
|
+
var pathInModel = BindingToolkit.pathInModel;
|
|
12
|
+
var or = BindingToolkit.or;
|
|
13
|
+
var isConstant = BindingToolkit.isConstant;
|
|
14
|
+
var ifElse = BindingToolkit.ifElse;
|
|
15
|
+
var greaterOrEqual = BindingToolkit.greaterOrEqual;
|
|
16
|
+
var getExpressionFromAnnotation = BindingToolkit.getExpressionFromAnnotation;
|
|
17
|
+
var formatResult = BindingToolkit.formatResult;
|
|
18
|
+
var equal = BindingToolkit.equal;
|
|
19
|
+
var compileExpression = BindingToolkit.compileExpression;
|
|
20
|
+
var and = BindingToolkit.and;
|
|
21
21
|
var ActionType = ManifestSettings.ActionType;
|
|
22
|
-
var
|
|
22
|
+
var getCustomActionID = ID.getCustomActionID;
|
|
23
23
|
var Placement = ConfigurableObject.Placement;
|
|
24
24
|
var bindingContextPathVisitor = BindingHelper.bindingContextPathVisitor;
|
|
25
25
|
|
|
@@ -58,10 +58,11 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* Creates the menu action from manifest actions.
|
|
61
|
-
*
|
|
62
|
-
* @param
|
|
61
|
+
*
|
|
62
|
+
* @param actions The manifest definition
|
|
63
|
+
* @param aAnnotationActions The annotation actions definition
|
|
63
64
|
* @param aHiddenHeaderActions
|
|
64
|
-
* @returns
|
|
65
|
+
* @returns The actions from the manifest and the menu option that were added
|
|
65
66
|
*/
|
|
66
67
|
function prepareMenuAction(actions, aAnnotationActions, aHiddenHeaderActions) {
|
|
67
68
|
var _menuItemKeys2;
|
|
@@ -88,7 +89,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
88
89
|
if (!action) {
|
|
89
90
|
action = actions[menuKey];
|
|
90
91
|
} else {
|
|
91
|
-
var _actions$action$key
|
|
92
|
+
var _actions$action$key;
|
|
92
93
|
|
|
93
94
|
//check if "enabled" is overwritten via a manifest entry
|
|
94
95
|
var enabled = (_actions$action$key = actions[action.key]) === null || _actions$action$key === void 0 ? void 0 : _actions$action$key.enabled;
|
|
@@ -97,13 +98,19 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
97
98
|
action.enabled = enabled;
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
|
|
101
|
+
if (actions[action.key]) {
|
|
102
|
+
for (var prop in actions[action.key]) {
|
|
103
|
+
if (!action[prop]) {
|
|
104
|
+
action[prop] = actions[action.key][prop];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
if (((_action = action) !== null && _action !== void 0 && _action.visible || ((_action2 = action) === null || _action2 === void 0 ? void 0 : _action2.type) === ActionType.DataFieldForAction || ((_action3 = action) === null || _action3 === void 0 ? void 0 : _action3.type) === ActionType.DataFieldForIntentBasedNavigation) && !aHiddenHeaderActions.find(function (hiddenAction) {
|
|
104
111
|
return hiddenAction.key === menuKey;
|
|
105
112
|
})) {
|
|
106
|
-
menuVisible =
|
|
113
|
+
menuVisible = compileExpression(or(resolveBindingString(action.visible, "boolean"), resolveBindingString(menuVisible, "boolean")));
|
|
107
114
|
menuItems.push(action);
|
|
108
115
|
}
|
|
109
116
|
|
|
@@ -124,7 +131,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
124
131
|
if (aHiddenHeaderActions.find(function (hiddenAction) {
|
|
125
132
|
return hiddenAction.key === actionKey;
|
|
126
133
|
})) {
|
|
127
|
-
manifestAction.visible = false;
|
|
134
|
+
manifestAction.visible = "false";
|
|
128
135
|
}
|
|
129
136
|
|
|
130
137
|
allActions[actionKey] = manifestAction;
|
|
@@ -166,10 +173,11 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
166
173
|
* Retrieves an action default value based on its kind.
|
|
167
174
|
*
|
|
168
175
|
* Default property value for custom actions if not overwritten in manifest.
|
|
169
|
-
*
|
|
170
|
-
* @param
|
|
176
|
+
*
|
|
177
|
+
* @param manifestAction The action configured in the manifest
|
|
178
|
+
* @param isAnnotationAction Whether the action, defined in manifest, corresponds to an existing annotation action.
|
|
171
179
|
* @param converterContext
|
|
172
|
-
* @returns
|
|
180
|
+
* @returns Determined property value for the column
|
|
173
181
|
*/
|
|
174
182
|
|
|
175
183
|
|
|
@@ -187,14 +195,15 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
187
195
|
};
|
|
188
196
|
/**
|
|
189
197
|
* Creates the action configuration based on the manifest settings.
|
|
190
|
-
*
|
|
198
|
+
*
|
|
199
|
+
* @param manifestActions The manifest actions
|
|
191
200
|
* @param converterContext The converter context
|
|
192
|
-
* @param
|
|
193
|
-
* @param
|
|
194
|
-
* @param
|
|
195
|
-
* @param
|
|
196
|
-
* @param
|
|
197
|
-
* @returns
|
|
201
|
+
* @param aAnnotationActions The annotation actions definition
|
|
202
|
+
* @param navigationSettings The navigation settings
|
|
203
|
+
* @param considerNavigationSettings The navigation settings to be considered
|
|
204
|
+
* @param aHiddenHeaderActions The hidden header actions
|
|
205
|
+
* @param facetName The facet where an action is displayed if it is inline
|
|
206
|
+
* @returns The actions from the manifest
|
|
198
207
|
*/
|
|
199
208
|
|
|
200
209
|
|
|
@@ -218,7 +227,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
218
227
|
actions[actionKey] = {
|
|
219
228
|
id: aAnnotationActions !== null && aAnnotationActions !== void 0 && aAnnotationActions.some(function (action) {
|
|
220
229
|
return action.key === actionKey;
|
|
221
|
-
}) ? actionKey :
|
|
230
|
+
}) ? actionKey : getCustomActionID(actionKey),
|
|
222
231
|
visible: manifestAction.visible === undefined ? "true" : manifestAction.visible,
|
|
223
232
|
enabled: _getManifestEnabled(manifestAction, isAnnotationAction, converterContext),
|
|
224
233
|
handlerModule: manifestAction.press && manifestAction.press.substring(0, lastDotIndex).replace(/\./gi, "/"),
|
|
@@ -268,21 +277,21 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
268
277
|
} else if (resolvedBinding._type !== "EmbeddedBinding" && resolvedBinding._type !== "EmbeddedExpressionBinding") {
|
|
269
278
|
// Then it's a module-method reference "sap.xxx.yyy.doSomething"
|
|
270
279
|
var methodPath = resolvedBinding.value;
|
|
271
|
-
result = formatResult([
|
|
280
|
+
result = formatResult([pathInModel("/", "$view"), methodPath, pathInModel("selectedContexts", "internal")], fpmFormatter.customIsEnabledCheck, converterContext.getEntityType());
|
|
272
281
|
} else {
|
|
273
282
|
// then it's a binding
|
|
274
283
|
result = resolvedBinding;
|
|
275
284
|
} // Consider requiresSelection property to include selectedContexts in the binding expression
|
|
276
285
|
|
|
277
286
|
|
|
278
|
-
return
|
|
287
|
+
return compileExpression(ifElse(manifestAction.requiresSelection === true, and(greaterOrEqual(pathInModel("numberOfSelectedContexts", "internal"), 1), result), result));
|
|
279
288
|
}
|
|
280
289
|
/**
|
|
281
290
|
* Method to determine the value of the 'enabled' property of an annotation-based action.
|
|
282
291
|
*
|
|
283
|
-
* @param
|
|
284
|
-
* @param
|
|
285
|
-
* @returns
|
|
292
|
+
* @param converterContext The instance of the converter context
|
|
293
|
+
* @param actionTarget The instance of the action
|
|
294
|
+
* @returns The binding expression for the 'enabled' property of the action button.
|
|
286
295
|
*/
|
|
287
296
|
|
|
288
297
|
|
|
@@ -290,23 +299,23 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
290
299
|
var _actionTarget$paramet;
|
|
291
300
|
|
|
292
301
|
if ((actionTarget === null || actionTarget === void 0 ? void 0 : actionTarget.isBound) !== true) {
|
|
293
|
-
return true;
|
|
302
|
+
return "true";
|
|
294
303
|
}
|
|
295
304
|
|
|
296
305
|
if (actionTarget !== null && actionTarget !== void 0 && (_actionTarget$paramet = actionTarget.parameters) !== null && _actionTarget$paramet !== void 0 && _actionTarget$paramet.length) {
|
|
297
306
|
var _actionTarget$annotat, _actionTarget$annotat2;
|
|
298
307
|
|
|
299
308
|
var bindingParameterFullName = actionTarget === null || actionTarget === void 0 ? void 0 : actionTarget.parameters[0].fullyQualifiedName,
|
|
300
|
-
operationAvailableExpression =
|
|
309
|
+
operationAvailableExpression = getExpressionFromAnnotation(actionTarget === null || actionTarget === void 0 ? void 0 : (_actionTarget$annotat = actionTarget.annotations.Core) === null || _actionTarget$annotat === void 0 ? void 0 : _actionTarget$annotat.OperationAvailable, [], undefined, function (path) {
|
|
301
310
|
return bindingContextPathVisitor(path, converterContext, bindingParameterFullName);
|
|
302
311
|
});
|
|
303
312
|
|
|
304
313
|
if ((actionTarget === null || actionTarget === void 0 ? void 0 : (_actionTarget$annotat2 = actionTarget.annotations.Core) === null || _actionTarget$annotat2 === void 0 ? void 0 : _actionTarget$annotat2.OperationAvailable) !== undefined) {
|
|
305
|
-
return
|
|
314
|
+
return compileExpression(equal(operationAvailableExpression, true));
|
|
306
315
|
}
|
|
307
316
|
}
|
|
308
317
|
|
|
309
|
-
return true;
|
|
318
|
+
return "true";
|
|
310
319
|
}
|
|
311
320
|
|
|
312
321
|
_exports.getEnabledForAnnotationAction = getEnabledForAnnotationAction;
|
|
@@ -356,4 +365,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
356
365
|
_exports.enableAutoScroll = enableAutoScroll;
|
|
357
366
|
return _exports;
|
|
358
367
|
}, false);
|
|
359
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbi50cyJdLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwicHJlcGFyZU1lbnVBY3Rpb24iLCJhY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiYUhpZGRlbkhlYWRlckFjdGlvbnMiLCJhbGxBY3Rpb25zIiwibWVudUl0ZW1LZXlzIiwiYWN0aW9uS2V5IiwibWFuaWZlc3RBY3Rpb24iLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIk1lbnUiLCJtZW51SXRlbXMiLCJtZW51VmlzaWJsZSIsIl9tZW51SXRlbUtleXMiLCJtZW51IiwibWFwIiwibWVudUtleSIsImFjdGlvbiIsImZpbmQiLCJrZXkiLCJlbmFibGVkIiwiY29tbWFuZCIsInZpc2libGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJoaWRkZW5BY3Rpb24iLCJjb21waWxlQmluZGluZyIsIm9yIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJwdXNoIiwibGVuZ3RoIiwiZm9yRWFjaCIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJvTWVudUl0ZW1LZXlzIiwicmVkdWNlIiwiaXRlbSIsImZpbHRlciIsIl9nZXRNYW5pZmVzdEVuYWJsZWQiLCJpc0Fubm90YXRpb25BY3Rpb24iLCJjb252ZXJ0ZXJDb250ZXh0IiwidW5kZWZpbmVkIiwiZ2V0TWFuaWZlc3RBY3Rpb25FbmFibGVtZW50IiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0QWN0aW9ucyIsIm5hdmlnYXRpb25TZXR0aW5ncyIsImNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIiwiZmFjZXROYW1lIiwibGFzdERvdEluZGV4IiwicHJlc3MiLCJsYXN0SW5kZXhPZiIsInNvbWUiLCJpZCIsIkN1c3RvbUFjdGlvbklEIiwiaGFuZGxlck1vZHVsZSIsInN1YnN0cmluZyIsInJlcGxhY2UiLCJoYW5kbGVyTWV0aG9kIiwidGV4dCIsIm5vV3JhcCIsIl9fbm9XcmFwIiwicmVwbGFjZVNwZWNpYWxDaGFycyIsImVuYWJsZU9uU2VsZWN0IiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwicG9zaXRpb24iLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnQiLCJBZnRlciIsImlzTmF2aWdhYmxlIiwiaXNBY3Rpb25OYXZpZ2FibGUiLCJyZXF1aXJlc1NlbGVjdGlvbiIsImVuYWJsZUF1dG9TY3JvbGwiLCJpbmxpbmUiLCJEZWZhdWx0IiwicmVzb2x2ZWRCaW5kaW5nIiwicmVzdWx0IiwiaXNDb25zdGFudCIsInZhbHVlIiwiX3R5cGUiLCJtZXRob2RQYXRoIiwiZm9ybWF0UmVzdWx0IiwiYmluZGluZ0V4cHJlc3Npb24iLCJmcG1Gb3JtYXR0ZXIiLCJjdXN0b21Jc0VuYWJsZWRDaGVjayIsImdldEVudGl0eVR5cGUiLCJpZkVsc2UiLCJhbmQiLCJncmVhdGVyT3JFcXVhbCIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uIiwiYWN0aW9uVGFyZ2V0IiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJhbm5vdGF0aW9ucyIsIkNvcmUiLCJPcGVyYXRpb25BdmFpbGFibGUiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciIsImVxdWFsIiwiZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nIiwiYU1hcHBpbmdzIiwiYVNlbWFudGljT2JqZWN0TWFwcGluZ3MiLCJvTWFwcGluZyIsIm9TT01hcHBpbmciLCJMb2NhbFByb3BlcnR5IiwiU2VtYW50aWNPYmplY3RQcm9wZXJ0eSIsImJJc05hdmlnYXRpb25Db25maWd1cmVkIiwiZGV0YWlsT3JEaXNwbGF5IiwiZGV0YWlsIiwiZGlzcGxheSIsInJvdXRlIiwiYWZ0ZXJFeGVjdXRp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RSwwQkFBSixFQUFnQztBQUMvQixVQUFNa0UsZUFBZSxHQUFHbkUsa0JBQWtCLEtBQUtBLGtCQUFrQixDQUFDb0UsTUFBbkIsSUFBNkJwRSxrQkFBa0IsQ0FBQ3FFLE9BQXJELENBQTFDO0FBQ0FILE1BQUFBLHVCQUF1QixHQUFHQyxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLElBQUFBLGVBQWUsQ0FBRUcsS0FBakIsR0FBeUIsSUFBekIsR0FBZ0MsS0FBMUQ7QUFDQSxLQUxTLENBTVY7OztBQUNBLFFBQ0VqRyxNQUFNLElBQ05BLE1BQU0sQ0FBQ2tHLGNBRFAsS0FFQywwQkFBQWxHLE1BQU0sQ0FBQ2tHLGNBQVAsZ0ZBQXVCQyxrQkFBdkIsTUFBOEMsS0FBOUMsSUFBdUQsMkJBQUFuRyxNQUFNLENBQUNrRyxjQUFQLGtGQUF1QjNDLGdCQUF2QixNQUE0QyxJQUZwRyxDQUFELElBR0EsQ0FBQ3NDLHVCQUpGLEVBS0U7QUFDRCxhQUFPLEtBQVA7QUFDQTs7QUFDRCxXQUFPLElBQVA7QUFDQTs7OztBQUVNLFdBQVN0QyxnQkFBVCxDQUEwQnZELE1BQTFCLEVBQTJEO0FBQUE7O0FBQ2pFLFdBQU8sQ0FBQUEsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixzQ0FBQUEsTUFBTSxDQUFFa0csY0FBUixrRkFBd0IzQyxnQkFBeEIsTUFBNkMsSUFBcEQ7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBDb25maWd1cmFibGVPYmplY3QsIEN1c3RvbUVsZW1lbnQsIFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBDdXN0b21BY3Rpb25JRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB7IEFjdGlvblR5cGUsIE1hbmlmZXN0QWN0aW9uLCBNYW5pZmVzdFRhYmxlQ29sdW1uLCBOYXZpZ2F0aW9uU2V0dGluZ3NDb25maWd1cmF0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IGZwbUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GUE1Gb3JtYXR0ZXJcIjtcbmltcG9ydCB7XG5cdGFuZCxcblx0YW5ub3RhdGlvbkV4cHJlc3Npb24sXG5cdGJpbmRpbmdFeHByZXNzaW9uLFxuXHRCaW5kaW5nRXhwcmVzc2lvbixcblx0QmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uLFxuXHRjb21waWxlQmluZGluZyxcblx0ZXF1YWwsXG5cdGZvcm1hdFJlc3VsdCxcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0b3IsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyByZXBsYWNlU3BlY2lhbENoYXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCIuLi8uLi9Db252ZXJ0ZXJDb250ZXh0XCI7XG5cbmV4cG9ydCBlbnVtIEJ1dHRvblR5cGUge1xuXHRBY2NlcHQgPSBcIkFjY2VwdFwiLFxuXHRBdHRlbnRpb24gPSBcIkF0dGVudGlvblwiLFxuXHRCYWNrID0gXCJCYWNrXCIsXG5cdENyaXRpY2FsID0gXCJDcml0aWNhbFwiLFxuXHREZWZhdWx0ID0gXCJEZWZhdWx0XCIsXG5cdEVtcGhhc2l6ZWQgPSBcIkVtcGhhc2l6ZWRcIixcblx0R2hvc3QgPSBcIkdob3N0XCIsXG5cdE5lZ2F0aXZlID0gXCJOZWdhdGl2ZVwiLFxuXHROZXV0cmFsID0gXCJOZXV0cmFsXCIsXG5cdFJlamVjdCA9IFwiUmVqZWN0XCIsXG5cdFN1Y2Nlc3MgPSBcIlN1Y2Nlc3NcIixcblx0VHJhbnNwYXJlbnQgPSBcIlRyYW5zcGFyZW50XCIsXG5cdFVuc3R5bGVkID0gXCJVbnN0eWxlZFwiLFxuXHRVcCA9IFwiVXBcIlxufVxuXG5leHBvcnQgdHlwZSBCYXNlQWN0aW9uID0gQ29uZmlndXJhYmxlT2JqZWN0ICYge1xuXHRpZD86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0dHlwZT86IEFjdGlvblR5cGU7XG5cdHByZXNzPzogc3RyaW5nO1xuXHRlbmFibGVkPzogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj47XG5cdHZpc2libGU/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0ZW5hYmxlT25TZWxlY3Q/OiBzdHJpbmc7XG5cdGFubm90YXRpb25QYXRoPzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWVzRXh0ZW5zaW9uRnVuY3Rpb24/OiBzdHJpbmc7XG5cdGlzTmF2aWdhYmxlPzogYm9vbGVhbjtcblx0ZW5hYmxlQXV0b1Njcm9sbD86IGJvb2xlYW47XG5cdHJlcXVpcmVzRGlhbG9nPzogc3RyaW5nO1xuXHRiaW5kaW5nPzogc3RyaW5nO1xuXHRidXR0b25UeXBlPzogQnV0dG9uVHlwZS5HaG9zdCB8IEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQgfCBzdHJpbmc7XG5cdHBhcmVudEVudGl0eURlbGV0ZUVuYWJsZWQ/OiBCaW5kaW5nRXhwcmVzc2lvbjxib29sZWFuPjtcblx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRmYWNldE5hbWU/OiBzdHJpbmc7XG5cdGNvbW1hbmQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgdHlwZSBBbm5vdGF0aW9uQWN0aW9uID0gQmFzZUFjdGlvbiAmIHtcblx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24gfCBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbjtcblx0YW5ub3RhdGlvblBhdGg6IHN0cmluZztcblx0aWQ/OiBzdHJpbmc7XG5cdGN1c3RvbURhdGE/OiBzdHJpbmc7XG59O1xuXG4vKipcbiAqIERlZmluaXRpb24gZm9yIGN1c3RvbSBhY3Rpb25zXG4gKlxuICogQHR5cGVkZWYgQ3VzdG9tQWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIEN1c3RvbUFjdGlvbiA9IEN1c3RvbUVsZW1lbnQ8XG5cdEJhc2VBY3Rpb24gJiB7XG5cdFx0dHlwZT86IEFjdGlvblR5cGUuRGVmYXVsdCB8IEFjdGlvblR5cGUuTWVudTtcblx0XHRoYW5kbGVyTWV0aG9kPzogc3RyaW5nO1xuXHRcdGhhbmRsZXJNb2R1bGU/OiBzdHJpbmc7XG5cdFx0bWVudT86IChzdHJpbmcgfCBDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdO1xuXHRcdG5vV3JhcD86IGJvb2xlYW47IC8vIEluZGljYXRlcyB0aGF0IHdlIHdhbnQgdG8gYXZvaWQgdGhlIHdyYXBwaW5nIGZyb20gdGhlIEZQTUhlbHBlclxuXHRcdHJlcXVpcmVzU2VsZWN0aW9uPzogYm9vbGVhbjtcblx0fVxuPjtcblxuLy8gUmV1c2Ugb2YgQ29uZmlndXJhYmxlT2JqZWN0IGFuZCBDdXN0b21FbGVtZW50IGlzIGRvbmUgZm9yIG9yZGVyaW5nXG5leHBvcnQgdHlwZSBDb252ZXJ0ZXJBY3Rpb24gPSBBbm5vdGF0aW9uQWN0aW9uIHwgQ3VzdG9tQWN0aW9uO1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIG1lbnUgYWN0aW9uIGZyb20gbWFuaWZlc3QgYWN0aW9ucy5cbiAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPn0gYWN0aW9ucyBUaGUgbWFuaWZlc3QgZGVmaW5pdGlvblxuICogQHBhcmFtIHtCYXNlQWN0aW9uW119IGFBbm5vdGF0aW9uQWN0aW9ucyBUaGUgYW5ub3RhdGlvbiBhY3Rpb25zIGRlZmluaXRpb25cbiAqIEBwYXJhbSBhSGlkZGVuSGVhZGVyQWN0aW9uc1xuICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj59IFRoZSBhY3Rpb25zIGZyb20gdGhlIG1hbmlmZXN0IGFuZCB0aGUgbWVudSBvcHRpb24gdGhhdCB3ZXJlIGFkZGVkXG4gKi9cbmZ1bmN0aW9uIHByZXBhcmVNZW51QWN0aW9uKFxuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+LFxuXHRhQW5ub3RhdGlvbkFjdGlvbnM6IEJhc2VBY3Rpb25bXSxcblx0YUhpZGRlbkhlYWRlckFjdGlvbnM6IEJhc2VBY3Rpb25bXVxuKTogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiB7XG5cdGNvbnN0IGFsbEFjdGlvbnM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4gPSB7fTtcblx0bGV0IG1lbnVJdGVtS2V5czogc3RyaW5nW10gfCB1bmRlZmluZWQgPSBbXTtcblxuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBhY3Rpb25zKSB7XG5cdFx0Y29uc3QgbWFuaWZlc3RBY3Rpb246IEN1c3RvbUFjdGlvbiA9IGFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRpZiAobWFuaWZlc3RBY3Rpb24udHlwZSA9PT0gQWN0aW9uVHlwZS5NZW51KSB7XG5cdFx0XHRjb25zdCBtZW51SXRlbXM6IChDdXN0b21BY3Rpb24gfCBCYXNlQWN0aW9uKVtdID0gW107XG5cdFx0XHRsZXQgbWVudVZpc2libGU6IGFueSA9IGZhbHNlO1xuXHRcdFx0bGV0IF9tZW51SXRlbUtleXMgPVxuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5tZW51Py5tYXAoKG1lbnVLZXk6IHN0cmluZyB8IEN1c3RvbUFjdGlvbikgPT4ge1xuXHRcdFx0XHRcdGxldCBhY3Rpb246IEJhc2VBY3Rpb24gfCBDdXN0b21BY3Rpb24gfCB1bmRlZmluZWQgPSBhQW5ub3RhdGlvbkFjdGlvbnMuZmluZChcblx0XHRcdFx0XHRcdChhY3Rpb246IEJhc2VBY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IG1lbnVLZXlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdGlmICghYWN0aW9uKSB7XG5cdFx0XHRcdFx0XHRhY3Rpb24gPSBhY3Rpb25zW21lbnVLZXkgYXMgc3RyaW5nXTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly9jaGVjayBpZiBcImVuYWJsZWRcIiBpcyBvdmVyd3JpdHRlbiB2aWEgYSBtYW5pZmVzdCBlbnRyeVxuXHRcdFx0XHRcdFx0Y29uc3QgZW5hYmxlZDogQmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj4gfCB1bmRlZmluZWQgPSBhY3Rpb25zW2FjdGlvbi5rZXldPy5lbmFibGVkO1xuXHRcdFx0XHRcdFx0aWYgKGVuYWJsZWQpIHtcblx0XHRcdFx0XHRcdFx0YWN0aW9uLmVuYWJsZWQgPSBlbmFibGVkO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0YWN0aW9uLmNvbW1hbmQgPSBhY3Rpb25zW2FjdGlvbi5rZXldPy5jb21tYW5kO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdChhY3Rpb24/LnZpc2libGUgfHxcblx0XHRcdFx0XHRcdFx0YWN0aW9uPy50eXBlID09PSBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbiB8fFxuXHRcdFx0XHRcdFx0XHRhY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uKSAmJlxuXHRcdFx0XHRcdFx0IWFIaWRkZW5IZWFkZXJBY3Rpb25zLmZpbmQoKGhpZGRlbkFjdGlvbikgPT4gaGlkZGVuQWN0aW9uLmtleSA9PT0gbWVudUtleSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdG1lbnVWaXNpYmxlID0gY29tcGlsZUJpbmRpbmcoXG5cdFx0XHRcdFx0XHRcdG9yKHJlc29sdmVCaW5kaW5nU3RyaW5nKChhY3Rpb24gYXMgYW55KS52aXNpYmxlLCBcImJvb2xlYW5cIiksIHJlc29sdmVCaW5kaW5nU3RyaW5nKG1lbnVWaXNpYmxlLCBcImJvb2xlYW5cIikpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0bWVudUl0ZW1zLnB1c2goYWN0aW9uKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRyZXR1cm4gbWVudUtleSBhcyBzdHJpbmc7XG5cdFx0XHRcdH0pID8/IFtdO1xuXG5cdFx0XHQvLyBTaG93IG1lbnUgYnV0dG9uIGlmIGl0IGhhcyBvbmUgb3IgbW9yZSB0aGVuIDEgaXRlbXMgdmlzaWJsZVxuXHRcdFx0aWYgKG1lbnVJdGVtcy5sZW5ndGgpIHtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9IG1lbnVWaXNpYmxlO1xuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi5tZW51ID0gbWVudUl0ZW1zO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0X21lbnVJdGVtS2V5cyA9IFthY3Rpb25LZXldO1xuXHRcdFx0fVxuXG5cdFx0XHRtZW51SXRlbUtleXMgPSBbLi4ubWVudUl0ZW1LZXlzLCAuLi5fbWVudUl0ZW1LZXlzXTtcblx0XHR9XG5cdFx0aWYgKGFIaWRkZW5IZWFkZXJBY3Rpb25zLmZpbmQoKGhpZGRlbkFjdGlvbikgPT4gaGlkZGVuQWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSkge1xuXHRcdFx0bWFuaWZlc3RBY3Rpb24udmlzaWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0XHRhbGxBY3Rpb25zW2FjdGlvbktleV0gPSBtYW5pZmVzdEFjdGlvbjtcblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0bWVudUl0ZW1LZXlzPy5mb3JFYWNoKChhY3Rpb25LZXk6IHN0cmluZykgPT4gZGVsZXRlIGFsbEFjdGlvbnNbYWN0aW9uS2V5XSk7XG5cdHJldHVybiBhbGxBY3Rpb25zO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyA9IChhY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBCYXNlQWN0aW9uW10gPT4ge1xuXHRsZXQgb01lbnVJdGVtS2V5czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24/Lm1lbnU/Lmxlbmd0aCkge1xuXHRcdFx0b01lbnVJdGVtS2V5cyA9IGFjdGlvbi5tZW51LnJlZHVjZSgoaXRlbSwgeyBrZXkgfTogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgJiYgIWl0ZW1ba2V5XSkge1xuXHRcdFx0XHRcdGl0ZW1ba2V5XSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9LCBvTWVudUl0ZW1LZXlzKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIW9NZW51SXRlbUtleXNbYWN0aW9uLmtleV0pO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWN0aW9uIGRlZmF1bHQgdmFsdWUgYmFzZWQgb24gaXRzIGtpbmQuXG4gKlxuICogRGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZSBmb3IgY3VzdG9tIGFjdGlvbnMgaWYgbm90IG92ZXJ3cml0dGVuIGluIG1hbmlmZXN0LlxuICogQHBhcmFtIHtNYW5pZmVzdEFjdGlvbn0gbWFuaWZlc3RBY3Rpb24gVGhlIGFjdGlvbiBjb25maWd1cmVkIGluIHRoZSBtYW5pZmVzdFxuICogQHBhcmFtIHtib29sZWFufSBpc0Fubm90YXRpb25BY3Rpb24gV2hldGhlciB0aGUgYWN0aW9uLCBkZWZpbmVkIGluIG1hbmlmZXN0LCBjb3JyZXNwb25kcyB0byBhbiBleGlzdGluZyBhbm5vdGF0aW9uIGFjdGlvbi5cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyB8IGJvb2xlYW59IERldGVybWluZWQgcHJvcGVydHkgdmFsdWUgZm9yIHRoZSBjb2x1bW5cbiAqL1xuY29uc3QgX2dldE1hbmlmZXN0RW5hYmxlZCA9IGZ1bmN0aW9uIChcblx0bWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLFxuXHRpc0Fubm90YXRpb25BY3Rpb246IGJvb2xlYW4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEJpbmRpbmdFeHByZXNzaW9uPHN0cmluZz4gfCBzdHJpbmcgfCBib29sZWFuIHtcblx0aWYgKGlzQW5ub3RhdGlvbkFjdGlvbiAmJiBtYW5pZmVzdEFjdGlvbi5lbmFibGVkID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBJZiBhbm5vdGF0aW9uIGFjdGlvbiBoYXMgbm8gcHJvcGVydHkgZGVmaW5lZCBpbiBtYW5pZmVzdCxcblx0XHQvLyBkbyBub3Qgb3ZlcndyaXRlIGl0IHdpdGggbWFuaWZlc3QgYWN0aW9uJ3MgZGVmYXVsdCB2YWx1ZS5cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdC8vIFJldHVybiB3aGF0IGlzIGRlZmluZWQgaW4gbWFuaWZlc3QuXG5cdHJldHVybiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSBhY3Rpb24gY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgbWFuaWZlc3Qgc2V0dGluZ3MuXG4gKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIE1hbmlmZXN0QWN0aW9uPiB8IHVuZGVmaW5lZH0gbWFuaWZlc3RBY3Rpb25zIFRoZSBtYW5pZmVzdCBhY3Rpb25zXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSB7QmFzZUFjdGlvbltdfSBhQW5ub3RhdGlvbkFjdGlvbnMgVGhlIGFubm90YXRpb24gYWN0aW9ucyBkZWZpbml0aW9uXG4gKiBAcGFyYW0ge05hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb259IG5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5nc1xuICogQHBhcmFtIHtib29sZWFufSBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyBUaGUgbmF2aWdhdGlvbiBzZXR0aW5ncyB0byBiZSBjb25zaWRlcmVkXG4gKiBAcGFyYW0ge0Jhc2VBY3Rpb25bXX0gYUhpZGRlbkhlYWRlckFjdGlvbnMgVGhlIGhpZGRlbiBoZWFkZXIgYWN0aW9uc1xuICogQHBhcmFtIHtzdHJpbmd9IGZhY2V0TmFtZSBUaGUgZmFjZXQgd2hlcmUgYW4gYWN0aW9uIGlzIGRpc3BsYXllZCBpZiBpdCBpcyBpbmxpbmVcbiAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+fSBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFBbm5vdGF0aW9uQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0bmF2aWdhdGlvblNldHRpbmdzPzogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbixcblx0Y29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3M/OiBib29sZWFuLFxuXHRhSGlkZGVuSGVhZGVyQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXROYW1lPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+IHtcblx0Y29uc3QgYWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRjb25zdCBtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24gPSBtYW5pZmVzdEFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRjb25zdCBsYXN0RG90SW5kZXggPSBtYW5pZmVzdEFjdGlvbi5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpIHx8IC0xO1xuXG5cdFx0Ly8gVG8gaWRlbnRpZnkgdGhlIGFubm90YXRpb24gYWN0aW9uIHByb3BlcnR5IG92ZXJ3cml0ZSB2aWEgbWFuaWZlc3QgdXNlLWNhc2UuXG5cdFx0Y29uc3QgaXNBbm5vdGF0aW9uQWN0aW9uID0gYUFubm90YXRpb25BY3Rpb25zPy5zb21lKChhY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IGFjdGlvbktleSkgfHwgZmFsc2U7XG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZSkge1xuXHRcdFx0ZmFjZXROYW1lID0gbWFuaWZlc3RBY3Rpb24uZmFjZXROYW1lO1xuXHRcdH1cblxuXHRcdGFjdGlvbnNbYWN0aW9uS2V5XSA9IHtcblx0XHRcdGlkOiBhQW5ub3RhdGlvbkFjdGlvbnM/LnNvbWUoKGFjdGlvbikgPT4gYWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSA/IGFjdGlvbktleSA6IEN1c3RvbUFjdGlvbklEKGFjdGlvbktleSksXG5cdFx0XHR2aXNpYmxlOiBtYW5pZmVzdEFjdGlvbi52aXNpYmxlID09PSB1bmRlZmluZWQgPyBcInRydWVcIiA6IG1hbmlmZXN0QWN0aW9uLnZpc2libGUsXG5cdFx0XHRlbmFibGVkOiBfZ2V0TWFuaWZlc3RFbmFibGVkKG1hbmlmZXN0QWN0aW9uLCBpc0Fubm90YXRpb25BY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0aGFuZGxlck1vZHVsZTogbWFuaWZlc3RBY3Rpb24ucHJlc3MgJiYgbWFuaWZlc3RBY3Rpb24ucHJlc3Muc3Vic3RyaW5nKDAsIGxhc3REb3RJbmRleCkucmVwbGFjZSgvXFwuL2dpLCBcIi9cIiksXG5cdFx0XHRoYW5kbGVyTWV0aG9kOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyAmJiBtYW5pZmVzdEFjdGlvbi5wcmVzcy5zdWJzdHJpbmcobGFzdERvdEluZGV4ICsgMSksXG5cdFx0XHRwcmVzczogbWFuaWZlc3RBY3Rpb24ucHJlc3MsXG5cdFx0XHR0ZXh0OiBtYW5pZmVzdEFjdGlvbi50ZXh0LFxuXHRcdFx0bm9XcmFwOiBtYW5pZmVzdEFjdGlvbi5fX25vV3JhcCxcblx0XHRcdGtleTogcmVwbGFjZVNwZWNpYWxDaGFycyhhY3Rpb25LZXkpLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IG1hbmlmZXN0QWN0aW9uLmVuYWJsZU9uU2VsZWN0LFxuXHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBtYW5pZmVzdEFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb24sXG5cdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRhbmNob3I6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uPy5hbmNob3IsXG5cdFx0XHRcdHBsYWNlbWVudDogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IFBsYWNlbWVudC5BZnRlciA6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uLnBsYWNlbWVudFxuXHRcdFx0fSxcblx0XHRcdGlzTmF2aWdhYmxlOiBpc0FjdGlvbk5hdmlnYWJsZShtYW5pZmVzdEFjdGlvbiwgbmF2aWdhdGlvblNldHRpbmdzLCBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyksXG5cdFx0XHRjb21tYW5kOiBtYW5pZmVzdEFjdGlvbi5jb21tYW5kLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uLFxuXHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogZW5hYmxlQXV0b1Njcm9sbChtYW5pZmVzdEFjdGlvbiksXG5cdFx0XHRtZW51OiBtYW5pZmVzdEFjdGlvbi5tZW51ID8/IFtdLFxuXHRcdFx0ZmFjZXROYW1lOiBtYW5pZmVzdEFjdGlvbi5pbmxpbmUgPyBmYWNldE5hbWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHRcdC8vIERvIG5vdCBvdmVycmlkZSB0aGUgJ3R5cGUnIGdpdmVuIGluIGFuIGFubm90YXRpb24gYWN0aW9uXG5cdFx0aWYgKCFpc0Fubm90YXRpb25BY3Rpb24pIHtcblx0XHRcdGFjdGlvbnNbYWN0aW9uS2V5XS50eXBlID0gbWFuaWZlc3RBY3Rpb24ubWVudSA/IEFjdGlvblR5cGUuTWVudSA6IEFjdGlvblR5cGUuRGVmYXVsdDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHByZXBhcmVNZW51QWN0aW9uKGFjdGlvbnMsIGFBbm5vdGF0aW9uQWN0aW9ucyA/PyBbXSwgYUhpZGRlbkhlYWRlckFjdGlvbnMgPz8gW10pO1xufVxuXG5mdW5jdGlvbiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KSB7XG5cdGNvbnN0IHJlc29sdmVkQmluZGluZyA9IHJlc29sdmVCaW5kaW5nU3RyaW5nKG1hbmlmZXN0QWN0aW9uLmVuYWJsZWQgYXMgc3RyaW5nLCBcImJvb2xlYW5cIik7XG5cdGxldCByZXN1bHQ6IGFueTtcblx0aWYgKGlzQ29uc3RhbnQocmVzb2x2ZWRCaW5kaW5nKSAmJiByZXNvbHZlZEJpbmRpbmcudmFsdWUgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIE5vIGVuYWJsZWQgcHJvcGVydHkgY29uZmlndXJlZCBpbiBtYW5pZmVzdCBmb3IgdGhlIGN1c3RvbSBhY3Rpb24gLS0+IGVuYWJsZSBjdXN0b20gYWN0aW9uXG5cdFx0cmVzdWx0ID0gdHJ1ZTtcblx0fSBlbHNlIGlmIChpc0NvbnN0YW50KHJlc29sdmVkQmluZGluZykgJiYgdHlwZW9mIHJlc29sdmVkQmluZGluZy52YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHQvLyB0cnVlIC8gZmFsc2Vcblx0XHRyZXN1bHQgPSByZXNvbHZlZEJpbmRpbmcudmFsdWU7XG5cdH0gZWxzZSBpZiAocmVzb2x2ZWRCaW5kaW5nLl90eXBlICE9PSBcIkVtYmVkZGVkQmluZGluZ1wiICYmIHJlc29sdmVkQmluZGluZy5fdHlwZSAhPT0gXCJFbWJlZGRlZEV4cHJlc3Npb25CaW5kaW5nXCIpIHtcblx0XHQvLyBUaGVuIGl0J3MgYSBtb2R1bGUtbWV0aG9kIHJlZmVyZW5jZSBcInNhcC54eHgueXl5LmRvU29tZXRoaW5nXCJcblx0XHRjb25zdCBtZXRob2RQYXRoID0gcmVzb2x2ZWRCaW5kaW5nLnZhbHVlIGFzIHN0cmluZztcblx0XHRyZXN1bHQgPSBmb3JtYXRSZXN1bHQoXG5cdFx0XHRbYmluZGluZ0V4cHJlc3Npb24oXCIvXCIsIFwiJHZpZXdcIiksIG1ldGhvZFBhdGgsIGJpbmRpbmdFeHByZXNzaW9uKFwic2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpXSxcblx0XHRcdGZwbUZvcm1hdHRlci5jdXN0b21Jc0VuYWJsZWRDaGVjayBhcyBhbnksXG5cdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gdGhlbiBpdCdzIGEgYmluZGluZ1xuXHRcdHJlc3VsdCA9IHJlc29sdmVkQmluZGluZztcblx0fVxuXG5cdC8vIENvbnNpZGVyIHJlcXVpcmVzU2VsZWN0aW9uIHByb3BlcnR5IHRvIGluY2x1ZGUgc2VsZWN0ZWRDb250ZXh0cyBpbiB0aGUgYmluZGluZyBleHByZXNzaW9uXG5cdHJldHVybiBjb21waWxlQmluZGluZyhcblx0XHRpZkVsc2UoXG5cdFx0XHRtYW5pZmVzdEFjdGlvbi5yZXF1aXJlc1NlbGVjdGlvbiA9PT0gdHJ1ZSxcblx0XHRcdGFuZChncmVhdGVyT3JFcXVhbChiaW5kaW5nRXhwcmVzc2lvbihcIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpLCAxKSwgcmVzdWx0KSxcblx0XHRcdHJlc3VsdFxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBNZXRob2QgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZSBvZiB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIGFuIGFubm90YXRpb24tYmFzZWQgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Q29udmVydGVyQ29udGV4dH0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0ge0FjdGlvbn0gYWN0aW9uVGFyZ2V0IFRoZSBpbnN0YW5jZSBvZiB0aGUgYWN0aW9uXG4gKiBAcmV0dXJucyB7QmluZGluZ0V4cHJlc3Npb248Ym9vbGVhbj59IFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlIGFjdGlvbiBidXR0b24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbihcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0YWN0aW9uVGFyZ2V0OiBBY3Rpb24gfCB1bmRlZmluZWRcbik6IEJpbmRpbmdFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0aWYgKGFjdGlvblRhcmdldD8uaXNCb3VuZCAhPT0gdHJ1ZSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGlmIChhY3Rpb25UYXJnZXQ/LnBhcmFtZXRlcnM/Lmxlbmd0aCkge1xuXHRcdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSA9IGFjdGlvblRhcmdldD8ucGFyYW1ldGVyc1swXS5mdWxseVF1YWxpZmllZE5hbWUsXG5cdFx0XHRvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uID0gYW5ub3RhdGlvbkV4cHJlc3Npb24oXG5cdFx0XHRcdGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlLFxuXHRcdFx0XHRbXSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHQocGF0aDogc3RyaW5nKSA9PiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0XHRcdCkgYXMgQmluZGluZ0V4cHJlc3Npb25FeHByZXNzaW9uPGJvb2xlYW4+O1xuXHRcdGlmIChhY3Rpb25UYXJnZXQ/LmFubm90YXRpb25zLkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoZXF1YWwob3BlcmF0aW9uQXZhaWxhYmxlRXhwcmVzc2lvbiwgdHJ1ZSkpO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhhTWFwcGluZ3M6IGFueVtdKTogYW55W10ge1xuXHRjb25zdCBhU2VtYW50aWNPYmplY3RNYXBwaW5nczogYW55W10gPSBbXTtcblx0YU1hcHBpbmdzLmZvckVhY2goKG9NYXBwaW5nKSA9PiB7XG5cdFx0Y29uc3Qgb1NPTWFwcGluZyA9IHtcblx0XHRcdFwiTG9jYWxQcm9wZXJ0eVwiOiB7XG5cdFx0XHRcdFwiJFByb3BlcnR5UGF0aFwiOiBvTWFwcGluZy5Mb2NhbFByb3BlcnR5LnZhbHVlXG5cdFx0XHR9LFxuXHRcdFx0XCJTZW1hbnRpY09iamVjdFByb3BlcnR5XCI6IG9NYXBwaW5nLlNlbWFudGljT2JqZWN0UHJvcGVydHlcblx0XHR9O1xuXHRcdGFTZW1hbnRpY09iamVjdE1hcHBpbmdzLnB1c2gob1NPTWFwcGluZyk7XG5cdH0pO1xuXHRyZXR1cm4gYVNlbWFudGljT2JqZWN0TWFwcGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbk5hdmlnYWJsZShcblx0YWN0aW9uOiBNYW5pZmVzdEFjdGlvbiB8IE1hbmlmZXN0VGFibGVDb2x1bW4sXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZDogYm9vbGVhbiA9IHRydWU7XG5cdGlmIChjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncykge1xuXHRcdGNvbnN0IGRldGFpbE9yRGlzcGxheSA9IG5hdmlnYXRpb25TZXR0aW5ncyAmJiAobmF2aWdhdGlvblNldHRpbmdzLmRldGFpbCB8fCBuYXZpZ2F0aW9uU2V0dGluZ3MuZGlzcGxheSk7XG5cdFx0YklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSBkZXRhaWxPckRpc3BsYXk/LnJvdXRlID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cdC8vIHdoZW4gZW5hYmxlQXV0b1Njcm9sbCBpcyB0cnVlIHRoZSBuYXZpZ2F0ZVRvSW5zdGFuY2UgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRpZiAoXG5cdFx0KGFjdGlvbiAmJlxuXHRcdFx0YWN0aW9uLmFmdGVyRXhlY3V0aW9uICYmXG5cdFx0XHQoYWN0aW9uLmFmdGVyRXhlY3V0aW9uPy5uYXZpZ2F0ZVRvSW5zdGFuY2UgPT09IGZhbHNlIHx8IGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZSkpIHx8XG5cdFx0IWJJc05hdmlnYXRpb25Db25maWd1cmVkXG5cdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUF1dG9TY3JvbGwoYWN0aW9uOiBNYW5pZmVzdEFjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYWN0aW9uPy5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZTtcbn1cbiJdfQ==
|
|
368
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFjdGlvbi50cyJdLCJuYW1lcyI6WyJCdXR0b25UeXBlIiwicHJlcGFyZU1lbnVBY3Rpb24iLCJhY3Rpb25zIiwiYUFubm90YXRpb25BY3Rpb25zIiwiYUhpZGRlbkhlYWRlckFjdGlvbnMiLCJhbGxBY3Rpb25zIiwibWVudUl0ZW1LZXlzIiwiYWN0aW9uS2V5IiwibWFuaWZlc3RBY3Rpb24iLCJ0eXBlIiwiQWN0aW9uVHlwZSIsIk1lbnUiLCJtZW51SXRlbXMiLCJtZW51VmlzaWJsZSIsIl9tZW51SXRlbUtleXMiLCJtZW51IiwibWFwIiwibWVudUtleSIsImFjdGlvbiIsImZpbmQiLCJrZXkiLCJlbmFibGVkIiwicHJvcCIsInZpc2libGUiLCJEYXRhRmllbGRGb3JBY3Rpb24iLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJoaWRkZW5BY3Rpb24iLCJjb21waWxlRXhwcmVzc2lvbiIsIm9yIiwicmVzb2x2ZUJpbmRpbmdTdHJpbmciLCJwdXNoIiwibGVuZ3RoIiwiZm9yRWFjaCIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJvTWVudUl0ZW1LZXlzIiwicmVkdWNlIiwiaXRlbSIsImZpbHRlciIsIl9nZXRNYW5pZmVzdEVuYWJsZWQiLCJpc0Fubm90YXRpb25BY3Rpb24iLCJjb252ZXJ0ZXJDb250ZXh0IiwidW5kZWZpbmVkIiwiZ2V0TWFuaWZlc3RBY3Rpb25FbmFibGVtZW50IiwiZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdCIsIm1hbmlmZXN0QWN0aW9ucyIsIm5hdmlnYXRpb25TZXR0aW5ncyIsImNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzIiwiZmFjZXROYW1lIiwibGFzdERvdEluZGV4IiwicHJlc3MiLCJsYXN0SW5kZXhPZiIsInNvbWUiLCJpZCIsImdldEN1c3RvbUFjdGlvbklEIiwiaGFuZGxlck1vZHVsZSIsInN1YnN0cmluZyIsInJlcGxhY2UiLCJoYW5kbGVyTWV0aG9kIiwidGV4dCIsIm5vV3JhcCIsIl9fbm9XcmFwIiwicmVwbGFjZVNwZWNpYWxDaGFycyIsImVuYWJsZU9uU2VsZWN0IiwiZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uIiwiZGVmYXVsdFZhbHVlc0Z1bmN0aW9uIiwicG9zaXRpb24iLCJhbmNob3IiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnQiLCJBZnRlciIsImlzTmF2aWdhYmxlIiwiaXNBY3Rpb25OYXZpZ2FibGUiLCJjb21tYW5kIiwicmVxdWlyZXNTZWxlY3Rpb24iLCJlbmFibGVBdXRvU2Nyb2xsIiwiaW5saW5lIiwiRGVmYXVsdCIsInJlc29sdmVkQmluZGluZyIsInJlc3VsdCIsImlzQ29uc3RhbnQiLCJ2YWx1ZSIsIl90eXBlIiwibWV0aG9kUGF0aCIsImZvcm1hdFJlc3VsdCIsInBhdGhJbk1vZGVsIiwiZnBtRm9ybWF0dGVyIiwiY3VzdG9tSXNFbmFibGVkQ2hlY2siLCJnZXRFbnRpdHlUeXBlIiwiaWZFbHNlIiwiYW5kIiwiZ3JlYXRlck9yRXF1YWwiLCJnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbiIsImFjdGlvblRhcmdldCIsImlzQm91bmQiLCJwYXJhbWV0ZXJzIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwib3BlcmF0aW9uQXZhaWxhYmxlRXhwcmVzc2lvbiIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiQ29yZSIsIk9wZXJhdGlvbkF2YWlsYWJsZSIsInBhdGgiLCJiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yIiwiZXF1YWwiLCJnZXRTZW1hbnRpY09iamVjdE1hcHBpbmciLCJhTWFwcGluZ3MiLCJhU2VtYW50aWNPYmplY3RNYXBwaW5ncyIsIm9NYXBwaW5nIiwib1NPTWFwcGluZyIsIkxvY2FsUHJvcGVydHkiLCJTZW1hbnRpY09iamVjdFByb3BlcnR5IiwiYklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQiLCJkZXRhaWxPckRpc3BsYXkiLCJkZXRhaWwiLCJkaXNwbGF5Iiwicm91dGUi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MEI0QixRQUFRLENBQUNHO0FBSmpCLE9BQW5CO0FBTUFKLE1BQUFBLHVCQUF1QixDQUFDN0UsSUFBeEIsQ0FBNkIrRSxVQUE3QjtBQUNBLEtBUkQ7QUFTQSxXQUFPRix1QkFBUDtBQUNBOzs7O0FBRU0sV0FBU3BDLGlCQUFULENBQ05yRCxNQURNLEVBRU4yQixrQkFGTSxFQUdOQywwQkFITSxFQUlJO0FBQUE7O0FBQ1YsUUFBSWtFLHVCQUFnQyxHQUFHLElBQXZDOztBQUNBLFFBQUlsRSwwQkFBSixFQUFnQztBQUMvQixVQUFNbUUsZUFBZSxHQUFHcEUsa0JBQWtCLEtBQUtBLGtCQUFrQixDQUFDcUUsTUFBbkIsSUFBNkJyRSxrQkFBa0IsQ0FBQ3NFLE9BQXJELENBQTFDO0FBQ0FILE1BQUFBLHVCQUF1QixHQUFHQyxlQUFlLFNBQWYsSUFBQUEsZUFBZSxXQUFmLElBQUFBLGVBQWUsQ0FBRUcsS0FBakIsR0FBeUIsSUFBekIsR0FBZ0MsS0FBMUQ7QUFDQSxLQUxTLENBTVY7OztBQUNBLFFBQ0VsRyxNQUFNLElBQ05BLE1BQU0sQ0FBQ21HLGNBRFAsS0FFQywwQkFBQW5HLE1BQU0sQ0FBQ21HLGNBQVAsZ0ZBQXVCQyxrQkFBdkIsTUFBOEMsS0FBOUMsSUFBdUQsMkJBQUFwRyxNQUFNLENBQUNtRyxjQUFQLGtGQUF1QjNDLGdCQUF2QixNQUE0QyxJQUZwRyxDQUFELElBR0EsQ0FBQ3NDLHVCQUpGLEVBS0U7QUFDRCxhQUFPLEtBQVA7QUFDQTs7QUFDRCxXQUFPLElBQVA7QUFDQTs7OztBQUVNLFdBQVN0QyxnQkFBVCxDQUEwQnhELE1BQTFCLEVBQTJEO0FBQUE7O0FBQ2pFLFdBQU8sQ0FBQUEsTUFBTSxTQUFOLElBQUFBLE1BQU0sV0FBTixzQ0FBQUEsTUFBTSxDQUFFbUcsY0FBUixrRkFBd0IzQyxnQkFBeEIsTUFBNkMsSUFBcEQ7QUFDQSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDdXN0b21FbGVtZW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IFBsYWNlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRDdXN0b21BY3Rpb25JRCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSURcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RBY3Rpb24sIE1hbmlmZXN0VGFibGVDb2x1bW4sIE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IGZwbUZvcm1hdHRlciBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GUE1Gb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0ZXF1YWwsXG5cdGZvcm1hdFJlc3VsdCxcblx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLFxuXHRncmVhdGVyT3JFcXVhbCxcblx0aWZFbHNlLFxuXHRpc0NvbnN0YW50LFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlc29sdmVCaW5kaW5nU3RyaW5nXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyByZXBsYWNlU3BlY2lhbENoYXJzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcblxuZXhwb3J0IGVudW0gQnV0dG9uVHlwZSB7XG5cdEFjY2VwdCA9IFwiQWNjZXB0XCIsXG5cdEF0dGVudGlvbiA9IFwiQXR0ZW50aW9uXCIsXG5cdEJhY2sgPSBcIkJhY2tcIixcblx0Q3JpdGljYWwgPSBcIkNyaXRpY2FsXCIsXG5cdERlZmF1bHQgPSBcIkRlZmF1bHRcIixcblx0RW1waGFzaXplZCA9IFwiRW1waGFzaXplZFwiLFxuXHRHaG9zdCA9IFwiR2hvc3RcIixcblx0TmVnYXRpdmUgPSBcIk5lZ2F0aXZlXCIsXG5cdE5ldXRyYWwgPSBcIk5ldXRyYWxcIixcblx0UmVqZWN0ID0gXCJSZWplY3RcIixcblx0U3VjY2VzcyA9IFwiU3VjY2Vzc1wiLFxuXHRUcmFuc3BhcmVudCA9IFwiVHJhbnNwYXJlbnRcIixcblx0VW5zdHlsZWQgPSBcIlVuc3R5bGVkXCIsXG5cdFVwID0gXCJVcFwiXG59XG5cbmV4cG9ydCB0eXBlIEJhc2VBY3Rpb24gPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xuXHR0eXBlPzogQWN0aW9uVHlwZTtcblx0cHJlc3M/OiBzdHJpbmc7XG5cdGVuYWJsZWQ/OiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0dmlzaWJsZT86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRlbmFibGVPblNlbGVjdD86IHN0cmluZztcblx0YW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG5cdGRlZmF1bHRWYWx1ZXNFeHRlbnNpb25GdW5jdGlvbj86IHN0cmluZztcblx0aXNOYXZpZ2FibGU/OiBib29sZWFuO1xuXHRlbmFibGVBdXRvU2Nyb2xsPzogYm9vbGVhbjtcblx0cmVxdWlyZXNEaWFsb2c/OiBzdHJpbmc7XG5cdGJpbmRpbmc/OiBzdHJpbmc7XG5cdGJ1dHRvblR5cGU/OiBCdXR0b25UeXBlLkdob3N0IHwgQnV0dG9uVHlwZS5UcmFuc3BhcmVudCB8IHN0cmluZztcblx0cGFyZW50RW50aXR5RGVsZXRlRW5hYmxlZD86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRtZW51PzogKHN0cmluZyB8IEN1c3RvbUFjdGlvbiB8IEJhc2VBY3Rpb24pW107XG5cdGZhY2V0TmFtZT86IHN0cmluZztcblx0Y29tbWFuZD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCB0eXBlIEFubm90YXRpb25BY3Rpb24gPSBCYXNlQWN0aW9uICYge1xuXHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiB8IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHRpZD86IHN0cmluZztcblx0Y3VzdG9tRGF0YT86IHN0cmluZztcbn07XG5cbi8qKlxuICogRGVmaW5pdGlvbiBmb3IgY3VzdG9tIGFjdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBDdXN0b21BY3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgQ3VzdG9tQWN0aW9uID0gQ3VzdG9tRWxlbWVudDxcblx0QmFzZUFjdGlvbiAmIHtcblx0XHR0eXBlPzogQWN0aW9uVHlwZS5EZWZhdWx0IHwgQWN0aW9uVHlwZS5NZW51O1xuXHRcdGhhbmRsZXJNZXRob2Q/OiBzdHJpbmc7XG5cdFx0aGFuZGxlck1vZHVsZT86IHN0cmluZztcblx0XHRtZW51PzogKHN0cmluZyB8IEN1c3RvbUFjdGlvbiB8IEJhc2VBY3Rpb24pW107XG5cdFx0bm9XcmFwPzogYm9vbGVhbjsgLy8gSW5kaWNhdGVzIHRoYXQgd2Ugd2FudCB0byBhdm9pZCB0aGUgd3JhcHBpbmcgZnJvbSB0aGUgRlBNSGVscGVyXG5cdFx0cmVxdWlyZXNTZWxlY3Rpb24/OiBib29sZWFuO1xuXHR9XG4+O1xuXG4vLyBSZXVzZSBvZiBDb25maWd1cmFibGVPYmplY3QgYW5kIEN1c3RvbUVsZW1lbnQgaXMgZG9uZSBmb3Igb3JkZXJpbmdcbmV4cG9ydCB0eXBlIENvbnZlcnRlckFjdGlvbiA9IEFubm90YXRpb25BY3Rpb24gfCBDdXN0b21BY3Rpb247XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgbWVudSBhY3Rpb24gZnJvbSBtYW5pZmVzdCBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25zIFRoZSBtYW5pZmVzdCBkZWZpbml0aW9uXG4gKiBAcGFyYW0gYUFubm90YXRpb25BY3Rpb25zIFRoZSBhbm5vdGF0aW9uIGFjdGlvbnMgZGVmaW5pdGlvblxuICogQHBhcmFtIGFIaWRkZW5IZWFkZXJBY3Rpb25zXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdCBhbmQgdGhlIG1lbnUgb3B0aW9uIHRoYXQgd2VyZSBhZGRlZFxuICovXG5mdW5jdGlvbiBwcmVwYXJlTWVudUFjdGlvbihcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPixcblx0YUFubm90YXRpb25BY3Rpb25zOiBCYXNlQWN0aW9uW10sXG5cdGFIaWRkZW5IZWFkZXJBY3Rpb25zOiBCYXNlQWN0aW9uW11cbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFjdGlvbj4ge1xuXHRjb25zdCBhbGxBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cdGxldCBtZW51SXRlbUtleXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkID0gW107XG5cblx0Zm9yIChjb25zdCBhY3Rpb25LZXkgaW4gYWN0aW9ucykge1xuXHRcdGNvbnN0IG1hbmlmZXN0QWN0aW9uOiBDdXN0b21BY3Rpb24gPSBhY3Rpb25zW2FjdGlvbktleV07XG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLnR5cGUgPT09IEFjdGlvblR5cGUuTWVudSkge1xuXHRcdFx0Y29uc3QgbWVudUl0ZW1zOiAoQ3VzdG9tQWN0aW9uIHwgQmFzZUFjdGlvbilbXSA9IFtdO1xuXHRcdFx0bGV0IG1lbnVWaXNpYmxlOiBhbnkgPSBmYWxzZTtcblx0XHRcdGxldCBfbWVudUl0ZW1LZXlzID1cblx0XHRcdFx0bWFuaWZlc3RBY3Rpb24ubWVudT8ubWFwKChtZW51S2V5OiBzdHJpbmcgfCBDdXN0b21BY3Rpb24pID0+IHtcblx0XHRcdFx0XHRsZXQgYWN0aW9uOiBCYXNlQWN0aW9uIHwgQ3VzdG9tQWN0aW9uIHwgdW5kZWZpbmVkID0gYUFubm90YXRpb25BY3Rpb25zLmZpbmQoXG5cdFx0XHRcdFx0XHQoYWN0aW9uOiBCYXNlQWN0aW9uKSA9PiBhY3Rpb24ua2V5ID09PSBtZW51S2V5XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRpZiAoIWFjdGlvbikge1xuXHRcdFx0XHRcdFx0YWN0aW9uID0gYWN0aW9uc1ttZW51S2V5IGFzIHN0cmluZ107XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vY2hlY2sgaWYgXCJlbmFibGVkXCIgaXMgb3ZlcndyaXR0ZW4gdmlhIGEgbWFuaWZlc3QgZW50cnlcblx0XHRcdFx0XHRcdGNvbnN0IGVuYWJsZWQ6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgdW5kZWZpbmVkID0gYWN0aW9uc1thY3Rpb24ua2V5XT8uZW5hYmxlZDtcblx0XHRcdFx0XHRcdGlmIChlbmFibGVkKSB7XG5cdFx0XHRcdFx0XHRcdGFjdGlvbi5lbmFibGVkID0gZW5hYmxlZDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChhY3Rpb25zW2FjdGlvbi5rZXldKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAoY29uc3QgcHJvcCBpbiBhY3Rpb25zW2FjdGlvbi5rZXldKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCEoYWN0aW9uIGFzIGFueSlbcHJvcF0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdChhY3Rpb24gYXMgYW55KVtwcm9wXSA9IChhY3Rpb25zW2FjdGlvbi5rZXldIGFzIGFueSlbcHJvcF07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0KGFjdGlvbj8udmlzaWJsZSB8fFxuXHRcdFx0XHRcdFx0XHRhY3Rpb24/LnR5cGUgPT09IEFjdGlvblR5cGUuRGF0YUZpZWxkRm9yQWN0aW9uIHx8XG5cdFx0XHRcdFx0XHRcdGFjdGlvbj8udHlwZSA9PT0gQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24pICYmXG5cdFx0XHRcdFx0XHQhYUhpZGRlbkhlYWRlckFjdGlvbnMuZmluZCgoaGlkZGVuQWN0aW9uKSA9PiBoaWRkZW5BY3Rpb24ua2V5ID09PSBtZW51S2V5KVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0bWVudVZpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdFx0b3IocmVzb2x2ZUJpbmRpbmdTdHJpbmcoKGFjdGlvbiBhcyBhbnkpLnZpc2libGUsIFwiYm9vbGVhblwiKSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcobWVudVZpc2libGUsIFwiYm9vbGVhblwiKSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRtZW51SXRlbXMucHVzaChhY3Rpb24pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBtZW51S2V5IGFzIHN0cmluZztcblx0XHRcdFx0fSkgPz8gW107XG5cblx0XHRcdC8vIFNob3cgbWVudSBidXR0b24gaWYgaXQgaGFzIG9uZSBvciBtb3JlIHRoZW4gMSBpdGVtcyB2aXNpYmxlXG5cdFx0XHRpZiAobWVudUl0ZW1zLmxlbmd0aCkge1xuXHRcdFx0XHRtYW5pZmVzdEFjdGlvbi52aXNpYmxlID0gbWVudVZpc2libGU7XG5cdFx0XHRcdG1hbmlmZXN0QWN0aW9uLm1lbnUgPSBtZW51SXRlbXM7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRfbWVudUl0ZW1LZXlzID0gW2FjdGlvbktleV07XG5cdFx0XHR9XG5cblx0XHRcdG1lbnVJdGVtS2V5cyA9IFsuLi5tZW51SXRlbUtleXMsIC4uLl9tZW51SXRlbUtleXNdO1xuXHRcdH1cblx0XHRpZiAoYUhpZGRlbkhlYWRlckFjdGlvbnMuZmluZCgoaGlkZGVuQWN0aW9uKSA9PiBoaWRkZW5BY3Rpb24ua2V5ID09PSBhY3Rpb25LZXkpKSB7XG5cdFx0XHRtYW5pZmVzdEFjdGlvbi52aXNpYmxlID0gXCJmYWxzZVwiO1xuXHRcdH1cblx0XHRhbGxBY3Rpb25zW2FjdGlvbktleV0gPSBtYW5pZmVzdEFjdGlvbjtcblx0fVxuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcblx0bWVudUl0ZW1LZXlzPy5mb3JFYWNoKChhY3Rpb25LZXk6IHN0cmluZykgPT4gZGVsZXRlIGFsbEFjdGlvbnNbYWN0aW9uS2V5XSk7XG5cdHJldHVybiBhbGxBY3Rpb25zO1xufVxuXG5leHBvcnQgY29uc3QgcmVtb3ZlRHVwbGljYXRlQWN0aW9ucyA9IChhY3Rpb25zOiBCYXNlQWN0aW9uW10pOiBCYXNlQWN0aW9uW10gPT4ge1xuXHRsZXQgb01lbnVJdGVtS2V5czogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXHRhY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuXHRcdGlmIChhY3Rpb24/Lm1lbnU/Lmxlbmd0aCkge1xuXHRcdFx0b01lbnVJdGVtS2V5cyA9IGFjdGlvbi5tZW51LnJlZHVjZSgoaXRlbSwgeyBrZXkgfTogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChrZXkgJiYgIWl0ZW1ba2V5XSkge1xuXHRcdFx0XHRcdGl0ZW1ba2V5XSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9LCBvTWVudUl0ZW1LZXlzKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gIW9NZW51SXRlbUtleXNbYWN0aW9uLmtleV0pO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgYW4gYWN0aW9uIGRlZmF1bHQgdmFsdWUgYmFzZWQgb24gaXRzIGtpbmQuXG4gKlxuICogRGVmYXVsdCBwcm9wZXJ0eSB2YWx1ZSBmb3IgY3VzdG9tIGFjdGlvbnMgaWYgbm90IG92ZXJ3cml0dGVuIGluIG1hbmlmZXN0LlxuICpcbiAqIEBwYXJhbSBtYW5pZmVzdEFjdGlvbiBUaGUgYWN0aW9uIGNvbmZpZ3VyZWQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcGFyYW0gaXNBbm5vdGF0aW9uQWN0aW9uIFdoZXRoZXIgdGhlIGFjdGlvbiwgZGVmaW5lZCBpbiBtYW5pZmVzdCwgY29ycmVzcG9uZHMgdG8gYW4gZXhpc3RpbmcgYW5ub3RhdGlvbiBhY3Rpb24uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgRGV0ZXJtaW5lZCBwcm9wZXJ0eSB2YWx1ZSBmb3IgdGhlIGNvbHVtblxuICovXG5jb25zdCBfZ2V0TWFuaWZlc3RFbmFibGVkID0gZnVuY3Rpb24gKFxuXHRtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24sXG5cdGlzQW5ub3RhdGlvbkFjdGlvbjogYm9vbGVhbixcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCB1bmRlZmluZWQge1xuXHRpZiAoaXNBbm5vdGF0aW9uQWN0aW9uICYmIG1hbmlmZXN0QWN0aW9uLmVuYWJsZWQgPT09IHVuZGVmaW5lZCkge1xuXHRcdC8vIElmIGFubm90YXRpb24gYWN0aW9uIGhhcyBubyBwcm9wZXJ0eSBkZWZpbmVkIGluIG1hbmlmZXN0LFxuXHRcdC8vIGRvIG5vdCBvdmVyd3JpdGUgaXQgd2l0aCBtYW5pZmVzdCBhY3Rpb24ncyBkZWZhdWx0IHZhbHVlLlxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Ly8gUmV0dXJuIHdoYXQgaXMgZGVmaW5lZCBpbiBtYW5pZmVzdC5cblx0cmV0dXJuIGdldE1hbmlmZXN0QWN0aW9uRW5hYmxlbWVudChtYW5pZmVzdEFjdGlvbiwgY29udmVydGVyQ29udGV4dCk7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGFjdGlvbiBjb25maWd1cmF0aW9uIGJhc2VkIG9uIHRoZSBtYW5pZmVzdCBzZXR0aW5ncy5cbiAqXG4gKiBAcGFyYW0gbWFuaWZlc3RBY3Rpb25zIFRoZSBtYW5pZmVzdCBhY3Rpb25zXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEBwYXJhbSBhQW5ub3RhdGlvbkFjdGlvbnMgVGhlIGFubm90YXRpb24gYWN0aW9ucyBkZWZpbml0aW9uXG4gKiBAcGFyYW0gbmF2aWdhdGlvblNldHRpbmdzIFRoZSBuYXZpZ2F0aW9uIHNldHRpbmdzXG4gKiBAcGFyYW0gY29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3MgVGhlIG5hdmlnYXRpb24gc2V0dGluZ3MgdG8gYmUgY29uc2lkZXJlZFxuICogQHBhcmFtIGFIaWRkZW5IZWFkZXJBY3Rpb25zIFRoZSBoaWRkZW4gaGVhZGVyIGFjdGlvbnNcbiAqIEBwYXJhbSBmYWNldE5hbWUgVGhlIGZhY2V0IHdoZXJlIGFuIGFjdGlvbiBpcyBkaXNwbGF5ZWQgaWYgaXQgaXMgaW5saW5lXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9ucyBmcm9tIHRoZSBtYW5pZmVzdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0bWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdEFjdGlvbj4gfCB1bmRlZmluZWQsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFBbm5vdGF0aW9uQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0bmF2aWdhdGlvblNldHRpbmdzPzogTmF2aWdhdGlvblNldHRpbmdzQ29uZmlndXJhdGlvbixcblx0Y29uc2lkZXJOYXZpZ2F0aW9uU2V0dGluZ3M/OiBib29sZWFuLFxuXHRhSGlkZGVuSGVhZGVyQWN0aW9ucz86IEJhc2VBY3Rpb25bXSxcblx0ZmFjZXROYW1lPzogc3RyaW5nXG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+IHtcblx0Y29uc3QgYWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRmb3IgKGNvbnN0IGFjdGlvbktleSBpbiBtYW5pZmVzdEFjdGlvbnMpIHtcblx0XHRjb25zdCBtYW5pZmVzdEFjdGlvbjogTWFuaWZlc3RBY3Rpb24gPSBtYW5pZmVzdEFjdGlvbnNbYWN0aW9uS2V5XTtcblx0XHRjb25zdCBsYXN0RG90SW5kZXggPSBtYW5pZmVzdEFjdGlvbi5wcmVzcz8ubGFzdEluZGV4T2YoXCIuXCIpIHx8IC0xO1xuXG5cdFx0Ly8gVG8gaWRlbnRpZnkgdGhlIGFubm90YXRpb24gYWN0aW9uIHByb3BlcnR5IG92ZXJ3cml0ZSB2aWEgbWFuaWZlc3QgdXNlLWNhc2UuXG5cdFx0Y29uc3QgaXNBbm5vdGF0aW9uQWN0aW9uID0gYUFubm90YXRpb25BY3Rpb25zPy5zb21lKChhY3Rpb24pID0+IGFjdGlvbi5rZXkgPT09IGFjdGlvbktleSkgfHwgZmFsc2U7XG5cdFx0aWYgKG1hbmlmZXN0QWN0aW9uLmZhY2V0TmFtZSkge1xuXHRcdFx0ZmFjZXROYW1lID0gbWFuaWZlc3RBY3Rpb24uZmFjZXROYW1lO1xuXHRcdH1cblxuXHRcdGFjdGlvbnNbYWN0aW9uS2V5XSA9IHtcblx0XHRcdGlkOiBhQW5ub3RhdGlvbkFjdGlvbnM/LnNvbWUoKGFjdGlvbikgPT4gYWN0aW9uLmtleSA9PT0gYWN0aW9uS2V5KSA/IGFjdGlvbktleSA6IGdldEN1c3RvbUFjdGlvbklEKGFjdGlvbktleSksXG5cdFx0XHR2aXNpYmxlOiBtYW5pZmVzdEFjdGlvbi52aXNpYmxlID09PSB1bmRlZmluZWQgPyBcInRydWVcIiA6IG1hbmlmZXN0QWN0aW9uLnZpc2libGUsXG5cdFx0XHRlbmFibGVkOiBfZ2V0TWFuaWZlc3RFbmFibGVkKG1hbmlmZXN0QWN0aW9uLCBpc0Fubm90YXRpb25BY3Rpb24sIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0aGFuZGxlck1vZHVsZTogbWFuaWZlc3RBY3Rpb24ucHJlc3MgJiYgbWFuaWZlc3RBY3Rpb24ucHJlc3Muc3Vic3RyaW5nKDAsIGxhc3REb3RJbmRleCkucmVwbGFjZSgvXFwuL2dpLCBcIi9cIiksXG5cdFx0XHRoYW5kbGVyTWV0aG9kOiBtYW5pZmVzdEFjdGlvbi5wcmVzcyAmJiBtYW5pZmVzdEFjdGlvbi5wcmVzcy5zdWJzdHJpbmcobGFzdERvdEluZGV4ICsgMSksXG5cdFx0XHRwcmVzczogbWFuaWZlc3RBY3Rpb24ucHJlc3MsXG5cdFx0XHR0ZXh0OiBtYW5pZmVzdEFjdGlvbi50ZXh0LFxuXHRcdFx0bm9XcmFwOiBtYW5pZmVzdEFjdGlvbi5fX25vV3JhcCxcblx0XHRcdGtleTogcmVwbGFjZVNwZWNpYWxDaGFycyhhY3Rpb25LZXkpLFxuXHRcdFx0ZW5hYmxlT25TZWxlY3Q6IG1hbmlmZXN0QWN0aW9uLmVuYWJsZU9uU2VsZWN0LFxuXHRcdFx0ZGVmYXVsdFZhbHVlc0V4dGVuc2lvbkZ1bmN0aW9uOiBtYW5pZmVzdEFjdGlvbi5kZWZhdWx0VmFsdWVzRnVuY3Rpb24sXG5cdFx0XHRwb3NpdGlvbjoge1xuXHRcdFx0XHRhbmNob3I6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uPy5hbmNob3IsXG5cdFx0XHRcdHBsYWNlbWVudDogbWFuaWZlc3RBY3Rpb24ucG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IFBsYWNlbWVudC5BZnRlciA6IG1hbmlmZXN0QWN0aW9uLnBvc2l0aW9uLnBsYWNlbWVudFxuXHRcdFx0fSxcblx0XHRcdGlzTmF2aWdhYmxlOiBpc0FjdGlvbk5hdmlnYWJsZShtYW5pZmVzdEFjdGlvbiwgbmF2aWdhdGlvblNldHRpbmdzLCBjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncyksXG5cdFx0XHRjb21tYW5kOiBtYW5pZmVzdEFjdGlvbi5jb21tYW5kLFxuXHRcdFx0cmVxdWlyZXNTZWxlY3Rpb246IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uID09PSB1bmRlZmluZWQgPyBmYWxzZSA6IG1hbmlmZXN0QWN0aW9uLnJlcXVpcmVzU2VsZWN0aW9uLFxuXHRcdFx0ZW5hYmxlQXV0b1Njcm9sbDogZW5hYmxlQXV0b1Njcm9sbChtYW5pZmVzdEFjdGlvbiksXG5cdFx0XHRtZW51OiBtYW5pZmVzdEFjdGlvbi5tZW51ID8/IFtdLFxuXHRcdFx0ZmFjZXROYW1lOiBtYW5pZmVzdEFjdGlvbi5pbmxpbmUgPyBmYWNldE5hbWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHRcdC8vIERvIG5vdCBvdmVycmlkZSB0aGUgJ3R5cGUnIGdpdmVuIGluIGFuIGFubm90YXRpb24gYWN0aW9uXG5cdFx0aWYgKCFpc0Fubm90YXRpb25BY3Rpb24pIHtcblx0XHRcdGFjdGlvbnNbYWN0aW9uS2V5XS50eXBlID0gbWFuaWZlc3RBY3Rpb24ubWVudSA/IEFjdGlvblR5cGUuTWVudSA6IEFjdGlvblR5cGUuRGVmYXVsdDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHByZXBhcmVNZW51QWN0aW9uKGFjdGlvbnMsIGFBbm5vdGF0aW9uQWN0aW9ucyA/PyBbXSwgYUhpZGRlbkhlYWRlckFjdGlvbnMgPz8gW10pO1xufVxuXG5mdW5jdGlvbiBnZXRNYW5pZmVzdEFjdGlvbkVuYWJsZW1lbnQobWFuaWZlc3RBY3Rpb246IE1hbmlmZXN0QWN0aW9uLCBjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCByZXNvbHZlZEJpbmRpbmcgPSByZXNvbHZlQmluZGluZ1N0cmluZyhtYW5pZmVzdEFjdGlvbi5lbmFibGVkIGFzIHN0cmluZywgXCJib29sZWFuXCIpO1xuXHRsZXQgcmVzdWx0OiBhbnk7XG5cdGlmIChpc0NvbnN0YW50KHJlc29sdmVkQmluZGluZykgJiYgcmVzb2x2ZWRCaW5kaW5nLnZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHQvLyBObyBlbmFibGVkIHByb3BlcnR5IGNvbmZpZ3VyZWQgaW4gbWFuaWZlc3QgZm9yIHRoZSBjdXN0b20gYWN0aW9uIC0tPiBlbmFibGUgY3VzdG9tIGFjdGlvblxuXHRcdHJlc3VsdCA9IHRydWU7XG5cdH0gZWxzZSBpZiAoaXNDb25zdGFudChyZXNvbHZlZEJpbmRpbmcpICYmIHR5cGVvZiByZXNvbHZlZEJpbmRpbmcudmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0Ly8gdHJ1ZSAvIGZhbHNlXG5cdFx0cmVzdWx0ID0gcmVzb2x2ZWRCaW5kaW5nLnZhbHVlO1xuXHR9IGVsc2UgaWYgKHJlc29sdmVkQmluZGluZy5fdHlwZSAhPT0gXCJFbWJlZGRlZEJpbmRpbmdcIiAmJiByZXNvbHZlZEJpbmRpbmcuX3R5cGUgIT09IFwiRW1iZWRkZWRFeHByZXNzaW9uQmluZGluZ1wiKSB7XG5cdFx0Ly8gVGhlbiBpdCdzIGEgbW9kdWxlLW1ldGhvZCByZWZlcmVuY2UgXCJzYXAueHh4Lnl5eS5kb1NvbWV0aGluZ1wiXG5cdFx0Y29uc3QgbWV0aG9kUGF0aCA9IHJlc29sdmVkQmluZGluZy52YWx1ZSBhcyBzdHJpbmc7XG5cdFx0cmVzdWx0ID0gZm9ybWF0UmVzdWx0KFxuXHRcdFx0W3BhdGhJbk1vZGVsKFwiL1wiLCBcIiR2aWV3XCIpLCBtZXRob2RQYXRoLCBwYXRoSW5Nb2RlbChcInNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKV0sXG5cdFx0XHRmcG1Gb3JtYXR0ZXIuY3VzdG9tSXNFbmFibGVkQ2hlY2sgYXMgYW55LFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIHRoZW4gaXQncyBhIGJpbmRpbmdcblx0XHRyZXN1bHQgPSByZXNvbHZlZEJpbmRpbmc7XG5cdH1cblxuXHQvLyBDb25zaWRlciByZXF1aXJlc1NlbGVjdGlvbiBwcm9wZXJ0eSB0byBpbmNsdWRlIHNlbGVjdGVkQ29udGV4dHMgaW4gdGhlIGJpbmRpbmcgZXhwcmVzc2lvblxuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0aWZFbHNlKFxuXHRcdFx0bWFuaWZlc3RBY3Rpb24ucmVxdWlyZXNTZWxlY3Rpb24gPT09IHRydWUsXG5cdFx0XHRhbmQoZ3JlYXRlck9yRXF1YWwocGF0aEluTW9kZWwoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKSwgMSksIHJlc3VsdCksXG5cdFx0XHRyZXN1bHRcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogTWV0aG9kIHRvIGRldGVybWluZSB0aGUgdmFsdWUgb2YgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiBhbiBhbm5vdGF0aW9uLWJhc2VkIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgaW5zdGFuY2Ugb2YgdGhlIGNvbnZlcnRlciBjb250ZXh0XG4gKiBAcGFyYW0gYWN0aW9uVGFyZ2V0IFRoZSBpbnN0YW5jZSBvZiB0aGUgYWN0aW9uXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBhY3Rpb24gYnV0dG9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGFjdGlvblRhcmdldDogQWN0aW9uIHwgdW5kZWZpbmVkXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGlmIChhY3Rpb25UYXJnZXQ/LmlzQm91bmQgIT09IHRydWUpIHtcblx0XHRyZXR1cm4gXCJ0cnVlXCI7XG5cdH1cblx0aWYgKGFjdGlvblRhcmdldD8ucGFyYW1ldGVycz8ubGVuZ3RoKSB7XG5cdFx0Y29uc3QgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lID0gYWN0aW9uVGFyZ2V0Py5wYXJhbWV0ZXJzWzBdLmZ1bGx5UXVhbGlmaWVkTmFtZSxcblx0XHRcdG9wZXJhdGlvbkF2YWlsYWJsZUV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oXG5cdFx0XHRcdGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlLFxuXHRcdFx0XHRbXSxcblx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHQocGF0aDogc3RyaW5nKSA9PiBiaW5kaW5nQ29udGV4dFBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0XHRcdCk7XG5cdFx0aWYgKGFjdGlvblRhcmdldD8uYW5ub3RhdGlvbnMuQ29yZT8uT3BlcmF0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihlcXVhbChvcGVyYXRpb25BdmFpbGFibGVFeHByZXNzaW9uLCB0cnVlKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBcInRydWVcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhhTWFwcGluZ3M6IGFueVtdKTogYW55W10ge1xuXHRjb25zdCBhU2VtYW50aWNPYmplY3RNYXBwaW5nczogYW55W10gPSBbXTtcblx0YU1hcHBpbmdzLmZvckVhY2goKG9NYXBwaW5nKSA9PiB7XG5cdFx0Y29uc3Qgb1NPTWFwcGluZyA9IHtcblx0XHRcdFwiTG9jYWxQcm9wZXJ0eVwiOiB7XG5cdFx0XHRcdFwiJFByb3BlcnR5UGF0aFwiOiBvTWFwcGluZy5Mb2NhbFByb3BlcnR5LnZhbHVlXG5cdFx0XHR9LFxuXHRcdFx0XCJTZW1hbnRpY09iamVjdFByb3BlcnR5XCI6IG9NYXBwaW5nLlNlbWFudGljT2JqZWN0UHJvcGVydHlcblx0XHR9O1xuXHRcdGFTZW1hbnRpY09iamVjdE1hcHBpbmdzLnB1c2gob1NPTWFwcGluZyk7XG5cdH0pO1xuXHRyZXR1cm4gYVNlbWFudGljT2JqZWN0TWFwcGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0FjdGlvbk5hdmlnYWJsZShcblx0YWN0aW9uOiBNYW5pZmVzdEFjdGlvbiB8IE1hbmlmZXN0VGFibGVDb2x1bW4sXG5cdG5hdmlnYXRpb25TZXR0aW5ncz86IE5hdmlnYXRpb25TZXR0aW5nc0NvbmZpZ3VyYXRpb24sXG5cdGNvbnNpZGVyTmF2aWdhdGlvblNldHRpbmdzPzogYm9vbGVhblxuKTogYm9vbGVhbiB7XG5cdGxldCBiSXNOYXZpZ2F0aW9uQ29uZmlndXJlZDogYm9vbGVhbiA9IHRydWU7XG5cdGlmIChjb25zaWRlck5hdmlnYXRpb25TZXR0aW5ncykge1xuXHRcdGNvbnN0IGRldGFpbE9yRGlzcGxheSA9IG5hdmlnYXRpb25TZXR0aW5ncyAmJiAobmF2aWdhdGlvblNldHRpbmdzLmRldGFpbCB8fCBuYXZpZ2F0aW9uU2V0dGluZ3MuZGlzcGxheSk7XG5cdFx0YklzTmF2aWdhdGlvbkNvbmZpZ3VyZWQgPSBkZXRhaWxPckRpc3BsYXk/LnJvdXRlID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cdC8vIHdoZW4gZW5hYmxlQXV0b1Njcm9sbCBpcyB0cnVlIHRoZSBuYXZpZ2F0ZVRvSW5zdGFuY2UgZmVhdHVyZSBpcyBkaXNhYmxlZFxuXHRpZiAoXG5cdFx0KGFjdGlvbiAmJlxuXHRcdFx0YWN0aW9uLmFmdGVyRXhlY3V0aW9uICYmXG5cdFx0XHQoYWN0aW9uLmFmdGVyRXhlY3V0aW9uPy5uYXZpZ2F0ZVRvSW5zdGFuY2UgPT09IGZhbHNlIHx8IGFjdGlvbi5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZSkpIHx8XG5cdFx0IWJJc05hdmlnYXRpb25Db25maWd1cmVkXG5cdCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXHRyZXR1cm4gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuYWJsZUF1dG9TY3JvbGwoYWN0aW9uOiBNYW5pZmVzdEFjdGlvbik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gYWN0aW9uPy5hZnRlckV4ZWN1dGlvbj8uZW5hYmxlQXV0b1Njcm9sbCA9PT0gdHJ1ZTtcbn1cbiJdfQ==
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
import { Action } from "@sap-ux/vocabularies-types";
|
|
1
|
+
import type { Action } from "@sap-ux/vocabularies-types";
|
|
2
2
|
import { bindingContextPathVisitor } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
3
|
-
import { ConfigurableObject, CustomElement
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import type { ConfigurableObject, CustomElement } from "sap/fe/core/converters/helpers/ConfigurableObject";
|
|
4
|
+
import { Placement } from "sap/fe/core/converters/helpers/ConfigurableObject";
|
|
5
|
+
import { getCustomActionID } from "sap/fe/core/converters/helpers/ID";
|
|
6
|
+
import type { ManifestAction, ManifestTableColumn, NavigationSettingsConfiguration } from "sap/fe/core/converters/ManifestSettings";
|
|
7
|
+
import { ActionType } from "sap/fe/core/converters/ManifestSettings";
|
|
6
8
|
import fpmFormatter from "sap/fe/core/formatters/FPMFormatter";
|
|
9
|
+
import type { CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
7
10
|
import {
|
|
8
11
|
and,
|
|
9
|
-
|
|
10
|
-
bindingExpression,
|
|
11
|
-
BindingExpression,
|
|
12
|
-
BindingExpressionExpression,
|
|
13
|
-
compileBinding,
|
|
12
|
+
compileExpression,
|
|
14
13
|
equal,
|
|
15
14
|
formatResult,
|
|
15
|
+
getExpressionFromAnnotation,
|
|
16
16
|
greaterOrEqual,
|
|
17
17
|
ifElse,
|
|
18
18
|
isConstant,
|
|
19
19
|
or,
|
|
20
|
+
pathInModel,
|
|
20
21
|
resolveBindingString
|
|
21
|
-
} from "sap/fe/core/helpers/
|
|
22
|
+
} from "sap/fe/core/helpers/BindingToolkit";
|
|
22
23
|
import { replaceSpecialChars } from "sap/fe/core/helpers/StableIdHelper";
|
|
23
|
-
import ConverterContext from "../../ConverterContext";
|
|
24
|
+
import type ConverterContext from "../../ConverterContext";
|
|
24
25
|
|
|
25
26
|
export enum ButtonType {
|
|
26
27
|
Accept = "Accept",
|
|
@@ -44,8 +45,8 @@ export type BaseAction = ConfigurableObject & {
|
|
|
44
45
|
text?: string;
|
|
45
46
|
type?: ActionType;
|
|
46
47
|
press?: string;
|
|
47
|
-
enabled?:
|
|
48
|
-
visible?:
|
|
48
|
+
enabled?: CompiledBindingToolkitExpression;
|
|
49
|
+
visible?: CompiledBindingToolkitExpression;
|
|
49
50
|
enableOnSelect?: string;
|
|
50
51
|
annotationPath?: string;
|
|
51
52
|
defaultValuesExtensionFunction?: string;
|
|
@@ -54,7 +55,7 @@ export type BaseAction = ConfigurableObject & {
|
|
|
54
55
|
requiresDialog?: string;
|
|
55
56
|
binding?: string;
|
|
56
57
|
buttonType?: ButtonType.Ghost | ButtonType.Transparent | string;
|
|
57
|
-
parentEntityDeleteEnabled?:
|
|
58
|
+
parentEntityDeleteEnabled?: CompiledBindingToolkitExpression;
|
|
58
59
|
menu?: (string | CustomAction | BaseAction)[];
|
|
59
60
|
facetName?: string;
|
|
60
61
|
command?: string | undefined;
|
|
@@ -88,10 +89,11 @@ export type ConverterAction = AnnotationAction | CustomAction;
|
|
|
88
89
|
|
|
89
90
|
/**
|
|
90
91
|
* Creates the menu action from manifest actions.
|
|
91
|
-
*
|
|
92
|
-
* @param
|
|
92
|
+
*
|
|
93
|
+
* @param actions The manifest definition
|
|
94
|
+
* @param aAnnotationActions The annotation actions definition
|
|
93
95
|
* @param aHiddenHeaderActions
|
|
94
|
-
* @returns
|
|
96
|
+
* @returns The actions from the manifest and the menu option that were added
|
|
95
97
|
*/
|
|
96
98
|
function prepareMenuAction(
|
|
97
99
|
actions: Record<string, CustomAction>,
|
|
@@ -115,11 +117,17 @@ function prepareMenuAction(
|
|
|
115
117
|
action = actions[menuKey as string];
|
|
116
118
|
} else {
|
|
117
119
|
//check if "enabled" is overwritten via a manifest entry
|
|
118
|
-
const enabled:
|
|
120
|
+
const enabled: CompiledBindingToolkitExpression | undefined = actions[action.key]?.enabled;
|
|
119
121
|
if (enabled) {
|
|
120
122
|
action.enabled = enabled;
|
|
121
123
|
}
|
|
122
|
-
|
|
124
|
+
if (actions[action.key]) {
|
|
125
|
+
for (const prop in actions[action.key]) {
|
|
126
|
+
if (!(action as any)[prop]) {
|
|
127
|
+
(action as any)[prop] = (actions[action.key] as any)[prop];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
123
131
|
}
|
|
124
132
|
|
|
125
133
|
if (
|
|
@@ -128,7 +136,7 @@ function prepareMenuAction(
|
|
|
128
136
|
action?.type === ActionType.DataFieldForIntentBasedNavigation) &&
|
|
129
137
|
!aHiddenHeaderActions.find((hiddenAction) => hiddenAction.key === menuKey)
|
|
130
138
|
) {
|
|
131
|
-
menuVisible =
|
|
139
|
+
menuVisible = compileExpression(
|
|
132
140
|
or(resolveBindingString((action as any).visible, "boolean"), resolveBindingString(menuVisible, "boolean"))
|
|
133
141
|
);
|
|
134
142
|
menuItems.push(action);
|
|
@@ -148,7 +156,7 @@ function prepareMenuAction(
|
|
|
148
156
|
menuItemKeys = [...menuItemKeys, ..._menuItemKeys];
|
|
149
157
|
}
|
|
150
158
|
if (aHiddenHeaderActions.find((hiddenAction) => hiddenAction.key === actionKey)) {
|
|
151
|
-
manifestAction.visible = false;
|
|
159
|
+
manifestAction.visible = "false";
|
|
152
160
|
}
|
|
153
161
|
allActions[actionKey] = manifestAction;
|
|
154
162
|
}
|
|
@@ -177,16 +185,17 @@ export const removeDuplicateActions = (actions: BaseAction[]): BaseAction[] => {
|
|
|
177
185
|
* Retrieves an action default value based on its kind.
|
|
178
186
|
*
|
|
179
187
|
* Default property value for custom actions if not overwritten in manifest.
|
|
180
|
-
*
|
|
181
|
-
* @param
|
|
188
|
+
*
|
|
189
|
+
* @param manifestAction The action configured in the manifest
|
|
190
|
+
* @param isAnnotationAction Whether the action, defined in manifest, corresponds to an existing annotation action.
|
|
182
191
|
* @param converterContext
|
|
183
|
-
* @returns
|
|
192
|
+
* @returns Determined property value for the column
|
|
184
193
|
*/
|
|
185
194
|
const _getManifestEnabled = function (
|
|
186
195
|
manifestAction: ManifestAction,
|
|
187
196
|
isAnnotationAction: boolean,
|
|
188
197
|
converterContext: ConverterContext
|
|
189
|
-
):
|
|
198
|
+
): CompiledBindingToolkitExpression | undefined {
|
|
190
199
|
if (isAnnotationAction && manifestAction.enabled === undefined) {
|
|
191
200
|
// If annotation action has no property defined in manifest,
|
|
192
201
|
// do not overwrite it with manifest action's default value.
|
|
@@ -198,14 +207,15 @@ const _getManifestEnabled = function (
|
|
|
198
207
|
|
|
199
208
|
/**
|
|
200
209
|
* Creates the action configuration based on the manifest settings.
|
|
201
|
-
*
|
|
210
|
+
*
|
|
211
|
+
* @param manifestActions The manifest actions
|
|
202
212
|
* @param converterContext The converter context
|
|
203
|
-
* @param
|
|
204
|
-
* @param
|
|
205
|
-
* @param
|
|
206
|
-
* @param
|
|
207
|
-
* @param
|
|
208
|
-
* @returns
|
|
213
|
+
* @param aAnnotationActions The annotation actions definition
|
|
214
|
+
* @param navigationSettings The navigation settings
|
|
215
|
+
* @param considerNavigationSettings The navigation settings to be considered
|
|
216
|
+
* @param aHiddenHeaderActions The hidden header actions
|
|
217
|
+
* @param facetName The facet where an action is displayed if it is inline
|
|
218
|
+
* @returns The actions from the manifest
|
|
209
219
|
*/
|
|
210
220
|
export function getActionsFromManifest(
|
|
211
221
|
manifestActions: Record<string, ManifestAction> | undefined,
|
|
@@ -228,7 +238,7 @@ export function getActionsFromManifest(
|
|
|
228
238
|
}
|
|
229
239
|
|
|
230
240
|
actions[actionKey] = {
|
|
231
|
-
id: aAnnotationActions?.some((action) => action.key === actionKey) ? actionKey :
|
|
241
|
+
id: aAnnotationActions?.some((action) => action.key === actionKey) ? actionKey : getCustomActionID(actionKey),
|
|
232
242
|
visible: manifestAction.visible === undefined ? "true" : manifestAction.visible,
|
|
233
243
|
enabled: _getManifestEnabled(manifestAction, isAnnotationAction, converterContext),
|
|
234
244
|
handlerModule: manifestAction.press && manifestAction.press.substring(0, lastDotIndex).replace(/\./gi, "/"),
|
|
@@ -258,7 +268,7 @@ export function getActionsFromManifest(
|
|
|
258
268
|
return prepareMenuAction(actions, aAnnotationActions ?? [], aHiddenHeaderActions ?? []);
|
|
259
269
|
}
|
|
260
270
|
|
|
261
|
-
function getManifestActionEnablement(manifestAction: ManifestAction, converterContext: ConverterContext) {
|
|
271
|
+
function getManifestActionEnablement(manifestAction: ManifestAction, converterContext: ConverterContext): CompiledBindingToolkitExpression {
|
|
262
272
|
const resolvedBinding = resolveBindingString(manifestAction.enabled as string, "boolean");
|
|
263
273
|
let result: any;
|
|
264
274
|
if (isConstant(resolvedBinding) && resolvedBinding.value === undefined) {
|
|
@@ -271,7 +281,7 @@ function getManifestActionEnablement(manifestAction: ManifestAction, converterCo
|
|
|
271
281
|
// Then it's a module-method reference "sap.xxx.yyy.doSomething"
|
|
272
282
|
const methodPath = resolvedBinding.value as string;
|
|
273
283
|
result = formatResult(
|
|
274
|
-
[
|
|
284
|
+
[pathInModel("/", "$view"), methodPath, pathInModel("selectedContexts", "internal")],
|
|
275
285
|
fpmFormatter.customIsEnabledCheck as any,
|
|
276
286
|
converterContext.getEntityType()
|
|
277
287
|
);
|
|
@@ -281,10 +291,10 @@ function getManifestActionEnablement(manifestAction: ManifestAction, converterCo
|
|
|
281
291
|
}
|
|
282
292
|
|
|
283
293
|
// Consider requiresSelection property to include selectedContexts in the binding expression
|
|
284
|
-
return
|
|
294
|
+
return compileExpression(
|
|
285
295
|
ifElse(
|
|
286
296
|
manifestAction.requiresSelection === true,
|
|
287
|
-
and(greaterOrEqual(
|
|
297
|
+
and(greaterOrEqual(pathInModel("numberOfSelectedContexts", "internal"), 1), result),
|
|
288
298
|
result
|
|
289
299
|
)
|
|
290
300
|
);
|
|
@@ -293,30 +303,30 @@ function getManifestActionEnablement(manifestAction: ManifestAction, converterCo
|
|
|
293
303
|
/**
|
|
294
304
|
* Method to determine the value of the 'enabled' property of an annotation-based action.
|
|
295
305
|
*
|
|
296
|
-
* @param
|
|
297
|
-
* @param
|
|
298
|
-
* @returns
|
|
306
|
+
* @param converterContext The instance of the converter context
|
|
307
|
+
* @param actionTarget The instance of the action
|
|
308
|
+
* @returns The binding expression for the 'enabled' property of the action button.
|
|
299
309
|
*/
|
|
300
310
|
export function getEnabledForAnnotationAction(
|
|
301
311
|
converterContext: ConverterContext,
|
|
302
312
|
actionTarget: Action | undefined
|
|
303
|
-
):
|
|
313
|
+
): CompiledBindingToolkitExpression {
|
|
304
314
|
if (actionTarget?.isBound !== true) {
|
|
305
|
-
return true;
|
|
315
|
+
return "true";
|
|
306
316
|
}
|
|
307
317
|
if (actionTarget?.parameters?.length) {
|
|
308
318
|
const bindingParameterFullName = actionTarget?.parameters[0].fullyQualifiedName,
|
|
309
|
-
operationAvailableExpression =
|
|
319
|
+
operationAvailableExpression = getExpressionFromAnnotation(
|
|
310
320
|
actionTarget?.annotations.Core?.OperationAvailable,
|
|
311
321
|
[],
|
|
312
322
|
undefined,
|
|
313
323
|
(path: string) => bindingContextPathVisitor(path, converterContext, bindingParameterFullName)
|
|
314
|
-
)
|
|
324
|
+
);
|
|
315
325
|
if (actionTarget?.annotations.Core?.OperationAvailable !== undefined) {
|
|
316
|
-
return
|
|
326
|
+
return compileExpression(equal(operationAvailableExpression, true));
|
|
317
327
|
}
|
|
318
328
|
}
|
|
319
|
-
return true;
|
|
329
|
+
return "true";
|
|
320
330
|
}
|
|
321
331
|
|
|
322
332
|
export function getSemanticObjectMapping(aMappings: any[]): any[] {
|