@sapui5/sap.fe.core 1.112.0 → 1.114.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime-dbg.js +70 -6
- package/src/sap/fe/core/ActionRuntime.js +1 -1
- package/src/sap/fe/core/ActionRuntime.js.map +1 -1
- package/src/sap/fe/core/ActionRuntime.ts +118 -3
- package/src/sap/fe/core/AppComponent-dbg.js +16 -6
- package/src/sap/fe/core/AppComponent.js +1 -1
- package/src/sap/fe/core/AppComponent.js.map +1 -1
- package/src/sap/fe/core/AppComponent.ts +21 -7
- package/src/sap/fe/core/AppStateHandler-dbg.js +11 -10
- package/src/sap/fe/core/AppStateHandler.js +1 -1
- package/src/sap/fe/core/AppStateHandler.js.map +1 -1
- package/src/sap/fe/core/AppStateHandler.ts +14 -11
- package/src/sap/fe/core/CommonUtils-dbg.js +102 -175
- package/src/sap/fe/core/CommonUtils.js +1 -1
- package/src/sap/fe/core/CommonUtils.js.map +1 -1
- package/src/sap/fe/core/CommonUtils.ts +114 -211
- package/src/sap/fe/core/ExtensionAPI-dbg.js +3 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +2 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +2 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +2 -2
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +13 -18
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +32 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +4 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.ts +41 -29
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +2 -2
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +2 -2
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +3 -1
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +124 -57
- package/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +146 -73
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +35 -74
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -78
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +217 -127
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +227 -129
- package/src/sap/fe/core/controllerextensions/PageReady-dbg.js +3 -5
- package/src/sap/fe/core/controllerextensions/PageReady.js +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +2 -4
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +3 -2
- package/src/sap/fe/core/controllerextensions/Share.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +2 -1
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +19 -14
- package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -14
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +41 -24
- package/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.ts +64 -31
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +8 -8
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +7 -9
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +7 -45
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +5 -48
- package/src/sap/fe/core/controllerextensions/collaboration/Manage-dbg.js +4 -4
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating-dbg.js +52 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js +6 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialogTemplating.ts +46 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog-dbg.js +103 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +124 -0
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper-dbg.js +106 -205
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +121 -216
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +31 -4
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +38 -3
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup-dbg.js +13 -10
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +7 -20
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +9 -4
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +12 -3
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +10 -6
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +20 -11
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +1 -8
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +0 -9
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +19 -15
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +19 -22
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +67 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +68 -0
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -0
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +4 -9
- package/src/sap/fe/core/controls/CommandExecution.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js.map +1 -1
- package/src/sap/fe/core/controls/CommandExecution.ts +0 -8
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block-dbg.js +335 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +6 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js.map +1 -0
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +336 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +1 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +3 -28
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +8 -29
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +30 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js.map +1 -1
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +38 -0
- package/src/sap/fe/core/converters/ConverterContext-dbg.js +3 -5
- package/src/sap/fe/core/converters/ConverterContext.js +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js.map +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +2 -5
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +7 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +5 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestWrapper.ts +7 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +49 -28
- package/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js.map +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.ts +62 -30
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +1 -6
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +22 -7
- package/src/sap/fe/core/converters/annotations/DataField.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js.map +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.ts +20 -7
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +701 -681
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -12
- package/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Action.ts +9 -14
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +32 -20
- package/src/sap/fe/core/converters/controls/Common/Chart.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +30 -18
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +4 -5
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +6 -37
- package/src/sap/fe/core/converters/controls/Common/Form-dbg.js +7 -6
- package/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +5 -11
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +5 -5
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -4
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +135 -85
- package/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/Table.ts +189 -119
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +56 -22
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js.map +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +67 -31
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +137 -49
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +166 -43
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +33 -14
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +31 -12
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +27 -18
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +36 -23
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +37 -15
- package/src/sap/fe/core/converters/helpers/Aggregation.js +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +36 -20
- package/src/sap/fe/core/converters/helpers/BindingHelper-dbg.js +8 -6
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +8 -6
- package/src/sap/fe/core/converters/helpers/InsightsHelpers-dbg.js +39 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +6 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js.map +1 -0
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +45 -0
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +3 -2
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/IssueManager.ts +2 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +17 -16
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js.map +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +11 -11
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +20 -17
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +25 -56
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +13 -13
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -13
- package/src/sap/fe/core/formatters/CollaborationFormatter-dbg.js +17 -33
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +27 -22
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +2 -6
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -5
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +13 -5
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.ts +19 -9
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +2 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +58 -35
- package/src/sap/fe/core/helpers/DeleteHelper.js +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/DeleteHelper.ts +76 -54
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +8 -4
- package/src/sap/fe/core/helpers/MassEditHelper.js +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/MassEditHelper.ts +7 -5
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +6 -5
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +167 -4
- package/src/sap/fe/core/helpers/MetaModelFunction.js +1 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -1
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +205 -3
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +37 -73
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +41 -68
- package/src/sap/fe/core/helpers/RecommendationHelper-dbg.js +71 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.js +6 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/RecommendationHelper.ts +94 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +19 -3
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +21 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +40 -6
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +39 -5
- package/src/sap/fe/core/helpers/SizeHelper-dbg.js +53 -0
- package/src/sap/fe/core/helpers/SizeHelper.js +6 -0
- package/src/sap/fe/core/helpers/SizeHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/SizeHelper.ts +51 -0
- package/src/sap/fe/core/helpers/StableIdHelper-dbg.js +52 -26
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/StableIdHelper.ts +49 -25
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +147 -1
- package/src/sap/fe/core/helpers/TypeGuards.js +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.js.map +1 -1
- package/src/sap/fe/core/helpers/TypeGuards.ts +151 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +25 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +24 -0
- package/src/sap/fe/core/jsx-runtime/jsx-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +1 -0
- package/src/sap/fe/core/library-dbg.js +1 -1
- package/src/sap/fe/core/library-preload.js +123 -95
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration-dbg.js +67 -15
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js.map +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +66 -14
- package/src/sap/fe/core/messagebundle.properties +6 -6
- package/src/sap/fe/core/messagebundle_ar.properties +5 -6
- package/src/sap/fe/core/messagebundle_bg.properties +11 -12
- package/src/sap/fe/core/messagebundle_ca.properties +3 -4
- package/src/sap/fe/core/messagebundle_cs.properties +3 -4
- package/src/sap/fe/core/messagebundle_cy.properties +3 -4
- package/src/sap/fe/core/messagebundle_da.properties +3 -4
- package/src/sap/fe/core/messagebundle_de.properties +11 -12
- package/src/sap/fe/core/messagebundle_el.properties +5 -6
- package/src/sap/fe/core/messagebundle_en.properties +3 -4
- package/src/sap/fe/core/messagebundle_en_GB.properties +4 -5
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +3 -4
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -4
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +3 -2
- package/src/sap/fe/core/messagebundle_es.properties +3 -4
- package/src/sap/fe/core/messagebundle_es_MX.properties +3 -4
- package/src/sap/fe/core/messagebundle_et.properties +3 -4
- package/src/sap/fe/core/messagebundle_fi.properties +3 -4
- package/src/sap/fe/core/messagebundle_fr.properties +3 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +11 -12
- package/src/sap/fe/core/messagebundle_hi.properties +11 -12
- package/src/sap/fe/core/messagebundle_hr.properties +3 -4
- package/src/sap/fe/core/messagebundle_hu.properties +3 -4
- package/src/sap/fe/core/messagebundle_id.properties +11 -12
- package/src/sap/fe/core/messagebundle_it.properties +3 -4
- package/src/sap/fe/core/messagebundle_iw.properties +3 -4
- package/src/sap/fe/core/messagebundle_ja.properties +4 -5
- package/src/sap/fe/core/messagebundle_kk.properties +3 -4
- package/src/sap/fe/core/messagebundle_ko.properties +11 -12
- package/src/sap/fe/core/messagebundle_lt.properties +3 -4
- package/src/sap/fe/core/messagebundle_lv.properties +11 -12
- package/src/sap/fe/core/messagebundle_ms.properties +3 -4
- package/src/sap/fe/core/messagebundle_nl.properties +3 -4
- package/src/sap/fe/core/messagebundle_no.properties +3 -4
- package/src/sap/fe/core/messagebundle_pl.properties +11 -12
- package/src/sap/fe/core/messagebundle_pt.properties +3 -4
- package/src/sap/fe/core/messagebundle_pt_PT.properties +3 -4
- package/src/sap/fe/core/messagebundle_ro.properties +14 -15
- package/src/sap/fe/core/messagebundle_ru.properties +11 -12
- package/src/sap/fe/core/messagebundle_sh.properties +3 -4
- package/src/sap/fe/core/messagebundle_sk.properties +3 -4
- package/src/sap/fe/core/messagebundle_sl.properties +3 -4
- package/src/sap/fe/core/messagebundle_sv.properties +11 -12
- package/src/sap/fe/core/messagebundle_th.properties +3 -4
- package/src/sap/fe/core/messagebundle_tr.properties +3 -4
- package/src/sap/fe/core/messagebundle_uk.properties +3 -4
- package/src/sap/fe/core/messagebundle_vi.properties +3 -4
- package/src/sap/fe/core/messagebundle_zh_CN.properties +11 -12
- package/src/sap/fe/core/messagebundle_zh_TW.properties +11 -12
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +22 -8
- package/src/sap/fe/core/rootView/RootViewBaseController.js +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js.map +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +17 -7
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +36 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +37 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +13 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +13 -0
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +7 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +20 -2
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +7 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js.map +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +10 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +10 -7
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +12 -13
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +9 -3
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +11 -15
- package/src/sap/fe/core/templating/CommonFormatters-dbg.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.ts +2 -2
- package/src/sap/fe/core/templating/CriticalityFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper-dbg.js +19 -18
- package/src/sap/fe/core/templating/DataModelPathHelper.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js.map +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +24 -18
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +5 -5
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.js.map +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +2 -2
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +19 -28
- package/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js.map +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -24
- package/src/sap/fe/core/templating/EntityTypeHelper-dbg.js +48 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js +6 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.js.map +1 -0
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +37 -0
- package/src/sap/fe/core/templating/FilterHelper-dbg.js +12 -1
- package/src/sap/fe/core/templating/FilterHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js.map +1 -1
- package/src/sap/fe/core/templating/FilterHelper.ts +12 -0
- package/src/sap/fe/core/templating/FilterTemplating-dbg.js +7 -8
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.js.map +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +5 -8
- package/src/sap/fe/core/templating/PropertyFormatters-dbg.js +1 -6
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.ts +0 -5
- package/src/sap/fe/core/templating/PropertyHelper-dbg.js +13 -46
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js.map +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +14 -43
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +32 -26
- package/src/sap/fe/core/templating/UIFormatters.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js.map +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +45 -34
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +0 -59
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +0 -171
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +0 -6
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +0 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +0 -184
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/type/EDM"
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/type/EDM"], function (IssueManager, BindingToolkit, ModelHelper, EDM) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -75,7 +75,7 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/helpe
|
|
|
75
75
|
const isApplySupported = metamodelContext.getObject(entitySetPath + "@Org.OData.Aggregation.V1.ApplySupported") ? true : false;
|
|
76
76
|
if (isApplySupported) {
|
|
77
77
|
const entitySetAnnotations = metamodelContext.getObject(`${entitySetPath}@`);
|
|
78
|
-
const customAggregatesAnnotations =
|
|
78
|
+
const customAggregatesAnnotations = METAMODEL_FUNCTIONS.getAllCustomAggregates(entitySetAnnotations);
|
|
79
79
|
const customAggregates = customAggregatesAnnotations ? Object.keys(customAggregatesAnnotations) : undefined;
|
|
80
80
|
if (customAggregates !== null && customAggregates !== void 0 && customAggregates.includes(contextPath)) {
|
|
81
81
|
interanlIsCustomAggregate = true;
|
|
@@ -339,16 +339,179 @@ sap.ui.define(["sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/helpe
|
|
|
339
339
|
const entitytSetAnnotations = annotations;
|
|
340
340
|
return entitytSetAnnotations !== null && entitytSetAnnotations !== void 0 && (_entitytSetAnnotation = entitytSetAnnotations["@Org.OData.Capabilities.V1.InsertRestrictions"]) !== null && _entitytSetAnnotation !== void 0 && _entitytSetAnnotation.RequiredProperties ? true : false;
|
|
341
341
|
}
|
|
342
|
+
// Used in this file and FilterUtils
|
|
343
|
+
/**
|
|
344
|
+
* Returns custom aggregates for a given entitySet.
|
|
345
|
+
*
|
|
346
|
+
* @param annotations A list of annotations of the entity set
|
|
347
|
+
* @returns A map to the custom aggregates keyed by their qualifiers
|
|
348
|
+
*/
|
|
349
|
+
function getAllCustomAggregates(annotations) {
|
|
350
|
+
const customAggregates = {};
|
|
351
|
+
let annotation;
|
|
352
|
+
for (const annotationKey in annotations) {
|
|
353
|
+
if (annotationKey.startsWith("@Org.OData.Aggregation.V1.CustomAggregate")) {
|
|
354
|
+
annotation = annotationKey.replace("@Org.OData.Aggregation.V1.CustomAggregate#", "");
|
|
355
|
+
const annotationParts = annotation.split("@");
|
|
356
|
+
if (annotationParts.length == 2) {
|
|
357
|
+
const customAggregate = {};
|
|
358
|
+
//inner annotation that is not part of Validation.AggregatableTerms
|
|
359
|
+
if (annotationParts[1] == "Org.OData.Aggregation.V1.ContextDefiningProperties") {
|
|
360
|
+
customAggregate.contextDefiningProperties = annotations[annotationKey];
|
|
361
|
+
}
|
|
362
|
+
if (annotationParts[1] == "com.sap.vocabularies.Common.v1.Label") {
|
|
363
|
+
customAggregate.label = annotations[annotationKey];
|
|
364
|
+
}
|
|
365
|
+
customAggregates[annotationParts[0]] = customAggregate;
|
|
366
|
+
} else if (annotationParts.length == 1) {
|
|
367
|
+
customAggregates[annotationParts[0]] = {
|
|
368
|
+
name: annotationParts[0],
|
|
369
|
+
propertyPath: annotationParts[0],
|
|
370
|
+
label: `Custom Aggregate (${annotation})`,
|
|
371
|
+
sortable: true,
|
|
372
|
+
sortOrder: "both",
|
|
373
|
+
custom: true
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
return customAggregates;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Used in ValueListHelper, ChartDelegate and ValueHelp-TableDelegate
|
|
382
|
+
_exports.getAllCustomAggregates = getAllCustomAggregates;
|
|
383
|
+
/**
|
|
384
|
+
* Determines the sorting information from the restriction annotation.
|
|
385
|
+
*
|
|
386
|
+
* @param entitySetAnnotations EntitySet or collection annotations with the sort restrictions annotation
|
|
387
|
+
* @returns An object containing the sort restriction information
|
|
388
|
+
*/
|
|
389
|
+
function getSortRestrictionsInfo(entitySetAnnotations) {
|
|
390
|
+
const sortRestrictionsInfo = {
|
|
391
|
+
sortable: true,
|
|
392
|
+
propertyInfo: {}
|
|
393
|
+
};
|
|
394
|
+
const sortRestrictions = entitySetAnnotations["@Org.OData.Capabilities.V1.SortRestrictions"];
|
|
395
|
+
if (!sortRestrictions) {
|
|
396
|
+
return sortRestrictionsInfo;
|
|
397
|
+
}
|
|
398
|
+
if (sortRestrictions.Sortable === false) {
|
|
399
|
+
sortRestrictionsInfo.sortable = false;
|
|
400
|
+
}
|
|
401
|
+
for (const propertyItem of sortRestrictions.NonSortableProperties || []) {
|
|
402
|
+
const propertyName = propertyItem.$PropertyPath;
|
|
403
|
+
sortRestrictionsInfo.propertyInfo[propertyName] = {
|
|
404
|
+
sortable: false
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
for (const propertyItem of sortRestrictions.AscendingOnlyProperties || []) {
|
|
408
|
+
const propertyName = propertyItem.$PropertyPath;
|
|
409
|
+
sortRestrictionsInfo.propertyInfo[propertyName] = {
|
|
410
|
+
sortable: true,
|
|
411
|
+
sortDirection: "asc" // not used, yet
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
for (const propertyItem of sortRestrictions.DescendingOnlyProperties || []) {
|
|
416
|
+
const propertyName = propertyItem.$PropertyPath;
|
|
417
|
+
sortRestrictionsInfo.propertyInfo[propertyName] = {
|
|
418
|
+
sortable: true,
|
|
419
|
+
sortDirection: "desc" // not used, yet
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
return sortRestrictionsInfo;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
// Used in ChartDelegate and ValueHelp-TableDelegate
|
|
427
|
+
_exports.getSortRestrictionsInfo = getSortRestrictionsInfo;
|
|
428
|
+
/**
|
|
429
|
+
* Determines the filter information based on the filter restrictions annoation.
|
|
430
|
+
*
|
|
431
|
+
* @param filterRestrictions The filter restrictions annotation
|
|
432
|
+
* @returns An object containing the filter restriction information
|
|
433
|
+
*/
|
|
434
|
+
function getFilterRestrictionsInfo(filterRestrictions) {
|
|
435
|
+
let i, propertyName;
|
|
436
|
+
const filterRestrictionsInfo = {
|
|
437
|
+
filterable: true,
|
|
438
|
+
requiresFilter: (filterRestrictions === null || filterRestrictions === void 0 ? void 0 : filterRestrictions.RequiresFilter) || false,
|
|
439
|
+
propertyInfo: {},
|
|
440
|
+
requiredProperties: []
|
|
441
|
+
};
|
|
442
|
+
if (!filterRestrictions) {
|
|
443
|
+
return filterRestrictionsInfo;
|
|
444
|
+
}
|
|
445
|
+
if (filterRestrictions.Filterable === false) {
|
|
446
|
+
filterRestrictionsInfo.filterable = false;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
//Hierarchical Case
|
|
450
|
+
if (filterRestrictions.RequiredProperties) {
|
|
451
|
+
for (i = 0; i < filterRestrictions.RequiredProperties.length; i++) {
|
|
452
|
+
propertyName = filterRestrictions.RequiredProperties[i].$PropertyPath;
|
|
453
|
+
filterRestrictionsInfo.requiredProperties.push(propertyName);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
if (filterRestrictions.NonFilterableProperties) {
|
|
457
|
+
for (i = 0; i < filterRestrictions.NonFilterableProperties.length; i++) {
|
|
458
|
+
propertyName = filterRestrictions.NonFilterableProperties[i].$PropertyPath;
|
|
459
|
+
filterRestrictionsInfo.propertyInfo[propertyName] = {
|
|
460
|
+
filterable: false
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (filterRestrictions.FilterExpressionRestrictions) {
|
|
465
|
+
//TBD
|
|
466
|
+
for (i = 0; i < filterRestrictions.FilterExpressionRestrictions.length; i++) {
|
|
467
|
+
var _filterRestrictions$F;
|
|
468
|
+
propertyName = (_filterRestrictions$F = filterRestrictions.FilterExpressionRestrictions[i].Property) === null || _filterRestrictions$F === void 0 ? void 0 : _filterRestrictions$F.$PropertyPath;
|
|
469
|
+
if (propertyName) {
|
|
470
|
+
filterRestrictionsInfo.propertyInfo[propertyName] = {
|
|
471
|
+
filterable: true,
|
|
472
|
+
allowedExpressions: filterRestrictions.FilterExpressionRestrictions[i].AllowedExpressions
|
|
473
|
+
};
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
return filterRestrictionsInfo;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
// Used in ChartDelegate and ValueHelp-TableDelegate
|
|
481
|
+
/**
|
|
482
|
+
* Provides the information if the FilterExpression is a multiValue Filter Expression.
|
|
483
|
+
*
|
|
484
|
+
* @param filterExpression The FilterExpressionType
|
|
485
|
+
* @returns A boolean value wether it is a multiValue Filter Expression or not
|
|
486
|
+
*/
|
|
487
|
+
_exports.getFilterRestrictionsInfo = getFilterRestrictionsInfo;
|
|
488
|
+
function isMultiValueFilterExpression(filterExpression) {
|
|
489
|
+
let isMultiValue = true;
|
|
490
|
+
|
|
491
|
+
//SingleValue | MultiValue | SingleRange | MultiRange | SearchExpression | MultiRangeOrSearchExpression
|
|
492
|
+
switch (filterExpression) {
|
|
493
|
+
case "SearchExpression":
|
|
494
|
+
case "SingleRange":
|
|
495
|
+
case "SingleValue":
|
|
496
|
+
isMultiValue = false;
|
|
497
|
+
break;
|
|
498
|
+
default:
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
return isMultiValue;
|
|
502
|
+
}
|
|
342
503
|
|
|
343
504
|
// DO NOT USE, only for tests and internally in this file
|
|
505
|
+
_exports.isMultiValueFilterExpression = isMultiValueFilterExpression;
|
|
344
506
|
const METAMODEL_FUNCTIONS = {
|
|
345
507
|
getRequiredProperties,
|
|
346
508
|
getRequiredPropertiesFromAnnotations,
|
|
347
509
|
hasRestrictedPropertiesInAnnotations,
|
|
348
510
|
getRequiredPropertiesFromInsertRestrictions,
|
|
349
|
-
getNavigationRestrictions
|
|
511
|
+
getNavigationRestrictions,
|
|
512
|
+
getAllCustomAggregates
|
|
350
513
|
};
|
|
351
514
|
_exports.METAMODEL_FUNCTIONS = METAMODEL_FUNCTIONS;
|
|
352
515
|
return _exports;
|
|
353
516
|
}, false);
|
|
354
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJmdWxsUGF0aCIsIm1ldGFNb2RlbCIsInNlYXJjaFJlc3RyaWN0aW9ucyIsIm5hdmlnYXRpb25TZWFyY2hSZXN0cmljdGlvbnMiLCJuYXZpZ2F0aW9uVGV4dCIsInNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0iLCJlbnRpdHlUeXBlUGF0aFBhcnRzIiwicmVwbGFjZUFsbCIsInNwbGl0IiwiZmlsdGVyIiwiTW9kZWxIZWxwZXIiLCJmaWx0ZXJPdXROYXZQcm9wQmluZGluZyIsImVudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwiZW50aXR5U2V0UGF0aFBhcnRzIiwiaXNDb250YWlubWVudCIsImdldE9iamVjdCIsImpvaW4iLCJjb250YWlubWVudE5hdlBhdGgiLCJsZW5ndGgiLCJuYXZQYXRoIiwicGFyZW50RW50aXR5U2V0UGF0aCIsInNsaWNlIiwibmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIk1FVEFNT0RFTF9GVU5DVElPTlMiLCJnZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwibWV0YU1vZGVsQ29udGV4dCIsIm5hdmlnYXRpb25QYXRoIiwicmVzdHJpY3RlZFByb3BlcnRpZXMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsImZpbmQiLCJyZXN0cmljdGVkUHJvcGVydHkiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsImlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyIsIm1ldGFtb2RlbENvbnRleHQiLCJjb250ZXh0UGF0aCIsImlzTm90RmlsdGVyYWJsZSIsImZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24iLCJOb25GaWx0ZXJhYmxlUHJvcGVydGllcyIsInNvbWUiLCJwcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJpc0N1c3RvbUFnZ3JlZ2F0ZSIsImludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUiLCJpc0FwcGx5U3VwcG9ydGVkIiwiZW50aXR5U2V0QW5ub3RhdGlvbnMiLCJjdXN0b21BZ2dyZWdhdGVzQW5ub3RhdGlvbnMiLCJtZXRhTW9kZWxVdGlsIiwiZ2V0QWxsQ3VzdG9tQWdncmVnYXRlcyIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJPYmplY3QiLCJrZXlzIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJjaGVja0VudGl0eVNldElzRmlsdGVyYWJsZSIsIm5hdmlnYXRpb25Db250ZXh0IiwiaXNGaWx0ZXJhYmxlIiwiaXNDb250ZXh0UGF0aEZpbHRlcmFibGUiLCJwcm9wZXJ0eURhdGFUeXBlIiwiZ2V0UHJvcGVydHlEYXRhVHlwZSIsImlzVHlwZUZpbHRlcmFibGUiLCJlc1BhcnRzIiwic3BsaWNlIiwiY29udGV4dHMiLCJpc05vRmlsdGVyYWJsZSIsImNvbnRleHQiLCJpdGVtIiwiaW5kZXgiLCJhcnJheSIsImZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIm5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzIiwidGFyZ2V0UHJvcGVydHlQYXRoIiwicHJvcGVydHlQYXRoIiwiZGF0YVR5cGUiLCJnZXRQcm9wZXJ0eSIsImFubm90YXRpb25QYXRoIiwiaXNQcm9wZXJ0eUZpbHRlcmFibGUiLCJza2lwSGlkZGVuRmlsdGVycyIsIkVycm9yIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJoaWRkZW5QYXRoIiwiaGlkZGVuRmlsdGVyUGF0aCIsImNvbXBpbGVFeHByZXNzaW9uIiwibm90Iiwib3IiLCJwYXRoSW5Nb2RlbCIsImdldE5vbkNvbXB1dGVkVmlzaWJsZUZpZWxkcyIsInBhdGgiLCJhcHBDb21wb25lbnQiLCJ0ZWNobmljYWxLZXlzIiwiJEtleSIsIm5vbkNvbXB1dGVkVmlzaWJsZUtleXMiLCJpbW11dGFibGVWaXNpYmxlRmllbGRzIiwiZW50aXR5VHlwZSIsIiRraW5kIiwiYW5ub3RhdGlvbnMiLCJpc0tleSIsImlzSW1tdXRhYmxlIiwiaXNOb25Db21wdXRlZCIsImlzVmlzaWJsZSIsImlzQ29tcHV0ZWREZWZhdWx0VmFsdWUiLCJpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQiLCIkVHlwZSIsInB1c2giLCJkaWFnbm9zdGljcyIsImdldERpYWdub3N0aWNzIiwibWVzc2FnZSIsImFkZElzc3VlIiwiSXNzdWVDYXRlZ29yeSIsIkFubm90YXRpb24iLCJJc3N1ZVNldmVyaXR5IiwiTWVkaXVtIiwiSXNzdWVDYXRlZ29yeVR5cGUiLCJBbm5vdGF0aW9ucyIsIklnbm9yZWRBbm5vdGF0aW9uIiwicmVxdWlyZWRQcm9wZXJ0aWVzIiwiZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImZvckVhY2giLCJjb25jYXQiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXMiLCJjaGVja1VwZGF0ZVJlc3RyaWN0aW9ucyIsInJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoIiwiZW50aXR5U2V0QW5ub3RhdGlvbiIsImVuZHNXaXRoIiwicmVwbGFjZSIsImhhc1Jlc3RyaWN0ZWRQcm9wZXJ0aWVzSW5Bbm5vdGF0aW9ucyIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlJlcXVpcmVkUHJvcGVydGllcyIsIkluc2VydFJlc3RyaWN0aW9ucyIsImdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyIsInJlcXVpcmVkUHJvcGVydHkiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwiaXNOYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwibmF2QW5ub3RhdGlvbnMiLCJlbnRpdHlBbm5vdGF0aW9ucyIsImVudGl0eXRTZXRBbm5vdGF0aW9ucyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiTWV0YU1vZGVsRnVuY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIGdvYWwgb2YgdGhpcyBmaWxlIGlzIHRvIGRpc2FwcGVhciBhcyBzb29uIGFzIHdlIGNhbi5cbi8vIEl0IGlzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uIHRvIG1vdmUgYWxsIG1ldGFtb2RlbCByZWxhdGVkIG9wZXJhdGlvbiBmcm9tIENvbW1vblV0aWxzIHRvIGEgc2VwYXJhdGUgZmlsZS5cblxuaW1wb3J0IHR5cGUgKiBhcyBFZG0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL0VkbVwiO1xuaW1wb3J0IHR5cGUge1xuXHRGaWx0ZXJSZXN0cmljdGlvbnNUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzLFxuXHROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zVHlwZSxcblx0U2VhcmNoUmVzdHJpY3Rpb25zVHlwZVxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlQ2F0ZWdvcnlUeXBlLCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIG5vdCwgb3IsIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEZWZhdWx0VHlwZUZvckVkbVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdHlwZS9FRE1cIjtcbmltcG9ydCB7IGlzVHlwZUZpbHRlcmFibGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvdHlwZS9FRE1cIjtcbmltcG9ydCBtZXRhTW9kZWxVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL09EYXRhTWV0YU1vZGVsVXRpbFwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kUGF0aFR5cGUsIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24sIE1ldGFNb2RlbEVudGl0eVR5cGUsIE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwidHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbi8vIEZyb20gRmlsdGVyQmFyLmJsb2NrLnRzIG9ubHlcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWFyY2hSZXN0cmljdGlvbnMoZnVsbFBhdGg6IHN0cmluZywgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRsZXQgc2VhcmNoUmVzdHJpY3Rpb25zO1xuXHRsZXQgbmF2aWdhdGlvblNlYXJjaFJlc3RyaWN0aW9ucztcblx0Y29uc3QgbmF2aWdhdGlvblRleHQgPSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdGNvbnN0IHNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0gPSBcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1wiO1xuXHRjb25zdCBlbnRpdHlUeXBlUGF0aFBhcnRzID0gZnVsbFBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKGZ1bGxQYXRoLCBtZXRhTW9kZWwpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsLmdldE9iamVjdChgLyR7ZW50aXR5VHlwZVBhdGhQYXJ0cy5qb2luKFwiL1wiKX0vJENvbnRhaW5zVGFyZ2V0YCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGNvbnRhaW5tZW50TmF2UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlUeXBlUGF0aFBhcnRzW2VudGl0eVR5cGVQYXRoUGFydHMubGVuZ3RoIC0gMV0gOiBcIlwiO1xuXG5cdC8vTEVBU1QgUFJJT1JJVFkgLSBTZWFyY2ggcmVzdHJpY3Rpb25zIGRpcmVjdGx5IGF0IEVudGl0eSBTZXRcblx0Ly9lLmcuIEZSIGluIFwiTlMuRW50aXR5Q29udGFpbmVyL1NhbGVzT3JkZXJNYW5hZ2VcIiBDb250ZXh0UGF0aDogL1NhbGVzT3JkZXJNYW5hZ2Vcblx0aWYgKCFpc0NvbnRhaW5tZW50KSB7XG5cdFx0c2VhcmNoUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofSR7c2VhcmNoUmVzdHJpY3Rpb25zVGVybX1gKSBhc1xuXHRcdFx0fCBNZXRhTW9kZWxUeXBlPFNlYXJjaFJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0XHR8IHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoZW50aXR5VHlwZVBhdGhQYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgbmF2UGF0aDogc3RyaW5nID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Ly8gSW4gY2FzZSBvZiBjb250YWlubWVudCB3ZSB0YWtlIGVudGl0eVNldCBwcm92aWRlZCBhcyBwYXJlbnQuIEFuZCBpbiBjYXNlIG9mIG5vcm1hbCB3ZSB3b3VsZCByZW1vdmUgdGhlIGxhc3QgbmF2aWdhdGlvbiBmcm9tIGVudGl0eVNldFBhdGguXG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cblx0XHQvL0hJR0hFU1QgcHJpb3JpdHkgLSBOYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdHBhcmVudEVudGl0eVNldFBhdGgsXG5cdFx0XHRuYXZQYXRoLnJlcGxhY2VBbGwoXCIlMkZcIiwgXCIvXCIpXG5cdFx0KTtcblx0XHRuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uU2VhcmNoUmVzdHJpY3Rpb25zO1xuXHR9XG5cdHJldHVybiBuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID8/IHNlYXJjaFJlc3RyaWN0aW9ucztcbn1cblxuLy8gRnJvbSBDb21tb25VdGlsc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdmlnYXRpb25SZXN0cmljdGlvbnMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGg6IHN0cmluZykge1xuXHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7ZW50aXR5U2V0UGF0aH1AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0fCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlc3RyaWN0ZWRQcm9wZXJ0aWVzID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM7XG5cdHJldHVybiByZXN0cmljdGVkUHJvcGVydGllcz8uZmluZChmdW5jdGlvbiAocmVzdHJpY3RlZFByb3BlcnR5KSB7XG5cdFx0cmV0dXJuIHJlc3RyaWN0ZWRQcm9wZXJ0eS5OYXZpZ2F0aW9uUHJvcGVydHk/LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoID09PSBuYXZpZ2F0aW9uUGF0aDtcblx0fSk7XG59XG5cbi8vIEludGVybmFsIHVzYWdlIG9ubHlcbmZ1bmN0aW9uIGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhbW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGxldCBpc05vdEZpbHRlcmFibGUgPSBmYWxzZTtcblx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbiA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8RmlsdGVyUmVzdHJpY3Rpb25zVHlwZT5cblx0XHR8IHVuZGVmaW5lZDtcblx0aWYgKGZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKSB7XG5cdFx0aXNOb3RGaWx0ZXJhYmxlID0gZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbi5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcy5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0KHByb3BlcnR5IGFzIHVua25vd24gYXMgRXhwYW5kUGF0aFR5cGU8RWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg+KS4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGggfHxcblx0XHRcdFx0cHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGlzTm90RmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tQWdncmVnYXRlKG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLCBlbnRpdHlTZXRQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoOiBzdHJpbmcpIHtcblx0bGV0IGludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUgPSBmYWxzZTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4L2ludmFsaWQtd2FyblxuXHRjb25zdCBpc0FwcGx5U3VwcG9ydGVkID0gbWV0YW1vZGVsQ29udGV4dC5nZXRPYmplY3QoZW50aXR5U2V0UGF0aCArIFwiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFwiKSA/IHRydWUgOiBmYWxzZTtcblx0aWYgKGlzQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRjb25zdCBlbnRpdHlTZXRBbm5vdGF0aW9ucyA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QGApIGFzIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb247XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlc0Fubm90YXRpb25zID0gbWV0YU1vZGVsVXRpbC5nZXRBbGxDdXN0b21BZ2dyZWdhdGVzKGVudGl0eVNldEFubm90YXRpb25zKSBhcyBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlcyA9IGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucyA/IE9iamVjdC5rZXlzKGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucykgOiB1bmRlZmluZWQ7XG5cdFx0aWYgKGN1c3RvbUFnZ3JlZ2F0ZXM/LmluY2x1ZGVzKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0aW50ZXJhbmxJc0N1c3RvbUFnZ3JlZ2F0ZSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBpbnRlcmFubElzQ3VzdG9tQWdncmVnYXRlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5cbmZ1bmN0aW9uIGNoZWNrRW50aXR5U2V0SXNGaWx0ZXJhYmxlKFxuXHRlbnRpdHlTZXRQYXRoOiBzdHJpbmcsXG5cdG1ldGFNb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLFxuXHRwcm9wZXJ0eTogc3RyaW5nLFxuXHRuYXZpZ2F0aW9uQ29udGV4dDogQ29udGV4dCB8IG51bGxcbikge1xuXHRsZXQgaXNGaWx0ZXJhYmxlID1cblx0XHRlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5sZW5ndGggPT09IDIgJiYgIXByb3BlcnR5LmluY2x1ZGVzKFwiL1wiKVxuXHRcdFx0PyAhaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIHByb3BlcnR5KSAmJlxuXHRcdFx0ICAhaXNDdXN0b21BZ2dyZWdhdGUobWV0YU1vZGVsQ29udGV4dCwgZW50aXR5U2V0UGF0aCwgcHJvcGVydHkpXG5cdFx0XHQ6ICFpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBwcm9wZXJ0eSk7XG5cdC8vIGNoZWNrIGlmIHR5cGUgY2FuIGJlIHVzZWQgZm9yIGZpbHRlcmluZ1xuXHRpZiAoaXNGaWx0ZXJhYmxlICYmIG5hdmlnYXRpb25Db250ZXh0KSB7XG5cdFx0Y29uc3QgcHJvcGVydHlEYXRhVHlwZSA9IGdldFByb3BlcnR5RGF0YVR5cGUobmF2aWdhdGlvbkNvbnRleHQpO1xuXHRcdGlmIChwcm9wZXJ0eURhdGFUeXBlKSB7XG5cdFx0XHRpc0ZpbHRlcmFibGUgPSBwcm9wZXJ0eURhdGFUeXBlID8gaXNUeXBlRmlsdGVyYWJsZShwcm9wZXJ0eURhdGFUeXBlIGFzIGtleW9mIHR5cGVvZiBEZWZhdWx0VHlwZUZvckVkbVR5cGUpIDogZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlzRmlsdGVyYWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gaXNGaWx0ZXJhYmxlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5mdW5jdGlvbiBpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGNvbnN0IGZ1bGxQYXRoID0gYCR7ZW50aXR5U2V0UGF0aH0vJHtjb250ZXh0UGF0aH1gLFxuXHRcdGVzUGFydHMgPSBmdWxsUGF0aC5zcGxpdChcIi9cIikuc3BsaWNlKDAsIDIpLFxuXHRcdGNvbnRleHRzID0gZnVsbFBhdGguc3BsaXQoXCIvXCIpLnNwbGljZSgyKTtcblx0bGV0IGlzTm9GaWx0ZXJhYmxlID0gZmFsc2UsXG5cdFx0Y29udGV4dCA9IFwiXCI7XG5cblx0ZW50aXR5U2V0UGF0aCA9IGVzUGFydHMuam9pbihcIi9cIik7XG5cblx0aXNOb0ZpbHRlcmFibGUgPSBjb250ZXh0cy5zb21lKGZ1bmN0aW9uIChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkge1xuXHRcdGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnRleHQgKz0gYC8ke2l0ZW19YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGl0ZW07XG5cdFx0fVxuXHRcdGlmIChpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMikge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBcIi9DdXN0b21lci9TZXQvUHJvcGVydHlcIiB0aGlzIGlzIHRvIGNoZWNrIG5hdmlnYXRpb24gcmVzdHJpY3Rpb25zIG9mIFwiQ3VzdG9tZXJcIiBmb3Igbm9uLWZpbHRlcmFibGUgcHJvcGVydGllcyBpbiBcIlNldFwiXG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGl0ZW0pO1xuXHRcdFx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uRmlsdGVyUmVzdHJpY3Rpb25zO1xuXHRcdFx0Y29uc3Qgbm9uRmlsdGVyYWJsZVByb3BlcnRpZXMgPSBmaWx0ZXJSZXN0cmljdGlvbnM/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgdGFyZ2V0UHJvcGVydHlQYXRoID0gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzPy5maW5kKGZ1bmN0aW9uIChwcm9wZXJ0eVBhdGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvcGVydHlQYXRoLiRQcm9wZXJ0eVBhdGggPT09IHRhcmdldFByb3BlcnR5UGF0aDtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG5cdFx0XHQvL2xhc3QgcGF0aCBzZWdtZW50XG5cdFx0XHRpc05vRmlsdGVyYWJsZSA9IGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBjb250ZXh0KTtcblx0XHR9IGVsc2UgaWYgKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9LyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7aXRlbX1gKSkge1xuXHRcdFx0Ly9jaGVjayBleGlzdGluZyBjb250ZXh0IHBhdGggYW5kIGluaXRpYWxpemUgaXRcblx0XHRcdGlzTm9GaWx0ZXJhYmxlID0gaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGNvbnRleHQpO1xuXHRcdFx0Y29udGV4dCA9IFwiXCI7XG5cdFx0XHQvL3NldCB0aGUgbmV3IEVudGl0eVNldFxuXHRcdFx0ZW50aXR5U2V0UGF0aCA9IGAvJHttZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke2l0ZW19YCkgYXMgc3RyaW5nfWA7XG5cdFx0fVxuXHRcdHJldHVybiBpc05vRmlsdGVyYWJsZTtcblx0fSk7XG5cdHJldHVybiBpc05vRmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURhdGFUeXBlKG5hdmlnYXRpb25Db250ZXh0OiBDb250ZXh0KSB7XG5cdGxldCBkYXRhVHlwZSA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBpZiAka2luZCBleGlzdHMsIGl0J3Mgbm90IGEgRGF0YUZpZWxkIGFuZCB3ZSBoYXZlIHRoZSBmaW5hbCB0eXBlIGFscmVhZHlcblx0aWYgKCFuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIiRraW5kXCIpKSB7XG5cdFx0c3dpdGNoIChkYXRhVHlwZSkge1xuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0XHRkYXRhVHlwZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCI6XG5cdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIjpcblx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlZhbHVlLyRQYXRoLyRUeXBlXCIpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aFwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiKSkge1xuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlRhcmdldC8kQW5ub3RhdGlvblBhdGgvZm4vJFBhdGgvJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvblBhdGguaW5jbHVkZXMoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikpIHtcblx0XHRcdFx0XHRcdGRhdGFUeXBlID0gbmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJWYWx1ZS8kUGF0aC8kVHlwZVwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGUuZy4gRmllbGRHcm91cCBvciBDaGFydFxuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkYXRhVHlwZTtcbn1cblxuLy8gRnJvbSBDb21tb25VdGlscywgQ29tbW9uSGVscGVyLCBGaWx0ZXJCYXJEZWxlZ2F0ZSwgRmlsdGVyRmllbGQsIFZhbHVlTGlzdEhlbHBlciwgVGFibGVEZWxlZ2F0ZVxuLy8gVE9ETyBjaGVjayB1c2VkIHBsYWNlcyBhbmQgcmV3b3JrIHRoaXNcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RmlsdGVyYWJsZShcblx0bWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsXG5cdGVudGl0eVNldFBhdGg6IHN0cmluZyxcblx0cHJvcGVydHk6IHN0cmluZyxcblx0c2tpcEhpZGRlbkZpbHRlcnM/OiBib29sZWFuXG4pOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwic1Byb3BlcnR5IHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nXCIpO1xuXHR9XG5cblx0Ly8gUGFyYW1ldGVycyBzaG91bGQgYmUgcmVuZGVyZWQgYXMgZmlsdGVyZmllbGRzXG5cdGlmIChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlc3VsdENvbnRleHRgKSA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3QgbmF2aWdhdGlvbkNvbnRleHQgPSBtZXRhTW9kZWxDb250ZXh0LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke2VudGl0eVNldFBhdGh9LyR7cHJvcGVydHl9YCk7XG5cblx0aWYgKG5hdmlnYXRpb25Db250ZXh0ICYmICFza2lwSGlkZGVuRmlsdGVycykge1xuXHRcdGlmIChcblx0XHRcdG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiKSA9PT0gdHJ1ZSB8fFxuXHRcdFx0bmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuRmlsdGVyXCIpID09PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGhpZGRlblBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW4vJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGhpZGRlbkZpbHRlclBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5GaWx0ZXIvJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKGhpZGRlblBhdGggJiYgaGlkZGVuRmlsdGVyUGF0aCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG5vdChvcihwYXRoSW5Nb2RlbChoaWRkZW5QYXRoKSwgcGF0aEluTW9kZWwoaGlkZGVuRmlsdGVyUGF0aCkpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5QYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlblBhdGgpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5GaWx0ZXJQYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlbkZpbHRlclBhdGgpKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjaGVja0VudGl0eVNldElzRmlsdGVyYWJsZShlbnRpdHlTZXRQYXRoLCBtZXRhTW9kZWxDb250ZXh0LCBwcm9wZXJ0eSwgbmF2aWdhdGlvbkNvbnRleHQpO1xufVxuXG4vLyBGcm9tIFRyYW5zYWN0aW9uSGVscGVyIC8gRWRpdEZsb3dcbmV4cG9ydCBmdW5jdGlvbiBnZXROb25Db21wdXRlZFZpc2libGVGaWVsZHMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIHBhdGg6IHN0cmluZywgYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KSB7XG5cdGNvbnN0IHRlY2huaWNhbEtleXM6IHN0cmluZ1tdID0gKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGUpLiRLZXk7XG5cdGNvbnN0IG5vbkNvbXB1dGVkVmlzaWJsZUtleXM6IHVua25vd25bXSA9IFtdO1xuXHRjb25zdCBpbW11dGFibGVWaXNpYmxlRmllbGRzOiB1bmtub3duW10gPSBbXTtcblx0Y29uc3QgZW50aXR5VHlwZSA9IG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGU7XG5cdGZvciAoY29uc3QgaXRlbSBpbiBlbnRpdHlUeXBlKSB7XG5cdFx0aWYgKGVudGl0eVR5cGVbaXRlbV0uJGtpbmQgJiYgZW50aXR5VHlwZVtpdGVtXS4ka2luZCA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9ucyA9IChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtwYXRofS8ke2l0ZW19QGApIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0aXNLZXkgPSB0ZWNobmljYWxLZXlzLmluY2x1ZGVzKGl0ZW0pLFxuXHRcdFx0XHRpc0ltbXV0YWJsZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSxcblx0XHRcdFx0aXNOb25Db21wdXRlZCA9ICFhbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSxcblx0XHRcdFx0aXNWaXNpYmxlID0gIWFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXSxcblx0XHRcdFx0aXNDb21wdXRlZERlZmF1bHRWYWx1ZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkRGVmYXVsdFZhbHVlXCJdLFxuXHRcdFx0XHRpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgPVxuXHRcdFx0XHRcdGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgPT09IFwiRWRtLkd1aWRcIlxuXHRcdFx0XHRcdFx0PyBpc0NvbXB1dGVkRGVmYXVsdFZhbHVlICYmIGFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0XCJdXG5cdFx0XHRcdFx0XHQ6IGZhbHNlO1xuXHRcdFx0aWYgKChpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgfHwgKGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgIT09IFwiRWRtLkd1aWRcIikpICYmIGlzTm9uQ29tcHV0ZWQgJiYgaXNWaXNpYmxlKSB7XG5cdFx0XHRcdG5vbkNvbXB1dGVkVmlzaWJsZUtleXMucHVzaChpdGVtKTtcblx0XHRcdH0gZWxzZSBpZiAoaXNJbW11dGFibGUgJiYgaXNOb25Db21wdXRlZCAmJiBpc1Zpc2libGUpIHtcblx0XHRcdFx0aW1tdXRhYmxlVmlzaWJsZUZpZWxkcy5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzTm9uQ29tcHV0ZWQgJiYgaXNDb21wdXRlZERlZmF1bHRWYWx1ZSAmJiBhcHBDb21wb25lbnQpIHtcblx0XHRcdFx0Y29uc3QgZGlhZ25vc3RpY3MgPSBhcHBDb21wb25lbnQuZ2V0RGlhZ25vc3RpY3MoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IFwiQ29yZS5Db21wdXRlZERlZmF1bHRWYWx1ZSBpcyBpZ25vcmVkIGFzIENvcmUuQ29tcHV0ZWQgaXMgYWxyZWFkeSBzZXQgdG8gdHJ1ZVwiO1xuXHRcdFx0XHRkaWFnbm9zdGljcy5hZGRJc3N1ZShcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sXG5cdFx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZS5Bbm5vdGF0aW9ucy5JZ25vcmVkQW5ub3RhdGlvblxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXMgPSBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMocGF0aCwgbWV0YU1vZGVsQ29udGV4dCk7XG5cdGlmIChyZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7cGF0aH0vJHtwcm9wZXJ0eX1AYCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdFx0XHRcdGlzVmlzaWJsZSA9ICFhbm5vdGF0aW9ucz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXTtcblx0XHRcdGlmIChpc1Zpc2libGUgJiYgIW5vbkNvbXB1dGVkVmlzaWJsZUtleXMuaW5jbHVkZXMocHJvcGVydHkpICYmICFpbW11dGFibGVWaXNpYmxlRmllbGRzLmluY2x1ZGVzKHByb3BlcnR5KSkge1xuXHRcdFx0XHRub25Db21wdXRlZFZpc2libGVLZXlzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBub25Db21wdXRlZFZpc2libGVLZXlzLmNvbmNhdChpbW11dGFibGVWaXNpYmxlRmllbGRzKTtcbn1cbi8vIEludGVybmFsIG9ubHksIGV4cG9zZWQgZm9yIHRlc3RzXG5mdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXMocGF0aDogc3RyaW5nLCBtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZSkge1xuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cdGxldCByZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aDogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfVtdID0gW107XG5cdGNvbnN0IG5hdmlnYXRpb25UZXh0ID0gXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiO1xuXHRsZXQgZW50aXR5U2V0QW5ub3RhdGlvbjogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwgPSBudWxsO1xuXHRpZiAocGF0aC5lbmRzV2l0aChcIiRcIikpIHtcblx0XHQvLyBpZiBzUGF0aCBjb21lcyB3aXRoIGEgJCBpbiB0aGUgZW5kLCByZW1vdmluZyBpdCBhcyBpdCBpcyBvZiBubyBzaWduaWZpY2FuY2Vcblx0XHRwYXRoID0gcGF0aC5yZXBsYWNlKFwiLyRcIiwgXCJcIik7XG5cdH1cblx0Y29uc3QgZW50aXR5VHlwZVBhdGhQYXJ0cyA9IHBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKHBhdGgsIG1ldGFNb2RlbENvbnRleHQpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYC8ke2VudGl0eVR5cGVQYXRoUGFydHMuam9pbihcIi9cIil9LyRDb250YWluc1RhcmdldGApID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBjb250YWlubWVudE5hdlBhdGggPSBpc0NvbnRhaW5tZW50ID8gZW50aXR5VHlwZVBhdGhQYXJ0c1tlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCAtIDFdIDogXCJcIjtcblxuXHQvL1Jlc3RyaWN0aW9ucyBkaXJlY3RseSBhdCBFbnRpdHkgU2V0XG5cdC8vZS5nLiBGUiBpbiBcIk5TLkVudGl0eUNvbnRhaW5lci9TYWxlc09yZGVyTWFuYWdlXCIgQ29udGV4dFBhdGg6IC9TYWxlc09yZGVyTWFuYWdlXG5cdGlmICghaXNDb250YWlubWVudCkge1xuXHRcdGVudGl0eVNldEFubm90YXRpb24gPSBtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofUBgKSBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uO1xuXHR9XG5cdGlmIChlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCBuYXZQYXRoID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cdFx0Ly9OYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbENvbnRleHQsXG5cdFx0XHRwYXJlbnRFbnRpdHlTZXRQYXRoLFxuXHRcdFx0bmF2UGF0aC5yZXBsYWNlQWxsKFwiJTJGXCIsIFwiL1wiKVxuXHRcdCk7XG5cblx0XHRpZiAoXG5cdFx0XHRuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdE1FVEFNT0RFTF9GVU5DVElPTlMuaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKG5hdmlnYXRpb25SZXN0cmljdGlvbnMsIHRydWUsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKVxuXHRcdCkge1xuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGggPSBjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0XHQ/IG5hdmlnYXRpb25SZXN0cmljdGlvbnMuVXBkYXRlUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW11cblx0XHRcdFx0OiBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zLkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHQhcmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGgubGVuZ3RoICYmXG5cdFx0XHRNRVRBTU9ERUxfRlVOQ1RJT05TLmhhc1Jlc3RyaWN0ZWRQcm9wZXJ0aWVzSW5Bbm5vdGF0aW9ucyhlbnRpdHlTZXRBbm5vdGF0aW9uLCBmYWxzZSwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpXG5cdFx0KSB7XG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aCA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zKFxuXHRcdFx0XHRlbnRpdHlTZXRBbm5vdGF0aW9uLFxuXHRcdFx0XHRjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoTUVUQU1PREVMX0ZVTkNUSU9OUy5oYXNSZXN0cmljdGVkUHJvcGVydGllc0luQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgZmFsc2UsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpO1xuXHR9XG5cdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVkUHJvcGVydHkpIHtcblx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSByZXF1aXJlZFByb3BlcnR5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlQYXRoKTtcblx0fSk7XG5cdHJldHVybiByZXF1aXJlZFByb3BlcnRpZXM7XG59XG5cbi8vIFRyYW5zYWN0aW9uSGVscGVyIC8vIEludGVybmFsRmllbGRcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zKHBhdGg6IHN0cmluZywgbWV0YW1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwpIHtcblx0cmV0dXJuIE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzKHBhdGgsIG1ldGFtb2RlbENvbnRleHQpO1xufVxuXG4vLyBJbnRlcm5hbEZpZWxkXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyhwYXRoOiBzdHJpbmcsIG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdHJldHVybiBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllcyhwYXRoLCBtZXRhbW9kZWxDb250ZXh0LCB0cnVlKTtcbn1cblxuLy8gSW50ZXJuYWwgb25seSwgZXhwb3NlZCBmb3IgdGVzdHNcbmZ1bmN0aW9uIGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zID0gZmFsc2UpIHtcblx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25zPy5bXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNcIl0/LlJlcXVpcmVkUHJvcGVydGllcyA/PyBbXTtcblx0fVxuXHRyZXR1cm4gYW5ub3RhdGlvbnM/LltcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiXT8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xufVxuXG4vLyBJbnRlcm5hbCBvbmx5LCBleHBvc2VkIGZvciB0ZXN0c1xuZnVuY3Rpb24gaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKFxuXHRhbm5vdGF0aW9uczogTWV0YU1vZGVsVHlwZTxOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzPiB8IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24gfCBudWxsLFxuXHRpc05hdmlnYXRpb25SZXN0cmljdGlvbnMgPSBmYWxzZSxcblx0Y2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZVxuKSB7XG5cdGlmIChpc05hdmlnYXRpb25SZXN0cmljdGlvbnMpIHtcblx0XHRjb25zdCBuYXZBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zIGFzIE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcz4gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/Lkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHR9IGVsc2UgaWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0Y29uc3QgZW50aXR5QW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucyBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbnRpdHlBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVXBkYXRlUmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG5cdH1cblx0Y29uc3QgZW50aXR5dFNldEFubm90YXRpb25zID0gYW5ub3RhdGlvbnMgYXMgTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IHVuZGVmaW5lZDtcblx0cmV0dXJuIGVudGl0eXRTZXRBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5zZXJ0UmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG59XG5cbi8vIERPIE5PVCBVU0UsIG9ubHkgZm9yIHRlc3RzIGFuZCBpbnRlcm5hbGx5IGluIHRoaXMgZmlsZVxuZXhwb3J0IGNvbnN0IE1FVEFNT0RFTF9GVU5DVElPTlMgPSB7XG5cdGdldFJlcXVpcmVkUHJvcGVydGllcyxcblx0Z2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zLFxuXHRoYXNSZXN0cmljdGVkUHJvcGVydGllc0luQW5ub3RhdGlvbnMsXG5cdGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMsXG5cdGdldE5hdmlnYXRpb25SZXN0cmljdGlvbnNcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFzQkE7RUFDTyxTQUFTQSxxQkFBcUIsQ0FBQ0MsUUFBZ0IsRUFBRUMsU0FBeUIsRUFBRTtJQUNsRixJQUFJQyxrQkFBa0I7SUFDdEIsSUFBSUMsNEJBQTRCO0lBQ2hDLE1BQU1DLGNBQWMsR0FBRyw0QkFBNEI7SUFDbkQsTUFBTUMsc0JBQXNCLEdBQUcsK0NBQStDO0lBQzlFLE1BQU1DLG1CQUFtQixHQUFHTixRQUFRLENBQUNPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUNDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ0MsTUFBTSxDQUFDQyxXQUFXLENBQUNDLHVCQUF1QixDQUFDO0lBQ2xILE1BQU1DLGFBQWEsR0FBR0YsV0FBVyxDQUFDRyxnQkFBZ0IsQ0FBQ2IsUUFBUSxFQUFFQyxTQUFTLENBQUM7SUFDdkUsTUFBTWEsa0JBQWtCLEdBQUdGLGFBQWEsQ0FBQ0osS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLFdBQVcsQ0FBQ0MsdUJBQXVCLENBQUM7SUFDL0YsTUFB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
|
|
517
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRTZWFyY2hSZXN0cmljdGlvbnMiLCJmdWxsUGF0aCIsIm1ldGFNb2RlbCIsInNlYXJjaFJlc3RyaWN0aW9ucyIsIm5hdmlnYXRpb25TZWFyY2hSZXN0cmljdGlvbnMiLCJuYXZpZ2F0aW9uVGV4dCIsInNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0iLCJlbnRpdHlUeXBlUGF0aFBhcnRzIiwicmVwbGFjZUFsbCIsInNwbGl0IiwiZmlsdGVyIiwiTW9kZWxIZWxwZXIiLCJmaWx0ZXJPdXROYXZQcm9wQmluZGluZyIsImVudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwiZW50aXR5U2V0UGF0aFBhcnRzIiwiaXNDb250YWlubWVudCIsImdldE9iamVjdCIsImpvaW4iLCJjb250YWlubWVudE5hdlBhdGgiLCJsZW5ndGgiLCJuYXZQYXRoIiwicGFyZW50RW50aXR5U2V0UGF0aCIsInNsaWNlIiwibmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIk1FVEFNT0RFTF9GVU5DVElPTlMiLCJnZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwibWV0YU1vZGVsQ29udGV4dCIsIm5hdmlnYXRpb25QYXRoIiwicmVzdHJpY3RlZFByb3BlcnRpZXMiLCJSZXN0cmljdGVkUHJvcGVydGllcyIsImZpbmQiLCJyZXN0cmljdGVkUHJvcGVydHkiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCIkTmF2aWdhdGlvblByb3BlcnR5UGF0aCIsImlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyIsIm1ldGFtb2RlbENvbnRleHQiLCJjb250ZXh0UGF0aCIsImlzTm90RmlsdGVyYWJsZSIsImZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24iLCJOb25GaWx0ZXJhYmxlUHJvcGVydGllcyIsInNvbWUiLCJwcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJpc0N1c3RvbUFnZ3JlZ2F0ZSIsImludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUiLCJpc0FwcGx5U3VwcG9ydGVkIiwiZW50aXR5U2V0QW5ub3RhdGlvbnMiLCJjdXN0b21BZ2dyZWdhdGVzQW5ub3RhdGlvbnMiLCJnZXRBbGxDdXN0b21BZ2dyZWdhdGVzIiwiY3VzdG9tQWdncmVnYXRlcyIsIk9iamVjdCIsImtleXMiLCJ1bmRlZmluZWQiLCJpbmNsdWRlcyIsImNoZWNrRW50aXR5U2V0SXNGaWx0ZXJhYmxlIiwibmF2aWdhdGlvbkNvbnRleHQiLCJpc0ZpbHRlcmFibGUiLCJpc0NvbnRleHRQYXRoRmlsdGVyYWJsZSIsInByb3BlcnR5RGF0YVR5cGUiLCJnZXRQcm9wZXJ0eURhdGFUeXBlIiwiaXNUeXBlRmlsdGVyYWJsZSIsImVzUGFydHMiLCJzcGxpY2UiLCJjb250ZXh0cyIsImlzTm9GaWx0ZXJhYmxlIiwiY29udGV4dCIsIml0ZW0iLCJpbmRleCIsImFycmF5IiwiZmlsdGVyUmVzdHJpY3Rpb25zIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwibm9uRmlsdGVyYWJsZVByb3BlcnRpZXMiLCJ0YXJnZXRQcm9wZXJ0eVBhdGgiLCJwcm9wZXJ0eVBhdGgiLCJkYXRhVHlwZSIsImdldFByb3BlcnR5IiwiYW5ub3RhdGlvblBhdGgiLCJpc1Byb3BlcnR5RmlsdGVyYWJsZSIsInNraXBIaWRkZW5GaWx0ZXJzIiwiRXJyb3IiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImhpZGRlblBhdGgiLCJoaWRkZW5GaWx0ZXJQYXRoIiwiY29tcGlsZUV4cHJlc3Npb24iLCJub3QiLCJvciIsInBhdGhJbk1vZGVsIiwiZ2V0Tm9uQ29tcHV0ZWRWaXNpYmxlRmllbGRzIiwicGF0aCIsImFwcENvbXBvbmVudCIsInRlY2huaWNhbEtleXMiLCIkS2V5Iiwibm9uQ29tcHV0ZWRWaXNpYmxlS2V5cyIsImltbXV0YWJsZVZpc2libGVGaWVsZHMiLCJlbnRpdHlUeXBlIiwiJGtpbmQiLCJhbm5vdGF0aW9ucyIsImlzS2V5IiwiaXNJbW11dGFibGUiLCJpc05vbkNvbXB1dGVkIiwiaXNWaXNpYmxlIiwiaXNDb21wdXRlZERlZmF1bHRWYWx1ZSIsImlzS2V5Q29tcHV0ZWREZWZhdWx0VmFsdWVXaXRoVGV4dCIsIiRUeXBlIiwicHVzaCIsImRpYWdub3N0aWNzIiwiZ2V0RGlhZ25vc3RpY3MiLCJtZXNzYWdlIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJNZWRpdW0iLCJJc3N1ZUNhdGVnb3J5VHlwZSIsIkFubm90YXRpb25zIiwiSWdub3JlZEFubm90YXRpb24iLCJyZXF1aXJlZFByb3BlcnRpZXMiLCJnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwiZm9yRWFjaCIsImNvbmNhdCIsImdldFJlcXVpcmVkUHJvcGVydGllcyIsImNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGgiLCJlbnRpdHlTZXRBbm5vdGF0aW9uIiwiZW5kc1dpdGgiLCJyZXBsYWNlIiwiaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zIiwiVXBkYXRlUmVzdHJpY3Rpb25zIiwiUmVxdWlyZWRQcm9wZXJ0aWVzIiwiSW5zZXJ0UmVzdHJpY3Rpb25zIiwiZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zIiwicmVxdWlyZWRQcm9wZXJ0eSIsImdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnMiLCJpc05hdmlnYXRpb25SZXN0cmljdGlvbnMiLCJuYXZBbm5vdGF0aW9ucyIsImVudGl0eUFubm90YXRpb25zIiwiZW50aXR5dFNldEFubm90YXRpb25zIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb25LZXkiLCJzdGFydHNXaXRoIiwiYW5ub3RhdGlvblBhcnRzIiwiY3VzdG9tQWdncmVnYXRlIiwiY29udGV4dERlZmluaW5nUHJvcGVydGllcyIsImxhYmVsIiwibmFtZSIsInNvcnRhYmxlIiwic29ydE9yZGVyIiwiY3VzdG9tIiwiZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8iLCJzb3J0UmVzdHJpY3Rpb25zSW5mbyIsInByb3BlcnR5SW5mbyIsInNvcnRSZXN0cmljdGlvbnMiLCJTb3J0YWJsZSIsInByb3BlcnR5SXRlbSIsIk5vblNvcnRhYmxlUHJvcGVydGllcyIsInByb3BlcnR5TmFtZSIsIkFzY2VuZGluZ09ubHlQcm9wZXJ0aWVzIiwic29ydERpcmVjdGlvbiIsIkRlc2NlbmRpbmdPbmx5UHJvcGVydGllcyIsImdldEZpbHRlclJlc3RyaWN0aW9uc0luZm8iLCJpIiwiZmlsdGVyUmVzdHJpY3Rpb25zSW5mbyIsImZpbHRlcmFibGUiLCJyZXF1aXJlc0ZpbHRlciIsIlJlcXVpcmVzRmlsdGVyIiwiRmlsdGVyYWJsZSIsIkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJQcm9wZXJ0eSIsImFsbG93ZWRFeHByZXNzaW9ucyIsIkFsbG93ZWRFeHByZXNzaW9ucyIsImlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24iLCJmaWx0ZXJFeHByZXNzaW9uIiwiaXNNdWx0aVZhbHVlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJNZXRhTW9kZWxGdW5jdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gZGlzYXBwZWFyIGFzIHNvb24gYXMgd2UgY2FuLlxuLy8gSXQgaXMgYSB0ZW1wb3Jhcnkgc29sdXRpb24gdG8gbW92ZSBhbGwgbWV0YW1vZGVsIHJlbGF0ZWQgb3BlcmF0aW9uIGZyb20gQ29tbW9uVXRpbHMgdG8gYSBzZXBhcmF0ZSBmaWxlLlxuXG5pbXBvcnQgdHlwZSAqIGFzIEVkbSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEZpbHRlclJlc3RyaWN0aW9uc1R5cGUsXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMsXG5cdE5hdmlnYXRpb25SZXN0cmljdGlvbnNUeXBlLFxuXHRTZWFyY2hSZXN0cmljdGlvbnNUeXBlXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ2FwYWJpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IHsgSXNzdWVDYXRlZ29yeSwgSXNzdWVDYXRlZ29yeVR5cGUsIElzc3VlU2V2ZXJpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgbm90LCBvciwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERlZmF1bHRUeXBlRm9yRWRtVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS90eXBlL0VETVwiO1xuaW1wb3J0IHsgaXNUeXBlRmlsdGVyYWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90eXBlL0VETVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kUGF0aFR5cGUsIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24sIE1ldGFNb2RlbEVudGl0eVR5cGUsIE1ldGFNb2RlbFR5cGUgfSBmcm9tIFwidHlwZXMvbWV0YW1vZGVsX3R5cGVzXCI7XG5cbi8vIEZyb20gRmlsdGVyQmFyLmJsb2NrLnRzIG9ubHlcbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWFyY2hSZXN0cmljdGlvbnMoZnVsbFBhdGg6IHN0cmluZywgbWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRsZXQgc2VhcmNoUmVzdHJpY3Rpb25zO1xuXHRsZXQgbmF2aWdhdGlvblNlYXJjaFJlc3RyaWN0aW9ucztcblx0Y29uc3QgbmF2aWdhdGlvblRleHQgPSBcIiROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nXCI7XG5cdGNvbnN0IHNlYXJjaFJlc3RyaWN0aW9uc1Rlcm0gPSBcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNlYXJjaFJlc3RyaWN0aW9uc1wiO1xuXHRjb25zdCBlbnRpdHlUeXBlUGF0aFBhcnRzID0gZnVsbFBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKGZ1bGxQYXRoLCBtZXRhTW9kZWwpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsLmdldE9iamVjdChgLyR7ZW50aXR5VHlwZVBhdGhQYXJ0cy5qb2luKFwiL1wiKX0vJENvbnRhaW5zVGFyZ2V0YCkgPyB0cnVlIDogZmFsc2U7XG5cdGNvbnN0IGNvbnRhaW5tZW50TmF2UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlUeXBlUGF0aFBhcnRzW2VudGl0eVR5cGVQYXRoUGFydHMubGVuZ3RoIC0gMV0gOiBcIlwiO1xuXG5cdC8vTEVBU1QgUFJJT1JJVFkgLSBTZWFyY2ggcmVzdHJpY3Rpb25zIGRpcmVjdGx5IGF0IEVudGl0eSBTZXRcblx0Ly9lLmcuIEZSIGluIFwiTlMuRW50aXR5Q29udGFpbmVyL1NhbGVzT3JkZXJNYW5hZ2VcIiBDb250ZXh0UGF0aDogL1NhbGVzT3JkZXJNYW5hZ2Vcblx0aWYgKCFpc0NvbnRhaW5tZW50KSB7XG5cdFx0c2VhcmNoUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofSR7c2VhcmNoUmVzdHJpY3Rpb25zVGVybX1gKSBhc1xuXHRcdFx0fCBNZXRhTW9kZWxUeXBlPFNlYXJjaFJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0XHR8IHVuZGVmaW5lZDtcblx0fVxuXHRpZiAoZW50aXR5VHlwZVBhdGhQYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0Y29uc3QgbmF2UGF0aDogc3RyaW5nID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Ly8gSW4gY2FzZSBvZiBjb250YWlubWVudCB3ZSB0YWtlIGVudGl0eVNldCBwcm92aWRlZCBhcyBwYXJlbnQuIEFuZCBpbiBjYXNlIG9mIG5vcm1hbCB3ZSB3b3VsZCByZW1vdmUgdGhlIGxhc3QgbmF2aWdhdGlvbiBmcm9tIGVudGl0eVNldFBhdGguXG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cblx0XHQvL0hJR0hFU1QgcHJpb3JpdHkgLSBOYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbCxcblx0XHRcdHBhcmVudEVudGl0eVNldFBhdGgsXG5cdFx0XHRuYXZQYXRoLnJlcGxhY2VBbGwoXCIlMkZcIiwgXCIvXCIpXG5cdFx0KTtcblx0XHRuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uU2VhcmNoUmVzdHJpY3Rpb25zO1xuXHR9XG5cdHJldHVybiBuYXZpZ2F0aW9uU2VhcmNoUmVzdHJpY3Rpb25zID8/IHNlYXJjaFJlc3RyaWN0aW9ucztcbn1cblxuLy8gRnJvbSBDb21tb25VdGlsc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5hdmlnYXRpb25SZXN0cmljdGlvbnMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIGVudGl0eVNldFBhdGg6IHN0cmluZywgbmF2aWdhdGlvblBhdGg6IHN0cmluZykge1xuXHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7ZW50aXR5U2V0UGF0aH1AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblJlc3RyaWN0aW9uc1R5cGU+XG5cdFx0fCB1bmRlZmluZWQ7XG5cdGNvbnN0IHJlc3RyaWN0ZWRQcm9wZXJ0aWVzID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXM7XG5cdHJldHVybiByZXN0cmljdGVkUHJvcGVydGllcz8uZmluZChmdW5jdGlvbiAocmVzdHJpY3RlZFByb3BlcnR5KSB7XG5cdFx0cmV0dXJuIHJlc3RyaWN0ZWRQcm9wZXJ0eS5OYXZpZ2F0aW9uUHJvcGVydHk/LiROYXZpZ2F0aW9uUHJvcGVydHlQYXRoID09PSBuYXZpZ2F0aW9uUGF0aDtcblx0fSk7XG59XG5cbi8vIEludGVybmFsIHVzYWdlIG9ubHlcbmZ1bmN0aW9uIGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhbW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGxldCBpc05vdEZpbHRlcmFibGUgPSBmYWxzZTtcblx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbiA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYCkgYXNcblx0XHR8IE1ldGFNb2RlbFR5cGU8RmlsdGVyUmVzdHJpY3Rpb25zVHlwZT5cblx0XHR8IHVuZGVmaW5lZDtcblx0aWYgKGZpbHRlclJlc3RyaWN0aW9uc0Fubm90YXRpb24/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKSB7XG5cdFx0aXNOb3RGaWx0ZXJhYmxlID0gZmlsdGVyUmVzdHJpY3Rpb25zQW5ub3RhdGlvbi5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcy5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0KHByb3BlcnR5IGFzIHVua25vd24gYXMgRXhwYW5kUGF0aFR5cGU8RWRtLk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg+KS4kTmF2aWdhdGlvblByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGggfHxcblx0XHRcdFx0cHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gY29udGV4dFBhdGhcblx0XHRcdCk7XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGlzTm90RmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tQWdncmVnYXRlKG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLCBlbnRpdHlTZXRQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoOiBzdHJpbmcpIHtcblx0bGV0IGludGVyYW5sSXNDdXN0b21BZ2dyZWdhdGUgPSBmYWxzZTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4L2ludmFsaWQtd2FyblxuXHRjb25zdCBpc0FwcGx5U3VwcG9ydGVkID0gbWV0YW1vZGVsQ29udGV4dC5nZXRPYmplY3QoZW50aXR5U2V0UGF0aCArIFwiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BcHBseVN1cHBvcnRlZFwiKSA/IHRydWUgOiBmYWxzZTtcblx0aWYgKGlzQXBwbHlTdXBwb3J0ZWQpIHtcblx0XHRjb25zdCBlbnRpdHlTZXRBbm5vdGF0aW9ucyA9IG1ldGFtb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9QGApIGFzIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb247XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlc0Fubm90YXRpb25zID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXRBbGxDdXN0b21BZ2dyZWdhdGVzKGVudGl0eVNldEFubm90YXRpb25zKSBhcyBvYmplY3QgfCB1bmRlZmluZWQ7XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlcyA9IGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucyA/IE9iamVjdC5rZXlzKGN1c3RvbUFnZ3JlZ2F0ZXNBbm5vdGF0aW9ucykgOiB1bmRlZmluZWQ7XG5cdFx0aWYgKGN1c3RvbUFnZ3JlZ2F0ZXM/LmluY2x1ZGVzKGNvbnRleHRQYXRoKSkge1xuXHRcdFx0aW50ZXJhbmxJc0N1c3RvbUFnZ3JlZ2F0ZSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBpbnRlcmFubElzQ3VzdG9tQWdncmVnYXRlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5cbmZ1bmN0aW9uIGNoZWNrRW50aXR5U2V0SXNGaWx0ZXJhYmxlKFxuXHRlbnRpdHlTZXRQYXRoOiBzdHJpbmcsXG5cdG1ldGFNb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsLFxuXHRwcm9wZXJ0eTogc3RyaW5nLFxuXHRuYXZpZ2F0aW9uQ29udGV4dDogQ29udGV4dCB8IG51bGxcbikge1xuXHRsZXQgaXNGaWx0ZXJhYmxlID1cblx0XHRlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5sZW5ndGggPT09IDIgJiYgIXByb3BlcnR5LmluY2x1ZGVzKFwiL1wiKVxuXHRcdFx0PyAhaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIHByb3BlcnR5KSAmJlxuXHRcdFx0ICAhaXNDdXN0b21BZ2dyZWdhdGUobWV0YU1vZGVsQ29udGV4dCwgZW50aXR5U2V0UGF0aCwgcHJvcGVydHkpXG5cdFx0XHQ6ICFpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBwcm9wZXJ0eSk7XG5cdC8vIGNoZWNrIGlmIHR5cGUgY2FuIGJlIHVzZWQgZm9yIGZpbHRlcmluZ1xuXHRpZiAoaXNGaWx0ZXJhYmxlICYmIG5hdmlnYXRpb25Db250ZXh0KSB7XG5cdFx0Y29uc3QgcHJvcGVydHlEYXRhVHlwZSA9IGdldFByb3BlcnR5RGF0YVR5cGUobmF2aWdhdGlvbkNvbnRleHQpO1xuXHRcdGlmIChwcm9wZXJ0eURhdGFUeXBlKSB7XG5cdFx0XHRpc0ZpbHRlcmFibGUgPSBwcm9wZXJ0eURhdGFUeXBlID8gaXNUeXBlRmlsdGVyYWJsZShwcm9wZXJ0eURhdGFUeXBlIGFzIGtleW9mIHR5cGVvZiBEZWZhdWx0VHlwZUZvckVkbVR5cGUpIDogZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlzRmlsdGVyYWJsZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gaXNGaWx0ZXJhYmxlO1xufVxuXG4vLyBJbnRlcm5hbCB1c2FnZSBvbmx5XG5mdW5jdGlvbiBpc0NvbnRleHRQYXRoRmlsdGVyYWJsZShtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgZW50aXR5U2V0UGF0aDogc3RyaW5nLCBjb250ZXh0UGF0aDogc3RyaW5nKSB7XG5cdGNvbnN0IGZ1bGxQYXRoID0gYCR7ZW50aXR5U2V0UGF0aH0vJHtjb250ZXh0UGF0aH1gLFxuXHRcdGVzUGFydHMgPSBmdWxsUGF0aC5zcGxpdChcIi9cIikuc3BsaWNlKDAsIDIpLFxuXHRcdGNvbnRleHRzID0gZnVsbFBhdGguc3BsaXQoXCIvXCIpLnNwbGljZSgyKTtcblx0bGV0IGlzTm9GaWx0ZXJhYmxlID0gZmFsc2UsXG5cdFx0Y29udGV4dCA9IFwiXCI7XG5cblx0ZW50aXR5U2V0UGF0aCA9IGVzUGFydHMuam9pbihcIi9cIik7XG5cblx0aXNOb0ZpbHRlcmFibGUgPSBjb250ZXh0cy5zb21lKGZ1bmN0aW9uIChpdGVtOiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGFycmF5OiBzdHJpbmdbXSkge1xuXHRcdGlmIChjb250ZXh0Lmxlbmd0aCA+IDApIHtcblx0XHRcdGNvbnRleHQgKz0gYC8ke2l0ZW19YDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29udGV4dCA9IGl0ZW07XG5cdFx0fVxuXHRcdGlmIChpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMikge1xuXHRcdFx0Ly8gSW4gY2FzZSBvZiBcIi9DdXN0b21lci9TZXQvUHJvcGVydHlcIiB0aGlzIGlzIHRvIGNoZWNrIG5hdmlnYXRpb24gcmVzdHJpY3Rpb25zIG9mIFwiQ3VzdG9tZXJcIiBmb3Igbm9uLWZpbHRlcmFibGUgcHJvcGVydGllcyBpbiBcIlNldFwiXG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGl0ZW0pO1xuXHRcdFx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zID0gbmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uRmlsdGVyUmVzdHJpY3Rpb25zO1xuXHRcdFx0Y29uc3Qgbm9uRmlsdGVyYWJsZVByb3BlcnRpZXMgPSBmaWx0ZXJSZXN0cmljdGlvbnM/Lk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzO1xuXHRcdFx0Y29uc3QgdGFyZ2V0UHJvcGVydHlQYXRoID0gYXJyYXlbYXJyYXkubGVuZ3RoIC0gMV07XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzPy5maW5kKGZ1bmN0aW9uIChwcm9wZXJ0eVBhdGgpIHtcblx0XHRcdFx0XHRyZXR1cm4gcHJvcGVydHlQYXRoLiRQcm9wZXJ0eVBhdGggPT09IHRhcmdldFByb3BlcnR5UGF0aDtcblx0XHRcdFx0fSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGluZGV4ID09PSBhcnJheS5sZW5ndGggLSAxKSB7XG5cdFx0XHQvL2xhc3QgcGF0aCBzZWdtZW50XG5cdFx0XHRpc05vRmlsdGVyYWJsZSA9IGlzSW5Ob25GaWx0ZXJhYmxlUHJvcGVydGllcyhtZXRhTW9kZWxDb250ZXh0LCBlbnRpdHlTZXRQYXRoLCBjb250ZXh0KTtcblx0XHR9IGVsc2UgaWYgKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke2VudGl0eVNldFBhdGh9LyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7aXRlbX1gKSkge1xuXHRcdFx0Ly9jaGVjayBleGlzdGluZyBjb250ZXh0IHBhdGggYW5kIGluaXRpYWxpemUgaXRcblx0XHRcdGlzTm9GaWx0ZXJhYmxlID0gaXNJbk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzKG1ldGFNb2RlbENvbnRleHQsIGVudGl0eVNldFBhdGgsIGNvbnRleHQpO1xuXHRcdFx0Y29udGV4dCA9IFwiXCI7XG5cdFx0XHQvL3NldCB0aGUgbmV3IEVudGl0eVNldFxuXHRcdFx0ZW50aXR5U2V0UGF0aCA9IGAvJHttZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke2l0ZW19YCkgYXMgc3RyaW5nfWA7XG5cdFx0fVxuXHRcdHJldHVybiBpc05vRmlsdGVyYWJsZTtcblx0fSk7XG5cdHJldHVybiBpc05vRmlsdGVyYWJsZTtcbn1cblxuLy8gSW50ZXJuYWwgdXNhZ2Ugb25seVxuXG5mdW5jdGlvbiBnZXRQcm9wZXJ0eURhdGFUeXBlKG5hdmlnYXRpb25Db250ZXh0OiBDb250ZXh0KSB7XG5cdGxldCBkYXRhVHlwZSA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHQvLyBpZiAka2luZCBleGlzdHMsIGl0J3Mgbm90IGEgRGF0YUZpZWxkIGFuZCB3ZSBoYXZlIHRoZSBmaW5hbCB0eXBlIGFscmVhZHlcblx0aWYgKCFuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIiRraW5kXCIpKSB7XG5cdFx0c3dpdGNoIChkYXRhVHlwZSkge1xuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckFjdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0XHRkYXRhVHlwZSA9IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIjpcblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRXaXRoVXJsXCI6XG5cdFx0XHRjYXNlIFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkV2l0aEludGVudEJhc2VkTmF2aWdhdGlvblwiOlxuXHRcdFx0Y2FzZSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkRhdGFGaWVsZFdpdGhBY3Rpb25cIjpcblx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlZhbHVlLyRQYXRoLyRUeXBlXCIpIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBbm5vdGF0aW9uXCI6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiVGFyZ2V0LyRBbm5vdGF0aW9uUGF0aFwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aCkge1xuXHRcdFx0XHRcdGlmIChhbm5vdGF0aW9uUGF0aC5pbmNsdWRlcyhcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW11bmljYXRpb24udjEuQ29udGFjdFwiKSkge1xuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIlRhcmdldC8kQW5ub3RhdGlvblBhdGgvZm4vJFBhdGgvJFR5cGVcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoYW5ub3RhdGlvblBhdGguaW5jbHVkZXMoXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhUG9pbnRcIikpIHtcblx0XHRcdFx0XHRcdGRhdGFUeXBlID0gbmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJWYWx1ZS8kUGF0aC8kVHlwZVwiKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdC8vIGUuZy4gRmllbGRHcm91cCBvciBDaGFydFxuXHRcdFx0XHRcdFx0ZGF0YVR5cGUgPSB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGRhdGFUeXBlID0gdW5kZWZpbmVkO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBkYXRhVHlwZTtcbn1cblxuLy8gRnJvbSBDb21tb25VdGlscywgQ29tbW9uSGVscGVyLCBGaWx0ZXJCYXJEZWxlZ2F0ZSwgRmlsdGVyRmllbGQsIFZhbHVlTGlzdEhlbHBlciwgVGFibGVEZWxlZ2F0ZVxuLy8gVE9ETyBjaGVjayB1c2VkIHBsYWNlcyBhbmQgcmV3b3JrIHRoaXNcbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RmlsdGVyYWJsZShcblx0bWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsXG5cdGVudGl0eVNldFBhdGg6IHN0cmluZyxcblx0cHJvcGVydHk6IHN0cmluZyxcblx0c2tpcEhpZGRlbkZpbHRlcnM/OiBib29sZWFuXG4pOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRpZiAodHlwZW9mIHByb3BlcnR5ICE9PSBcInN0cmluZ1wiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwic1Byb3BlcnR5IHBhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nXCIpO1xuXHR9XG5cblx0Ly8gUGFyYW1ldGVycyBzaG91bGQgYmUgcmVuZGVyZWQgYXMgZmlsdGVyZmllbGRzXG5cdGlmIChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofS9AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlJlc3VsdENvbnRleHRgKSA9PT0gdHJ1ZSkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y29uc3QgbmF2aWdhdGlvbkNvbnRleHQgPSBtZXRhTW9kZWxDb250ZXh0LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke2VudGl0eVNldFBhdGh9LyR7cHJvcGVydHl9YCk7XG5cblx0aWYgKG5hdmlnYXRpb25Db250ZXh0ICYmICFza2lwSGlkZGVuRmlsdGVycykge1xuXHRcdGlmIChcblx0XHRcdG5hdmlnYXRpb25Db250ZXh0LmdldFByb3BlcnR5KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiKSA9PT0gdHJ1ZSB8fFxuXHRcdFx0bmF2aWdhdGlvbkNvbnRleHQuZ2V0UHJvcGVydHkoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuSGlkZGVuRmlsdGVyXCIpID09PSB0cnVlXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGNvbnN0IGhpZGRlblBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW4vJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXHRcdGNvbnN0IGhpZGRlbkZpbHRlclBhdGggPSBuYXZpZ2F0aW9uQ29udGV4dC5nZXRQcm9wZXJ0eShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5IaWRkZW5GaWx0ZXIvJFBhdGhcIikgYXMgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdFx0aWYgKGhpZGRlblBhdGggJiYgaGlkZGVuRmlsdGVyUGF0aCkge1xuXHRcdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG5vdChvcihwYXRoSW5Nb2RlbChoaWRkZW5QYXRoKSwgcGF0aEluTW9kZWwoaGlkZGVuRmlsdGVyUGF0aCkpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5QYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlblBhdGgpKSk7XG5cdFx0fSBlbHNlIGlmIChoaWRkZW5GaWx0ZXJQYXRoKSB7XG5cdFx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24obm90KHBhdGhJbk1vZGVsKGhpZGRlbkZpbHRlclBhdGgpKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjaGVja0VudGl0eVNldElzRmlsdGVyYWJsZShlbnRpdHlTZXRQYXRoLCBtZXRhTW9kZWxDb250ZXh0LCBwcm9wZXJ0eSwgbmF2aWdhdGlvbkNvbnRleHQpO1xufVxuXG4vLyBGcm9tIFRyYW5zYWN0aW9uSGVscGVyIC8gRWRpdEZsb3dcbmV4cG9ydCBmdW5jdGlvbiBnZXROb25Db21wdXRlZFZpc2libGVGaWVsZHMobWV0YU1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwsIHBhdGg6IHN0cmluZywgYXBwQ29tcG9uZW50PzogQXBwQ29tcG9uZW50KSB7XG5cdGNvbnN0IHRlY2huaWNhbEtleXM6IHN0cmluZ1tdID0gKG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGUpLiRLZXk7XG5cdGNvbnN0IG5vbkNvbXB1dGVkVmlzaWJsZUtleXM6IHVua25vd25bXSA9IFtdO1xuXHRjb25zdCBpbW11dGFibGVWaXNpYmxlRmllbGRzOiB1bmtub3duW10gPSBbXTtcblx0Y29uc3QgZW50aXR5VHlwZSA9IG1ldGFNb2RlbENvbnRleHQuZ2V0T2JqZWN0KGAke3BhdGh9L2ApIGFzIE1ldGFNb2RlbEVudGl0eVR5cGU7XG5cdGZvciAoY29uc3QgaXRlbSBpbiBlbnRpdHlUeXBlKSB7XG5cdFx0aWYgKGVudGl0eVR5cGVbaXRlbV0uJGtpbmQgJiYgZW50aXR5VHlwZVtpdGVtXS4ka2luZCA9PT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9ucyA9IChtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtwYXRofS8ke2l0ZW19QGApIHx8IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0XHRcdFx0aXNLZXkgPSB0ZWNobmljYWxLZXlzLmluY2x1ZGVzKGl0ZW0pLFxuXHRcdFx0XHRpc0ltbXV0YWJsZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkltbXV0YWJsZVwiXSxcblx0XHRcdFx0aXNOb25Db21wdXRlZCA9ICFhbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ29yZS5WMS5Db21wdXRlZFwiXSxcblx0XHRcdFx0aXNWaXNpYmxlID0gIWFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXSxcblx0XHRcdFx0aXNDb21wdXRlZERlZmF1bHRWYWx1ZSA9IGFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5Db3JlLlYxLkNvbXB1dGVkRGVmYXVsdFZhbHVlXCJdLFxuXHRcdFx0XHRpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgPVxuXHRcdFx0XHRcdGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgPT09IFwiRWRtLkd1aWRcIlxuXHRcdFx0XHRcdFx0PyBpc0NvbXB1dGVkRGVmYXVsdFZhbHVlICYmIGFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0XCJdXG5cdFx0XHRcdFx0XHQ6IGZhbHNlO1xuXHRcdFx0aWYgKChpc0tleUNvbXB1dGVkRGVmYXVsdFZhbHVlV2l0aFRleHQgfHwgKGlzS2V5ICYmIGVudGl0eVR5cGVbaXRlbV0uJFR5cGUgIT09IFwiRWRtLkd1aWRcIikpICYmIGlzTm9uQ29tcHV0ZWQgJiYgaXNWaXNpYmxlKSB7XG5cdFx0XHRcdG5vbkNvbXB1dGVkVmlzaWJsZUtleXMucHVzaChpdGVtKTtcblx0XHRcdH0gZWxzZSBpZiAoaXNJbW11dGFibGUgJiYgaXNOb25Db21wdXRlZCAmJiBpc1Zpc2libGUpIHtcblx0XHRcdFx0aW1tdXRhYmxlVmlzaWJsZUZpZWxkcy5wdXNoKGl0ZW0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIWlzTm9uQ29tcHV0ZWQgJiYgaXNDb21wdXRlZERlZmF1bHRWYWx1ZSAmJiBhcHBDb21wb25lbnQpIHtcblx0XHRcdFx0Y29uc3QgZGlhZ25vc3RpY3MgPSBhcHBDb21wb25lbnQuZ2V0RGlhZ25vc3RpY3MoKTtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IFwiQ29yZS5Db21wdXRlZERlZmF1bHRWYWx1ZSBpcyBpZ25vcmVkIGFzIENvcmUuQ29tcHV0ZWQgaXMgYWxyZWFkeSBzZXQgdG8gdHJ1ZVwiO1xuXHRcdFx0XHRkaWFnbm9zdGljcy5hZGRJc3N1ZShcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sXG5cdFx0XHRcdFx0SXNzdWVTZXZlcml0eS5NZWRpdW0sXG5cdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZSxcblx0XHRcdFx0XHRJc3N1ZUNhdGVnb3J5VHlwZS5Bbm5vdGF0aW9ucy5JZ25vcmVkQW5ub3RhdGlvblxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXMgPSBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMocGF0aCwgbWV0YU1vZGVsQ29udGV4dCk7XG5cdGlmIChyZXF1aXJlZFByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKHByb3BlcnR5OiBzdHJpbmcpIHtcblx0XHRcdGNvbnN0IGFubm90YXRpb25zID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYCR7cGF0aH0vJHtwcm9wZXJ0eX1AYCkgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdFx0XHRcdGlzVmlzaWJsZSA9ICFhbm5vdGF0aW9ucz8uW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiXTtcblx0XHRcdGlmIChpc1Zpc2libGUgJiYgIW5vbkNvbXB1dGVkVmlzaWJsZUtleXMuaW5jbHVkZXMocHJvcGVydHkpICYmICFpbW11dGFibGVWaXNpYmxlRmllbGRzLmluY2x1ZGVzKHByb3BlcnR5KSkge1xuXHRcdFx0XHRub25Db21wdXRlZFZpc2libGVLZXlzLnB1c2gocHJvcGVydHkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBub25Db21wdXRlZFZpc2libGVLZXlzLmNvbmNhdChpbW11dGFibGVWaXNpYmxlRmllbGRzKTtcbn1cbi8vIEludGVybmFsIG9ubHksIGV4cG9zZWQgZm9yIHRlc3RzXG5mdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXMocGF0aDogc3RyaW5nLCBtZXRhTW9kZWxDb250ZXh0OiBPRGF0YU1ldGFNb2RlbCwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZSkge1xuXHRjb25zdCByZXF1aXJlZFByb3BlcnRpZXM6IHN0cmluZ1tdID0gW107XG5cdGxldCByZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aDogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfVtdID0gW107XG5cdGNvbnN0IG5hdmlnYXRpb25UZXh0ID0gXCIkTmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1wiO1xuXHRsZXQgZW50aXR5U2V0QW5ub3RhdGlvbjogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwgPSBudWxsO1xuXHRpZiAocGF0aC5lbmRzV2l0aChcIiRcIikpIHtcblx0XHQvLyBpZiBzUGF0aCBjb21lcyB3aXRoIGEgJCBpbiB0aGUgZW5kLCByZW1vdmluZyBpdCBhcyBpdCBpcyBvZiBubyBzaWduaWZpY2FuY2Vcblx0XHRwYXRoID0gcGF0aC5yZXBsYWNlKFwiLyRcIiwgXCJcIik7XG5cdH1cblx0Y29uc3QgZW50aXR5VHlwZVBhdGhQYXJ0cyA9IHBhdGgucmVwbGFjZUFsbChcIiUyRlwiLCBcIi9cIikuc3BsaXQoXCIvXCIpLmZpbHRlcihNb2RlbEhlbHBlci5maWx0ZXJPdXROYXZQcm9wQmluZGluZyk7XG5cdGNvbnN0IGVudGl0eVNldFBhdGggPSBNb2RlbEhlbHBlci5nZXRFbnRpdHlTZXRQYXRoKHBhdGgsIG1ldGFNb2RlbENvbnRleHQpO1xuXHRjb25zdCBlbnRpdHlTZXRQYXRoUGFydHMgPSBlbnRpdHlTZXRQYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpO1xuXHRjb25zdCBpc0NvbnRhaW5tZW50ID0gbWV0YU1vZGVsQ29udGV4dC5nZXRPYmplY3QoYC8ke2VudGl0eVR5cGVQYXRoUGFydHMuam9pbihcIi9cIil9LyRDb250YWluc1RhcmdldGApID8gdHJ1ZSA6IGZhbHNlO1xuXHRjb25zdCBjb250YWlubWVudE5hdlBhdGggPSBpc0NvbnRhaW5tZW50ID8gZW50aXR5VHlwZVBhdGhQYXJ0c1tlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCAtIDFdIDogXCJcIjtcblxuXHQvL1Jlc3RyaWN0aW9ucyBkaXJlY3RseSBhdCBFbnRpdHkgU2V0XG5cdC8vZS5nLiBGUiBpbiBcIk5TLkVudGl0eUNvbnRhaW5lci9TYWxlc09yZGVyTWFuYWdlXCIgQ29udGV4dFBhdGg6IC9TYWxlc09yZGVyTWFuYWdlXG5cdGlmICghaXNDb250YWlubWVudCkge1xuXHRcdGVudGl0eVNldEFubm90YXRpb24gPSBtZXRhTW9kZWxDb250ZXh0LmdldE9iamVjdChgJHtlbnRpdHlTZXRQYXRofUBgKSBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uO1xuXHR9XG5cdGlmIChlbnRpdHlUeXBlUGF0aFBhcnRzLmxlbmd0aCA+IDEpIHtcblx0XHRjb25zdCBuYXZQYXRoID0gaXNDb250YWlubWVudCA/IGNvbnRhaW5tZW50TmF2UGF0aCA6IGVudGl0eVNldFBhdGhQYXJ0c1tlbnRpdHlTZXRQYXRoUGFydHMubGVuZ3RoIC0gMV07XG5cdFx0Y29uc3QgcGFyZW50RW50aXR5U2V0UGF0aCA9IGlzQ29udGFpbm1lbnQgPyBlbnRpdHlTZXRQYXRoIDogYC8ke2VudGl0eVNldFBhdGhQYXJ0cy5zbGljZSgwLCAtMSkuam9pbihgLyR7bmF2aWdhdGlvblRleHR9L2ApfWA7XG5cdFx0Ly9OYXZpZ2F0aW9uIHJlc3RyaWN0aW9uc1xuXHRcdC8vZS5nLiBQYXJlbnQgXCIvQ3VzdG9tZXJcIiB3aXRoIE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGg9XCJTZXRcIiBDb250ZXh0UGF0aDogQ3VzdG9tZXIvU2V0XG5cdFx0Y29uc3QgbmF2aWdhdGlvblJlc3RyaWN0aW9ucyA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0TmF2aWdhdGlvblJlc3RyaWN0aW9ucyhcblx0XHRcdG1ldGFNb2RlbENvbnRleHQsXG5cdFx0XHRwYXJlbnRFbnRpdHlTZXRQYXRoLFxuXHRcdFx0bmF2UGF0aC5yZXBsYWNlQWxsKFwiJTJGXCIsIFwiL1wiKVxuXHRcdCk7XG5cblx0XHRpZiAoXG5cdFx0XHRuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zICE9PSB1bmRlZmluZWQgJiZcblx0XHRcdE1FVEFNT0RFTF9GVU5DVElPTlMuaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKG5hdmlnYXRpb25SZXN0cmljdGlvbnMsIHRydWUsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKVxuXHRcdCkge1xuXHRcdFx0cmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGggPSBjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0XHQ/IG5hdmlnYXRpb25SZXN0cmljdGlvbnMuVXBkYXRlUmVzdHJpY3Rpb25zPy5SZXF1aXJlZFByb3BlcnRpZXMgPz8gW11cblx0XHRcdFx0OiBuYXZpZ2F0aW9uUmVzdHJpY3Rpb25zLkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHQhcmVxdWlyZWRQcm9wZXJ0aWVzV2l0aFBhdGgubGVuZ3RoICYmXG5cdFx0XHRNRVRBTU9ERUxfRlVOQ1RJT05TLmhhc1Jlc3RyaWN0ZWRQcm9wZXJ0aWVzSW5Bbm5vdGF0aW9ucyhlbnRpdHlTZXRBbm5vdGF0aW9uLCBmYWxzZSwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpXG5cdFx0KSB7XG5cdFx0XHRyZXF1aXJlZFByb3BlcnRpZXNXaXRoUGF0aCA9IE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUFubm90YXRpb25zKFxuXHRcdFx0XHRlbnRpdHlTZXRBbm5vdGF0aW9uLFxuXHRcdFx0XHRjaGVja1VwZGF0ZVJlc3RyaWN0aW9uc1xuXHRcdFx0KTtcblx0XHR9XG5cdH0gZWxzZSBpZiAoTUVUQU1PREVMX0ZVTkNUSU9OUy5oYXNSZXN0cmljdGVkUHJvcGVydGllc0luQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgZmFsc2UsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoID0gTUVUQU1PREVMX0ZVTkNUSU9OUy5nZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tQW5ub3RhdGlvbnMoZW50aXR5U2V0QW5ub3RhdGlvbiwgY2hlY2tVcGRhdGVSZXN0cmljdGlvbnMpO1xuXHR9XG5cdHJlcXVpcmVkUHJvcGVydGllc1dpdGhQYXRoLmZvckVhY2goZnVuY3Rpb24gKHJlcXVpcmVkUHJvcGVydHkpIHtcblx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSByZXF1aXJlZFByb3BlcnR5LiRQcm9wZXJ0eVBhdGg7XG5cdFx0cmVxdWlyZWRQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlQYXRoKTtcblx0fSk7XG5cdHJldHVybiByZXF1aXJlZFByb3BlcnRpZXM7XG59XG5cbi8vIFRyYW5zYWN0aW9uSGVscGVyIC8vIEludGVybmFsRmllbGRcbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zKHBhdGg6IHN0cmluZywgbWV0YW1vZGVsQ29udGV4dDogT0RhdGFNZXRhTW9kZWwpIHtcblx0cmV0dXJuIE1FVEFNT0RFTF9GVU5DVElPTlMuZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzKHBhdGgsIG1ldGFtb2RlbENvbnRleHQpO1xufVxuXG4vLyBJbnRlcm5hbEZpZWxkXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyhwYXRoOiBzdHJpbmcsIG1ldGFtb2RlbENvbnRleHQ6IE9EYXRhTWV0YU1vZGVsKSB7XG5cdHJldHVybiBNRVRBTU9ERUxfRlVOQ1RJT05TLmdldFJlcXVpcmVkUHJvcGVydGllcyhwYXRoLCBtZXRhbW9kZWxDb250ZXh0LCB0cnVlKTtcbn1cblxuLy8gSW50ZXJuYWwgb25seSwgZXhwb3NlZCBmb3IgdGVzdHNcbmZ1bmN0aW9uIGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyhhbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IG51bGwsIGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zID0gZmFsc2UpIHtcblx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0cmV0dXJuIGFubm90YXRpb25zPy5bXCJAT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5VcGRhdGVSZXN0cmljdGlvbnNcIl0/LlJlcXVpcmVkUHJvcGVydGllcyA/PyBbXTtcblx0fVxuXHRyZXR1cm4gYW5ub3RhdGlvbnM/LltcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLkluc2VydFJlc3RyaWN0aW9uc1wiXT8uUmVxdWlyZWRQcm9wZXJ0aWVzID8/IFtdO1xufVxuXG4vLyBJbnRlcm5hbCBvbmx5LCBleHBvc2VkIGZvciB0ZXN0c1xuZnVuY3Rpb24gaGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zKFxuXHRhbm5vdGF0aW9uczogTWV0YU1vZGVsVHlwZTxOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzPiB8IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24gfCBudWxsLFxuXHRpc05hdmlnYXRpb25SZXN0cmljdGlvbnMgPSBmYWxzZSxcblx0Y2hlY2tVcGRhdGVSZXN0cmljdGlvbnMgPSBmYWxzZVxuKSB7XG5cdGlmIChpc05hdmlnYXRpb25SZXN0cmljdGlvbnMpIHtcblx0XHRjb25zdCBuYXZBbm5vdGF0aW9ucyA9IGFubm90YXRpb25zIGFzIE1ldGFNb2RlbFR5cGU8TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcz4gfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gbmF2QW5ub3RhdGlvbnM/Lkluc2VydFJlc3RyaWN0aW9ucz8uUmVxdWlyZWRQcm9wZXJ0aWVzID8gdHJ1ZSA6IGZhbHNlO1xuXHR9IGVsc2UgaWYgKGNoZWNrVXBkYXRlUmVzdHJpY3Rpb25zKSB7XG5cdFx0Y29uc3QgZW50aXR5QW5ub3RhdGlvbnMgPSBhbm5vdGF0aW9ucyBhcyBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uIHwgdW5kZWZpbmVkO1xuXHRcdHJldHVybiBlbnRpdHlBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuVXBkYXRlUmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG5cdH1cblx0Y29uc3QgZW50aXR5dFNldEFubm90YXRpb25zID0gYW5ub3RhdGlvbnMgYXMgTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbiB8IHVuZGVmaW5lZDtcblx0cmV0dXJuIGVudGl0eXRTZXRBbm5vdGF0aW9ucz8uW1wiQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuSW5zZXJ0UmVzdHJpY3Rpb25zXCJdPy5SZXF1aXJlZFByb3BlcnRpZXMgPyB0cnVlIDogZmFsc2U7XG59XG5cbmV4cG9ydCB0eXBlIEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb24gPSB7XG5cdGNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXM/OiBzdHJpbmdbXTtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdG5hbWU/OiBzdHJpbmc7XG5cdHByb3BlcnR5UGF0aD86IHN0cmluZztcblx0c29ydGFibGU/OiBib29sZWFuO1xuXHRzb3J0T3JkZXI/OiBzdHJpbmc7XG5cdGN1c3RvbT86IGJvb2xlYW47XG59O1xuXG4vLyBVc2VkIGluIHRoaXMgZmlsZSBhbmQgRmlsdGVyVXRpbHNcbi8qKlxuICogUmV0dXJucyBjdXN0b20gYWdncmVnYXRlcyBmb3IgYSBnaXZlbiBlbnRpdHlTZXQuXG4gKlxuICogQHBhcmFtIGFubm90YXRpb25zIEEgbGlzdCBvZiBhbm5vdGF0aW9ucyBvZiB0aGUgZW50aXR5IHNldFxuICogQHJldHVybnMgQSBtYXAgdG8gdGhlIGN1c3RvbSBhZ2dyZWdhdGVzIGtleWVkIGJ5IHRoZWlyIHF1YWxpZmllcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEN1c3RvbUFnZ3JlZ2F0ZXMoYW5ub3RhdGlvbnM6IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BZ2dyZWdhdGVEZWZpbml0aW9uPiB7XG5cdGNvbnN0IGN1c3RvbUFnZ3JlZ2F0ZXM6IFJlY29yZDxzdHJpbmcsIEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb24+ID0ge307XG5cdGxldCBhbm5vdGF0aW9uO1xuXHRmb3IgKGNvbnN0IGFubm90YXRpb25LZXkgaW4gYW5ub3RhdGlvbnMpIHtcblx0XHRpZiAoYW5ub3RhdGlvbktleS5zdGFydHNXaXRoKFwiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5DdXN0b21BZ2dyZWdhdGVcIikpIHtcblx0XHRcdGFubm90YXRpb24gPSBhbm5vdGF0aW9uS2V5LnJlcGxhY2UoXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkN1c3RvbUFnZ3JlZ2F0ZSNcIiwgXCJcIik7XG5cdFx0XHRjb25zdCBhbm5vdGF0aW9uUGFydHMgPSBhbm5vdGF0aW9uLnNwbGl0KFwiQFwiKTtcblxuXHRcdFx0aWYgKGFubm90YXRpb25QYXJ0cy5sZW5ndGggPT0gMikge1xuXHRcdFx0XHRjb25zdCBjdXN0b21BZ2dyZWdhdGU6IEN1c3RvbUFnZ3JlZ2F0ZURlZmluaXRpb24gPSB7fTtcblx0XHRcdFx0Ly9pbm5lciBhbm5vdGF0aW9uIHRoYXQgaXMgbm90IHBhcnQgb2YgXHRWYWxpZGF0aW9uLkFnZ3JlZ2F0YWJsZVRlcm1zXG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uUGFydHNbMV0gPT0gXCJPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ29udGV4dERlZmluaW5nUHJvcGVydGllc1wiKSB7XG5cdFx0XHRcdFx0Y3VzdG9tQWdncmVnYXRlLmNvbnRleHREZWZpbmluZ1Byb3BlcnRpZXMgPSBhbm5vdGF0aW9uc1thbm5vdGF0aW9uS2V5XSBhcyBzdHJpbmdbXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChhbm5vdGF0aW9uUGFydHNbMV0gPT0gXCJjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIikge1xuXHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZS5sYWJlbCA9IGFubm90YXRpb25zW2Fubm90YXRpb25LZXldIGFzIHN0cmluZztcblx0XHRcdFx0fVxuXHRcdFx0XHRjdXN0b21BZ2dyZWdhdGVzW2Fubm90YXRpb25QYXJ0c1swXV0gPSBjdXN0b21BZ2dyZWdhdGU7XG5cdFx0XHR9IGVsc2UgaWYgKGFubm90YXRpb25QYXJ0cy5sZW5ndGggPT0gMSkge1xuXHRcdFx0XHRjdXN0b21BZ2dyZWdhdGVzW2Fubm90YXRpb25QYXJ0c1swXV0gPSB7XG5cdFx0XHRcdFx0bmFtZTogYW5ub3RhdGlvblBhcnRzWzBdLFxuXHRcdFx0XHRcdHByb3BlcnR5UGF0aDogYW5ub3RhdGlvblBhcnRzWzBdLFxuXHRcdFx0XHRcdGxhYmVsOiBgQ3VzdG9tIEFnZ3JlZ2F0ZSAoJHthbm5vdGF0aW9ufSlgLFxuXHRcdFx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNvcnRPcmRlcjogXCJib3RoXCIsXG5cdFx0XHRcdFx0Y3VzdG9tOiB0cnVlXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1c3RvbUFnZ3JlZ2F0ZXM7XG59XG5cbi8vIFVzZWQgaW4gVmFsdWVMaXN0SGVscGVyLCBDaGFydERlbGVnYXRlIGFuZCBWYWx1ZUhlbHAtVGFibGVEZWxlZ2F0ZVxuZXhwb3J0IHR5cGUgU29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGUgPSB7XG5cdHNvcnRhYmxlOiBib29sZWFuO1xuXHRzb3J0RGlyZWN0aW9uPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU29ydFJlc3RyaWN0aW9uc0luZm9UeXBlID0ge1xuXHRzb3J0YWJsZTogYm9vbGVhbjtcblx0cHJvcGVydHlJbmZvOiBSZWNvcmQ8c3RyaW5nLCBTb3J0UmVzdHJpY3Rpb25zUHJvcGVydHlJbmZvVHlwZT47XG59O1xuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBzb3J0aW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHJlc3RyaWN0aW9uIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIGVudGl0eVNldEFubm90YXRpb25zIEVudGl0eVNldCBvciBjb2xsZWN0aW9uIGFubm90YXRpb25zIHdpdGggdGhlIHNvcnQgcmVzdHJpY3Rpb25zIGFubm90YXRpb25cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBzb3J0IHJlc3RyaWN0aW9uIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTb3J0UmVzdHJpY3Rpb25zSW5mbyhlbnRpdHlTZXRBbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbik6IFNvcnRSZXN0cmljdGlvbnNJbmZvVHlwZSB7XG5cdGNvbnN0IHNvcnRSZXN0cmljdGlvbnNJbmZvOiBTb3J0UmVzdHJpY3Rpb25zSW5mb1R5cGUgPSB7XG5cdFx0c29ydGFibGU6IHRydWUsXG5cdFx0cHJvcGVydHlJbmZvOiB7fVxuXHR9O1xuXG5cdGNvbnN0IHNvcnRSZXN0cmljdGlvbnMgPSBlbnRpdHlTZXRBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQ2FwYWJpbGl0aWVzLlYxLlNvcnRSZXN0cmljdGlvbnNcIl07XG5cblx0aWYgKCFzb3J0UmVzdHJpY3Rpb25zKSB7XG5cdFx0cmV0dXJuIHNvcnRSZXN0cmljdGlvbnNJbmZvO1xuXHR9XG5cblx0aWYgKHNvcnRSZXN0cmljdGlvbnMuU29ydGFibGUgPT09IGZhbHNlKSB7XG5cdFx0c29ydFJlc3RyaWN0aW9uc0luZm8uc29ydGFibGUgPSBmYWxzZTtcblx0fVxuXG5cdGZvciAoY29uc3QgcHJvcGVydHlJdGVtIG9mIHNvcnRSZXN0cmljdGlvbnMuTm9uU29ydGFibGVQcm9wZXJ0aWVzIHx8IFtdKSB7XG5cdFx0Y29uc3QgcHJvcGVydHlOYW1lID0gcHJvcGVydHlJdGVtLiRQcm9wZXJ0eVBhdGg7XG5cdFx0c29ydFJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3Byb3BlcnR5TmFtZV0gPSB7XG5cdFx0XHRzb3J0YWJsZTogZmFsc2Vcblx0XHR9O1xuXHR9XG5cblx0Zm9yIChjb25zdCBwcm9wZXJ0eUl0ZW0gb2Ygc29ydFJlc3RyaWN0aW9ucy5Bc2NlbmRpbmdPbmx5UHJvcGVydGllcyB8fCBbXSkge1xuXHRcdGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5SXRlbS4kUHJvcGVydHlQYXRoO1xuXHRcdHNvcnRSZXN0cmljdGlvbnNJbmZvLnByb3BlcnR5SW5mb1twcm9wZXJ0eU5hbWVdID0ge1xuXHRcdFx0c29ydGFibGU6IHRydWUsXG5cdFx0XHRzb3J0RGlyZWN0aW9uOiBcImFzY1wiIC8vIG5vdCB1c2VkLCB5ZXRcblx0XHR9O1xuXHR9XG5cblx0Zm9yIChjb25zdCBwcm9wZXJ0eUl0ZW0gb2Ygc29ydFJlc3RyaWN0aW9ucy5EZXNjZW5kaW5nT25seVByb3BlcnRpZXMgfHwgW10pIHtcblx0XHRjb25zdCBwcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUl0ZW0uJFByb3BlcnR5UGF0aDtcblx0XHRzb3J0UmVzdHJpY3Rpb25zSW5mby5wcm9wZXJ0eUluZm9bcHJvcGVydHlOYW1lXSA9IHtcblx0XHRcdHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0c29ydERpcmVjdGlvbjogXCJkZXNjXCIgLy8gbm90IHVzZWQsIHlldFxuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gc29ydFJlc3RyaWN0aW9uc0luZm87XG59XG5cbi8vIFVzZWQgaW4gQ2hhcnREZWxlZ2F0ZSBhbmQgVmFsdWVIZWxwLVRhYmxlRGVsZWdhdGVcbmV4cG9ydCB0eXBlIEZpbHRlclJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGUgPSB7XG5cdGZpbHRlcmFibGU6IGJvb2xlYW47XG5cdGFsbG93ZWRFeHByZXNzaW9ucz86IHN0cmluZ1tdO1xufTtcblxuZXhwb3J0IHR5cGUgRmlsdGVyUmVzdHJpY3Rpb25zSW5mb1R5cGUgPSB7XG5cdGZpbHRlcmFibGU6IGJvb2xlYW47XG5cdHJlcXVpcmVzRmlsdGVyOiBib29sZWFuO1xuXHRwcm9wZXJ0eUluZm86IFJlY29yZDxzdHJpbmcsIEZpbHRlclJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGU+O1xuXHRyZXF1aXJlZFByb3BlcnRpZXM6IHN0cmluZ1tdO1xufTtcbi8qKlxuICogRGV0ZXJtaW5lcyB0aGUgZmlsdGVyIGluZm9ybWF0aW9uIGJhc2VkIG9uIHRoZSBmaWx0ZXIgcmVzdHJpY3Rpb25zIGFubm9hdGlvbi5cbiAqXG4gKiBAcGFyYW0gZmlsdGVyUmVzdHJpY3Rpb25zIFRoZSBmaWx0ZXIgcmVzdHJpY3Rpb25zIGFubm90YXRpb25cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBmaWx0ZXIgcmVzdHJpY3Rpb24gaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbHRlclJlc3RyaWN0aW9uc0luZm8oZmlsdGVyUmVzdHJpY3Rpb25zPzogTWV0YU1vZGVsVHlwZTxGaWx0ZXJSZXN0cmljdGlvbnNUeXBlPik6IEZpbHRlclJlc3RyaWN0aW9uc0luZm9UeXBlIHtcblx0bGV0IGksIHByb3BlcnR5TmFtZTtcblx0Y29uc3QgZmlsdGVyUmVzdHJpY3Rpb25zSW5mbzogRmlsdGVyUmVzdHJpY3Rpb25zSW5mb1R5cGUgPSB7XG5cdFx0ZmlsdGVyYWJsZTogdHJ1ZSxcblx0XHRyZXF1aXJlc0ZpbHRlcjogKGZpbHRlclJlc3RyaWN0aW9ucz8uUmVxdWlyZXNGaWx0ZXIgYXMgYm9vbGVhbikgfHwgZmFsc2UsXG5cdFx0cHJvcGVydHlJbmZvOiB7fSxcblx0XHRyZXF1aXJlZFByb3BlcnRpZXM6IFtdXG5cdH07XG5cblx0aWYgKCFmaWx0ZXJSZXN0cmljdGlvbnMpIHtcblx0XHRyZXR1cm4gZmlsdGVyUmVzdHJpY3Rpb25zSW5mbztcblx0fVxuXG5cdGlmIChmaWx0ZXJSZXN0cmljdGlvbnMuRmlsdGVyYWJsZSA9PT0gZmFsc2UpIHtcblx0XHRmaWx0ZXJSZXN0cmljdGlvbnNJbmZvLmZpbHRlcmFibGUgPSBmYWxzZTtcblx0fVxuXG5cdC8vSGllcmFyY2hpY2FsIENhc2Vcblx0aWYgKGZpbHRlclJlc3RyaWN0aW9ucy5SZXF1aXJlZFByb3BlcnRpZXMpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgZmlsdGVyUmVzdHJpY3Rpb25zLlJlcXVpcmVkUHJvcGVydGllcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0cHJvcGVydHlOYW1lID0gZmlsdGVyUmVzdHJpY3Rpb25zLlJlcXVpcmVkUHJvcGVydGllc1tpXS4kUHJvcGVydHlQYXRoO1xuXHRcdFx0ZmlsdGVyUmVzdHJpY3Rpb25zSW5mby5yZXF1aXJlZFByb3BlcnRpZXMucHVzaChwcm9wZXJ0eU5hbWUpO1xuXHRcdH1cblx0fVxuXG5cdGlmIChmaWx0ZXJSZXN0cmljdGlvbnMuTm9uRmlsdGVyYWJsZVByb3BlcnRpZXMpIHtcblx0XHRmb3IgKGkgPSAwOyBpIDwgZmlsdGVyUmVzdHJpY3Rpb25zLk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBmaWx0ZXJSZXN0cmljdGlvbnMuTm9uRmlsdGVyYWJsZVByb3BlcnRpZXNbaV0uJFByb3BlcnR5UGF0aDtcblx0XHRcdGZpbHRlclJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3Byb3BlcnR5TmFtZV0gPSB7XG5cdFx0XHRcdGZpbHRlcmFibGU6IGZhbHNlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxuXG5cdGlmIChmaWx0ZXJSZXN0cmljdGlvbnMuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucykge1xuXHRcdC8vVEJEXG5cdFx0Zm9yIChpID0gMDsgaSA8IGZpbHRlclJlc3RyaWN0aW9ucy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRwcm9wZXJ0eU5hbWUgPSBmaWx0ZXJSZXN0cmljdGlvbnMuRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uc1tpXS5Qcm9wZXJ0eT8uJFByb3BlcnR5UGF0aDtcblx0XHRcdGlmIChwcm9wZXJ0eU5hbWUpIHtcblx0XHRcdFx0ZmlsdGVyUmVzdHJpY3Rpb25zSW5mby5wcm9wZXJ0eUluZm9bcHJvcGVydHlOYW1lXSA9IHtcblx0XHRcdFx0XHRmaWx0ZXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdGFsbG93ZWRFeHByZXNzaW9uczogZmlsdGVyUmVzdHJpY3Rpb25zLkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnNbaV0uQWxsb3dlZEV4cHJlc3Npb25zIGFzIHN0cmluZ1tdXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGZpbHRlclJlc3RyaWN0aW9uc0luZm87XG59XG5cbi8vIFVzZWQgaW4gQ2hhcnREZWxlZ2F0ZSBhbmQgVmFsdWVIZWxwLVRhYmxlRGVsZWdhdGVcbi8qKlxuICogUHJvdmlkZXMgdGhlIGluZm9ybWF0aW9uIGlmIHRoZSBGaWx0ZXJFeHByZXNzaW9uIGlzIGEgbXVsdGlWYWx1ZSBGaWx0ZXIgRXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gZmlsdGVyRXhwcmVzc2lvbiBUaGUgRmlsdGVyRXhwcmVzc2lvblR5cGVcbiAqIEByZXR1cm5zIEEgYm9vbGVhbiB2YWx1ZSB3ZXRoZXIgaXQgaXMgYSBtdWx0aVZhbHVlIEZpbHRlciBFeHByZXNzaW9uIG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNdWx0aVZhbHVlRmlsdGVyRXhwcmVzc2lvbihmaWx0ZXJFeHByZXNzaW9uOiBTdHJpbmcpIHtcblx0bGV0IGlzTXVsdGlWYWx1ZSA9IHRydWU7XG5cblx0Ly9TaW5nbGVWYWx1ZSB8IE11bHRpVmFsdWUgfCBTaW5nbGVSYW5nZSB8IE11bHRpUmFuZ2UgfCBTZWFyY2hFeHByZXNzaW9uIHwgTXVsdGlSYW5nZU9yU2VhcmNoRXhwcmVzc2lvblxuXHRzd2l0Y2ggKGZpbHRlckV4cHJlc3Npb24pIHtcblx0XHRjYXNlIFwiU2VhcmNoRXhwcmVzc2lvblwiOlxuXHRcdGNhc2UgXCJTaW5nbGVSYW5nZVwiOlxuXHRcdGNhc2UgXCJTaW5nbGVWYWx1ZVwiOlxuXHRcdFx0aXNNdWx0aVZhbHVlID0gZmFsc2U7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblxuXHRyZXR1cm4gaXNNdWx0aVZhbHVlO1xufVxuXG4vLyBETyBOT1QgVVNFLCBvbmx5IGZvciB0ZXN0cyBhbmQgaW50ZXJuYWxseSBpbiB0aGlzIGZpbGVcbmV4cG9ydCBjb25zdCBNRVRBTU9ERUxfRlVOQ1RJT05TID0ge1xuXHRnZXRSZXF1aXJlZFByb3BlcnRpZXMsXG5cdGdldFJlcXVpcmVkUHJvcGVydGllc0Zyb21Bbm5vdGF0aW9ucyxcblx0aGFzUmVzdHJpY3RlZFByb3BlcnRpZXNJbkFubm90YXRpb25zLFxuXHRnZXRSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zLFxuXHRnZXROYXZpZ2F0aW9uUmVzdHJpY3Rpb25zLFxuXHRnZXRBbGxDdXN0b21BZ2dyZWdhdGVzXG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBcUJBO0VBQ08sU0FBU0EscUJBQXFCLENBQUNDLFFBQWdCLEVBQUVDLFNBQXlCLEVBQUU7SUFDbEYsSUFBSUMsa0JBQWtCO0lBQ3RCLElBQUlDLDRCQUE0QjtJQUNoQyxNQUFNQyxjQUFjLEdBQUcsNEJBQTRCO0lBQ25ELE1BQU1DLHNCQUFzQixH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
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/type/EDM","sap/fe/macros/ODataMetaModelUtil"],function(e,t,i,r,n){"use strict";var o={};var s=r.isTypeFilterable;var a=t.pathInModel;var l=t.or;var c=t.not;var u=t.compileExpression;var d=e.IssueSeverity;var p=e.IssueCategoryType;var g=e.IssueCategory;function f(e,t){let r;let n;const o="$NavigationPropertyBinding";const s="@Org.OData.Capabilities.V1.SearchRestrictions";const a=e.replaceAll("%2F","/").split("/").filter(i.filterOutNavPropBinding);const l=i.getEntitySetPath(e,t);const c=l.split("/").filter(i.filterOutNavPropBinding);const u=t.getObject(`/${a.join("/")}/$ContainsTarget`)?true:false;const d=u?a[a.length-1]:"";if(!u){r=t.getObject(`${l}${s}`)}if(a.length>1){const e=u?d:c[c.length-1];const i=u?l:`/${c.slice(0,-1).join(`/${o}/`)}`;const r=N.getNavigationRestrictions(t,i,e.replaceAll("%2F","/"));n=r===null||r===void 0?void 0:r.SearchRestrictions}return n??r}o.getSearchRestrictions=f;function v(e,t,i){const r=e.getObject(`${t}@Org.OData.Capabilities.V1.NavigationRestrictions`);const n=r===null||r===void 0?void 0:r.RestrictedProperties;return n===null||n===void 0?void 0:n.find(function(e){var t;return((t=e.NavigationProperty)===null||t===void 0?void 0:t.$NavigationPropertyPath)===i})}o.getNavigationRestrictions=v;function P(e,t,i){let r=false;const n=e.getObject(`${t}@Org.OData.Capabilities.V1.FilterRestrictions`);if(n!==null&&n!==void 0&&n.NonFilterableProperties){r=n.NonFilterableProperties.some(function(e){return e.$NavigationPropertyPath===i||e.$PropertyPath===i})}return r}function $(e,t,i){let r=false;const o=e.getObject(t+"@Org.OData.Aggregation.V1.ApplySupported")?true:false;if(o){const o=e.getObject(`${t}@`);const s=n.getAllCustomAggregates(o);const a=s?Object.keys(s):undefined;if(a!==null&&a!==void 0&&a.includes(i)){r=true}}return r}o.isCustomAggregate=$;function h(e,t,i,r){let n=e.split("/").length===2&&!i.includes("/")?!P(t,e,i)&&!$(t,e,i):!b(t,e,i);if(n&&r){const e=m(r);if(e){n=e?s(e):false}else{n=false}}return n}function b(e,t,i){const r=`${t}/${i}`,n=r.split("/").splice(0,2),o=r.split("/").splice(2);let s=false,a="";t=n.join("/");s=o.some(function(i,r,n){if(a.length>0){a+=`/${i}`}else{a=i}if(r===n.length-2){const r=N.getNavigationRestrictions(e,t,i);const o=r===null||r===void 0?void 0:r.FilterRestrictions;const s=o===null||o===void 0?void 0:o.NonFilterableProperties;const a=n[n.length-1];if(s!==null&&s!==void 0&&s.find(function(e){return e.$PropertyPath===a})){return true}}if(r===n.length-1){s=P(e,t,a)}else if(e.getObject(`${t}/$NavigationPropertyBinding/${i}`)){s=P(e,t,a);a="";t=`/${e.getObject(`${t}/$NavigationPropertyBinding/${i}`)}`}return s});return s}function m(e){let t=e.getProperty("$Type");if(!e.getProperty("$kind")){switch(t){case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":t=undefined;break;case"com.sap.vocabularies.UI.v1.DataField":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldWithUrl":case"com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldWithAction":t=e.getProperty("Value/$Path/$Type");break;case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":default:const i=e.getProperty("Target/$AnnotationPath");if(i){if(i.includes("com.sap.vocabularies.Communication.v1.Contact")){t=e.getProperty("Target/$AnnotationPath/fn/$Path/$Type")}else if(i.includes("com.sap.vocabularies.UI.v1.DataPoint")){t=e.getProperty("Value/$Path/$Type")}else{t=undefined}}else{t=undefined}break}}return t}function R(e,t,i,r){if(typeof i!=="string"){throw new Error("sProperty parameter must be a string")}if(e.getObject(`${t}/@com.sap.vocabularies.Common.v1.ResultContext`)===true){return true}const n=e.createBindingContext(`${t}/${i}`);if(n&&!r){if(n.getProperty("@com.sap.vocabularies.UI.v1.Hidden")===true||n.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter")===true){return false}const e=n.getProperty("@com.sap.vocabularies.UI.v1.Hidden/$Path");const t=n.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter/$Path");if(e&&t){return u(c(l(a(e),a(t))))}else if(e){return u(c(a(e)))}else if(t){return u(c(a(t)))}}return h(t,e,i,n)}o.isPropertyFilterable=R;function O(e,t,i){const r=e.getObject(`${t}/`).$Key;const n=[];const o=[];const s=e.getObject(`${t}/`);for(const a in s){if(s[a].$kind&&s[a].$kind==="Property"){const l=e.getObject(`${t}/${a}@`)||{},c=r.includes(a),u=l["@Org.OData.Core.V1.Immutable"],f=!l["@Org.OData.Core.V1.Computed"],v=!l["@com.sap.vocabularies.UI.v1.Hidden"],P=l["@Org.OData.Core.V1.ComputedDefaultValue"],$=c&&s[a].$Type==="Edm.Guid"?P&&l["@com.sap.vocabularies.Common.v1.Text"]:false;if(($||c&&s[a].$Type!=="Edm.Guid")&&f&&v){n.push(a)}else if(u&&f&&v){o.push(a)}if(!f&&P&&i){const e=i.getDiagnostics();const t="Core.ComputedDefaultValue is ignored as Core.Computed is already set to true";e.addIssue(g.Annotation,d.Medium,t,p,p.Annotations.IgnoredAnnotation)}}}const a=N.getRequiredPropertiesFromInsertRestrictions(t,e);if(a.length){a.forEach(function(i){const r=e.getObject(`${t}/${i}@`),s=!(r!==null&&r!==void 0&&r["@com.sap.vocabularies.UI.v1.Hidden"]);if(s&&!n.includes(i)&&!o.includes(i)){n.push(i)}})}return n.concat(o)}o.getNonComputedVisibleFields=O;function y(e,t){let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;const n=[];let o=[];const s="$NavigationPropertyBinding";let a=null;if(e.endsWith("$")){e=e.replace("/$","")}const l=e.replaceAll("%2F","/").split("/").filter(i.filterOutNavPropBinding);const c=i.getEntitySetPath(e,t);const u=c.split("/").filter(i.filterOutNavPropBinding);const d=t.getObject(`/${l.join("/")}/$ContainsTarget`)?true:false;const p=d?l[l.length-1]:"";if(!d){a=t.getObject(`${c}@`)}if(l.length>1){const e=d?p:u[u.length-1];const i=d?c:`/${u.slice(0,-1).join(`/${s}/`)}`;const n=N.getNavigationRestrictions(t,i,e.replaceAll("%2F","/"));if(n!==undefined&&N.hasRestrictedPropertiesInAnnotations(n,true,r)){var g,f;o=r?((g=n.UpdateRestrictions)===null||g===void 0?void 0:g.RequiredProperties)??[]:((f=n.InsertRestrictions)===null||f===void 0?void 0:f.RequiredProperties)??[]}if(!o.length&&N.hasRestrictedPropertiesInAnnotations(a,false,r)){o=N.getRequiredPropertiesFromAnnotations(a,r)}}else if(N.hasRestrictedPropertiesInAnnotations(a,false,r)){o=N.getRequiredPropertiesFromAnnotations(a,r)}o.forEach(function(e){const t=e.$PropertyPath;n.push(t)});return n}function I(e,t){return N.getRequiredProperties(e,t)}o.getRequiredPropertiesFromInsertRestrictions=I;function F(e,t){return N.getRequiredProperties(e,t,true)}o.getRequiredPropertiesFromUpdateRestrictions=F;function C(e){var t;let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(i){var r;return(e===null||e===void 0?void 0:(r=e["@Org.OData.Capabilities.V1.UpdateRestrictions"])===null||r===void 0?void 0:r.RequiredProperties)??[]}return(e===null||e===void 0?void 0:(t=e["@Org.OData.Capabilities.V1.InsertRestrictions"])===null||t===void 0?void 0:t.RequiredProperties)??[]}function D(e){var t;let i=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;let r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(i){var n;const t=e;if(r){var o;return t!==null&&t!==void 0&&(o=t.UpdateRestrictions)!==null&&o!==void 0&&o.RequiredProperties?true:false}return t!==null&&t!==void 0&&(n=t.InsertRestrictions)!==null&&n!==void 0&&n.RequiredProperties?true:false}else if(r){var s;const t=e;return t!==null&&t!==void 0&&(s=t["@Org.OData.Capabilities.V1.UpdateRestrictions"])!==null&&s!==void 0&&s.RequiredProperties?true:false}const a=e;return a!==null&&a!==void 0&&(t=a["@Org.OData.Capabilities.V1.InsertRestrictions"])!==null&&t!==void 0&&t.RequiredProperties?true:false}const N={getRequiredProperties:y,getRequiredPropertiesFromAnnotations:C,hasRestrictedPropertiesInAnnotations:D,getRequiredPropertiesFromInsertRestrictions:I,getNavigationRestrictions:v};o.METAMODEL_FUNCTIONS=N;return o},false);
|
|
5
|
+
sap.ui.define(["sap/fe/core/converters/helpers/IssueManager","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/type/EDM"],function(e,t,r,i){"use strict";var o={};var n=i.isTypeFilterable;var s=t.pathInModel;var a=t.or;var l=t.not;var c=t.compileExpression;var u=e.IssueSeverity;var p=e.IssueCategoryType;var g=e.IssueCategory;function d(e,t){let i;let o;const n="$NavigationPropertyBinding";const s="@Org.OData.Capabilities.V1.SearchRestrictions";const a=e.replaceAll("%2F","/").split("/").filter(r.filterOutNavPropBinding);const l=r.getEntitySetPath(e,t);const c=l.split("/").filter(r.filterOutNavPropBinding);const u=t.getObject(`/${a.join("/")}/$ContainsTarget`)?true:false;const p=u?a[a.length-1]:"";if(!u){i=t.getObject(`${l}${s}`)}if(a.length>1){const e=u?p:c[c.length-1];const r=u?l:`/${c.slice(0,-1).join(`/${n}/`)}`;const i=U.getNavigationRestrictions(t,r,e.replaceAll("%2F","/"));o=i===null||i===void 0?void 0:i.SearchRestrictions}return o??i}o.getSearchRestrictions=d;function f(e,t,r){const i=e.getObject(`${t}@Org.OData.Capabilities.V1.NavigationRestrictions`);const o=i===null||i===void 0?void 0:i.RestrictedProperties;return o===null||o===void 0?void 0:o.find(function(e){var t;return((t=e.NavigationProperty)===null||t===void 0?void 0:t.$NavigationPropertyPath)===r})}o.getNavigationRestrictions=f;function v(e,t,r){let i=false;const o=e.getObject(`${t}@Org.OData.Capabilities.V1.FilterRestrictions`);if(o!==null&&o!==void 0&&o.NonFilterableProperties){i=o.NonFilterableProperties.some(function(e){return e.$NavigationPropertyPath===r||e.$PropertyPath===r})}return i}function P(e,t,r){let i=false;const o=e.getObject(t+"@Org.OData.Aggregation.V1.ApplySupported")?true:false;if(o){const o=e.getObject(`${t}@`);const n=U.getAllCustomAggregates(o);const s=n?Object.keys(n):undefined;if(s!==null&&s!==void 0&&s.includes(r)){i=true}}return i}o.isCustomAggregate=P;function b(e,t,r,i){let o=e.split("/").length===2&&!r.includes("/")?!v(t,e,r)&&!P(t,e,r):!h(t,e,r);if(o&&i){const e=$(i);if(e){o=e?n(e):false}else{o=false}}return o}function h(e,t,r){const i=`${t}/${r}`,o=i.split("/").splice(0,2),n=i.split("/").splice(2);let s=false,a="";t=o.join("/");s=n.some(function(r,i,o){if(a.length>0){a+=`/${r}`}else{a=r}if(i===o.length-2){const i=U.getNavigationRestrictions(e,t,r);const n=i===null||i===void 0?void 0:i.FilterRestrictions;const s=n===null||n===void 0?void 0:n.NonFilterableProperties;const a=o[o.length-1];if(s!==null&&s!==void 0&&s.find(function(e){return e.$PropertyPath===a})){return true}}if(i===o.length-1){s=v(e,t,a)}else if(e.getObject(`${t}/$NavigationPropertyBinding/${r}`)){s=v(e,t,a);a="";t=`/${e.getObject(`${t}/$NavigationPropertyBinding/${r}`)}`}return s});return s}function $(e){let t=e.getProperty("$Type");if(!e.getProperty("$kind")){switch(t){case"com.sap.vocabularies.UI.v1.DataFieldForAction":case"com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation":t=undefined;break;case"com.sap.vocabularies.UI.v1.DataField":case"com.sap.vocabularies.UI.v1.DataFieldWithNavigationPath":case"com.sap.vocabularies.UI.v1.DataFieldWithUrl":case"com.sap.vocabularies.UI.v1.DataFieldWithIntentBasedNavigation":case"com.sap.vocabularies.UI.v1.DataFieldWithAction":t=e.getProperty("Value/$Path/$Type");break;case"com.sap.vocabularies.UI.v1.DataFieldForAnnotation":default:const r=e.getProperty("Target/$AnnotationPath");if(r){if(r.includes("com.sap.vocabularies.Communication.v1.Contact")){t=e.getProperty("Target/$AnnotationPath/fn/$Path/$Type")}else if(r.includes("com.sap.vocabularies.UI.v1.DataPoint")){t=e.getProperty("Value/$Path/$Type")}else{t=undefined}}else{t=undefined}break}}return t}function y(e,t,r,i){if(typeof r!=="string"){throw new Error("sProperty parameter must be a string")}if(e.getObject(`${t}/@com.sap.vocabularies.Common.v1.ResultContext`)===true){return true}const o=e.createBindingContext(`${t}/${r}`);if(o&&!i){if(o.getProperty("@com.sap.vocabularies.UI.v1.Hidden")===true||o.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter")===true){return false}const e=o.getProperty("@com.sap.vocabularies.UI.v1.Hidden/$Path");const t=o.getProperty("@com.sap.vocabularies.UI.v1.HiddenFilter/$Path");if(e&&t){return c(l(a(s(e),s(t))))}else if(e){return c(l(s(e)))}else if(t){return c(l(s(t)))}}return b(t,e,r,o)}o.isPropertyFilterable=y;function R(e,t,r){const i=e.getObject(`${t}/`).$Key;const o=[];const n=[];const s=e.getObject(`${t}/`);for(const a in s){if(s[a].$kind&&s[a].$kind==="Property"){const l=e.getObject(`${t}/${a}@`)||{},c=i.includes(a),d=l["@Org.OData.Core.V1.Immutable"],f=!l["@Org.OData.Core.V1.Computed"],v=!l["@com.sap.vocabularies.UI.v1.Hidden"],P=l["@Org.OData.Core.V1.ComputedDefaultValue"],b=c&&s[a].$Type==="Edm.Guid"?P&&l["@com.sap.vocabularies.Common.v1.Text"]:false;if((b||c&&s[a].$Type!=="Edm.Guid")&&f&&v){o.push(a)}else if(d&&f&&v){n.push(a)}if(!f&&P&&r){const e=r.getDiagnostics();const t="Core.ComputedDefaultValue is ignored as Core.Computed is already set to true";e.addIssue(g.Annotation,u.Medium,t,p,p.Annotations.IgnoredAnnotation)}}}const a=U.getRequiredPropertiesFromInsertRestrictions(t,e);if(a.length){a.forEach(function(r){const i=e.getObject(`${t}/${r}@`),s=!(i!==null&&i!==void 0&&i["@com.sap.vocabularies.UI.v1.Hidden"]);if(s&&!o.includes(r)&&!n.includes(r)){o.push(r)}})}return o.concat(n)}o.getNonComputedVisibleFields=R;function m(e,t){let i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;const o=[];let n=[];const s="$NavigationPropertyBinding";let a=null;if(e.endsWith("$")){e=e.replace("/$","")}const l=e.replaceAll("%2F","/").split("/").filter(r.filterOutNavPropBinding);const c=r.getEntitySetPath(e,t);const u=c.split("/").filter(r.filterOutNavPropBinding);const p=t.getObject(`/${l.join("/")}/$ContainsTarget`)?true:false;const g=p?l[l.length-1]:"";if(!p){a=t.getObject(`${c}@`)}if(l.length>1){const e=p?g:u[u.length-1];const r=p?c:`/${u.slice(0,-1).join(`/${s}/`)}`;const o=U.getNavigationRestrictions(t,r,e.replaceAll("%2F","/"));if(o!==undefined&&U.hasRestrictedPropertiesInAnnotations(o,true,i)){var d,f;n=i?((d=o.UpdateRestrictions)===null||d===void 0?void 0:d.RequiredProperties)??[]:((f=o.InsertRestrictions)===null||f===void 0?void 0:f.RequiredProperties)??[]}if(!n.length&&U.hasRestrictedPropertiesInAnnotations(a,false,i)){n=U.getRequiredPropertiesFromAnnotations(a,i)}}else if(U.hasRestrictedPropertiesInAnnotations(a,false,i)){n=U.getRequiredPropertiesFromAnnotations(a,i)}n.forEach(function(e){const t=e.$PropertyPath;o.push(t)});return o}function O(e,t){return U.getRequiredProperties(e,t)}o.getRequiredPropertiesFromInsertRestrictions=O;function I(e,t){return U.getRequiredProperties(e,t,true)}o.getRequiredPropertiesFromUpdateRestrictions=I;function F(e){var t;let r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(r){var i;return(e===null||e===void 0?void 0:(i=e["@Org.OData.Capabilities.V1.UpdateRestrictions"])===null||i===void 0?void 0:i.RequiredProperties)??[]}return(e===null||e===void 0?void 0:(t=e["@Org.OData.Capabilities.V1.InsertRestrictions"])===null||t===void 0?void 0:t.RequiredProperties)??[]}function C(e){var t;let r=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;let i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(r){var o;const t=e;if(i){var n;return t!==null&&t!==void 0&&(n=t.UpdateRestrictions)!==null&&n!==void 0&&n.RequiredProperties?true:false}return t!==null&&t!==void 0&&(o=t.InsertRestrictions)!==null&&o!==void 0&&o.RequiredProperties?true:false}else if(i){var s;const t=e;return t!==null&&t!==void 0&&(s=t["@Org.OData.Capabilities.V1.UpdateRestrictions"])!==null&&s!==void 0&&s.RequiredProperties?true:false}const a=e;return a!==null&&a!==void 0&&(t=a["@Org.OData.Capabilities.V1.InsertRestrictions"])!==null&&t!==void 0&&t.RequiredProperties?true:false}function A(e){const t={};let r;for(const i in e){if(i.startsWith("@Org.OData.Aggregation.V1.CustomAggregate")){r=i.replace("@Org.OData.Aggregation.V1.CustomAggregate#","");const o=r.split("@");if(o.length==2){const r={};if(o[1]=="Org.OData.Aggregation.V1.ContextDefiningProperties"){r.contextDefiningProperties=e[i]}if(o[1]=="com.sap.vocabularies.Common.v1.Label"){r.label=e[i]}t[o[0]]=r}else if(o.length==1){t[o[0]]={name:o[0],propertyPath:o[0],label:`Custom Aggregate (${r})`,sortable:true,sortOrder:"both",custom:true}}}}return t}o.getAllCustomAggregates=A;function D(e){const t={sortable:true,propertyInfo:{}};const r=e["@Org.OData.Capabilities.V1.SortRestrictions"];if(!r){return t}if(r.Sortable===false){t.sortable=false}for(const e of r.NonSortableProperties||[]){const r=e.$PropertyPath;t.propertyInfo[r]={sortable:false}}for(const e of r.AscendingOnlyProperties||[]){const r=e.$PropertyPath;t.propertyInfo[r]={sortable:true,sortDirection:"asc"}}for(const e of r.DescendingOnlyProperties||[]){const r=e.$PropertyPath;t.propertyInfo[r]={sortable:true,sortDirection:"desc"}}return t}o.getSortRestrictionsInfo=D;function N(e){let t,r;const i={filterable:true,requiresFilter:(e===null||e===void 0?void 0:e.RequiresFilter)||false,propertyInfo:{},requiredProperties:[]};if(!e){return i}if(e.Filterable===false){i.filterable=false}if(e.RequiredProperties){for(t=0;t<e.RequiredProperties.length;t++){r=e.RequiredProperties[t].$PropertyPath;i.requiredProperties.push(r)}}if(e.NonFilterableProperties){for(t=0;t<e.NonFilterableProperties.length;t++){r=e.NonFilterableProperties[t].$PropertyPath;i.propertyInfo[r]={filterable:false}}}if(e.FilterExpressionRestrictions){for(t=0;t<e.FilterExpressionRestrictions.length;t++){var o;r=(o=e.FilterExpressionRestrictions[t].Property)===null||o===void 0?void 0:o.$PropertyPath;if(r){i.propertyInfo[r]={filterable:true,allowedExpressions:e.FilterExpressionRestrictions[t].AllowedExpressions}}}}return i}o.getFilterRestrictionsInfo=N;function q(e){let t=true;switch(e){case"SearchExpression":case"SingleRange":case"SingleValue":t=false;break;default:break}return t}o.isMultiValueFilterExpression=q;const U={getRequiredProperties:m,getRequiredPropertiesFromAnnotations:F,hasRestrictedPropertiesInAnnotations:C,getRequiredPropertiesFromInsertRestrictions:O,getNavigationRestrictions:f,getAllCustomAggregates:A};o.METAMODEL_FUNCTIONS=U;return o},false);
|
|
6
6
|
//# sourceMappingURL=MetaModelFunction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetaModelFunction.js","names":["sap","ui","define","IssueManager","BindingToolkit","ModelHelper","EDM","metaModelUtil","_exports","isTypeFilterable","pathInModel","or","not","compileExpression","IssueSeverity","IssueCategoryType","IssueCategory","getSearchRestrictions","fullPath","metaModel","searchRestrictions","navigationSearchRestrictions","navigationText","searchRestrictionsTerm","entityTypePathParts","replaceAll","split","filter","filterOutNavPropBinding","entitySetPath","getEntitySetPath","entitySetPathParts","isContainment","getObject","join","containmentNavPath","length","navPath","parentEntitySetPath","slice","navigationRestrictions","METAMODEL_FUNCTIONS","getNavigationRestrictions","SearchRestrictions","metaModelContext","navigationPath","restrictedProperties","RestrictedProperties","find","restrictedProperty","_restrictedProperty$N","NavigationProperty","$NavigationPropertyPath","isInNonFilterableProperties","metamodelContext","contextPath","isNotFilterable","filterRestrictionsAnnotation","NonFilterableProperties","some","property","$PropertyPath","isCustomAggregate","interanlIsCustomAggregate","isApplySupported","entitySetAnnotations","customAggregatesAnnotations","getAllCustomAggregates","customAggregates","Object","keys","undefined","includes","checkEntitySetIsFilterable","navigationContext","isFilterable","isContextPathFilterable","propertyDataType","getPropertyDataType","esParts","splice","contexts","isNoFilterable","context","item","index","array","filterRestrictions","FilterRestrictions","nonFilterableProperties","targetPropertyPath","propertyPath","dataType","getProperty","annotationPath","isPropertyFilterable","skipHiddenFilters","Error","createBindingContext","hiddenPath","hiddenFilterPath","getNonComputedVisibleFields","path","appComponent","technicalKeys","$Key","nonComputedVisibleKeys","immutableVisibleFields","entityType","$kind","annotations","isKey","isImmutable","isNonComputed","isVisible","isComputedDefaultValue","isKeyComputedDefaultValueWithText","$Type","push","diagnostics","getDiagnostics","message","addIssue","Annotation","Medium","Annotations","IgnoredAnnotation","requiredProperties","getRequiredPropertiesFromInsertRestrictions","forEach","concat","getRequiredProperties","checkUpdateRestrictions","arguments","requiredPropertiesWithPath","entitySetAnnotation","endsWith","replace","hasRestrictedPropertiesInAnnotations","_navigationRestrictio","_navigationRestrictio2","UpdateRestrictions","RequiredProperties","InsertRestrictions","getRequiredPropertiesFromAnnotations","requiredProperty","getRequiredPropertiesFromUpdateRestrictions","_annotations$OrgODa2","_annotations$OrgODa","_entitytSetAnnotation","isNavigationRestrictions","_navAnnotations$Inser","navAnnotations","_navAnnotations$Updat","_entityAnnotations$O","entityAnnotations","entitytSetAnnotations"],"sources":["MetaModelFunction-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,8CAA+C,qCAAsC,kCAAmC,uBAAwB,oCAAqC,SAAUC,EAAcC,EAAgBC,EAAaC,EAAKC,GAC5P,aAEA,IAAIC,EAAW,CAAC,EAChB,IAAIC,EAAmBH,EAAIG,iBAC3B,IAAIC,EAAcN,EAAeM,YACjC,IAAIC,EAAKP,EAAeO,GACxB,IAAIC,EAAMR,EAAeQ,IACzB,IAAIC,EAAoBT,EAAeS,kBACvC,IAAIC,EAAgBX,EAAaW,cACjC,IAAIC,EAAoBZ,EAAaY,kBACrC,IAAIC,EAAgBb,EAAaa,cAEjC,SAASC,EAAsBC,EAAUC,GACvC,IAAIC,EACJ,IAAIC,EACJ,MAAMC,EAAiB,6BACvB,MAAMC,EAAyB,gDAC/B,MAAMC,EAAsBN,EAASO,WAAW,MAAO,KAAKC,MAAM,KAAKC,OAAOtB,EAAYuB,yBAC1F,MAAMC,EAAgBxB,EAAYyB,iBAAiBZ,EAAUC,GAC7D,MAAMY,EAAqBF,EAAcH,MAAM,KAAKC,OAAOtB,EAAYuB,yBACvE,MAAMI,EAAgBb,EAAUc,UAAU,IAAIT,EAAoBU,KAAK,wBAA0B,KAAO,MACxG,MAAMC,EAAqBH,EAAgBR,EAAoBA,EAAoBY,OAAS,GAAK,GAIjG,IAAKJ,EAAe,CAClBZ,EAAqBD,EAAUc,UAAU,GAAGJ,IAAgBN,IAC9D,CACA,GAAIC,EAAoBY,OAAS,EAAG,CAClC,MAAMC,EAAUL,EAAgBG,EAAqBJ,EAAmBA,EAAmBK,OAAS,GAEpG,MAAME,EAAsBN,EAAgBH,EAAgB,IAAIE,EAAmBQ,MAAM,GAAI,GAAGL,KAAK,IAAIZ,QAIzG,MAAMkB,EAAyBC,EAAoBC,0BAA0BvB,EAAWmB,EAAqBD,EAAQZ,WAAW,MAAO,MACvIJ,EAA+BmB,IAA2B,MAAQA,SAAgC,OAAS,EAAIA,EAAuBG,kBACxI,CACA,OAAOtB,GAAgCD,CACzC,CAGAZ,EAASS,sBAAwBA,EACjC,SAASyB,EAA0BE,EAAkBf,EAAegB,GAClE,MAAML,EAAyBI,EAAiBX,UAAU,GAAGJ,sDAC7D,MAAMiB,EAAuBN,IAA2B,MAAQA,SAAgC,OAAS,EAAIA,EAAuBO,qBACpI,OAAOD,IAAyB,MAAQA,SAA8B,OAAS,EAAIA,EAAqBE,KAAK,SAAUC,GACrH,IAAIC,EACJ,QAASA,EAAwBD,EAAmBE,sBAAwB,MAAQD,SAA+B,OAAS,EAAIA,EAAsBE,2BAA6BP,CACrL,EACF,CAGArC,EAASkC,0BAA4BA,EACrC,SAASW,EAA4BC,EAAkBzB,EAAe0B,GACpE,IAAIC,EAAkB,MACtB,MAAMC,EAA+BH,EAAiBrB,UAAU,GAAGJ,kDACnE,GAAI4B,IAAiC,MAAQA,SAAsC,GAAKA,EAA6BC,wBAAyB,CAC5IF,EAAkBC,EAA6BC,wBAAwBC,KAAK,SAAUC,GACpF,OAAOA,EAASR,0BAA4BG,GAAeK,EAASC,gBAAkBN,CACxF,EACF,CACA,OAAOC,CACT,CAGA,SAASM,EAAkBR,EAAkBzB,EAAe0B,GAC1D,IAAIQ,EAA4B,MAEhC,MAAMC,EAAmBV,EAAiBrB,UAAUJ,EAAgB,4CAA8C,KAAO,MACzH,GAAImC,EAAkB,CACpB,MAAMC,EAAuBX,EAAiBrB,UAAU,GAAGJ,MAC3D,MAAMqC,EAA8B3D,EAAc4D,uBAAuBF,GACzE,MAAMG,EAAmBF,EAA8BG,OAAOC,KAAKJ,GAA+BK,UAClG,GAAIH,IAAqB,MAAQA,SAA0B,GAAKA,EAAiBI,SAASjB,GAAc,CACtGQ,EAA4B,IAC9B,CACF,CACA,OAAOA,CACT,CAGAvD,EAASsD,kBAAoBA,EAC7B,SAASW,EAA2B5C,EAAee,EAAkBgB,EAAUc,GAC7E,IAAIC,EAAe9C,EAAcH,MAAM,KAAKU,SAAW,IAAMwB,EAASY,SAAS,MAAQnB,EAA4BT,EAAkBf,EAAe+B,KAAcE,EAAkBlB,EAAkBf,EAAe+B,IAAagB,EAAwBhC,EAAkBf,EAAe+B,GAE3R,GAAIe,GAAgBD,EAAmB,CACrC,MAAMG,EAAmBC,EAAoBJ,GAC7C,GAAIG,EAAkB,CACpBF,EAAeE,EAAmBpE,EAAiBoE,GAAoB,KACzE,KAAO,CACLF,EAAe,KACjB,CACF,CACA,OAAOA,CACT,CAGA,SAASC,EAAwBhC,EAAkBf,EAAe0B,GAChE,MAAMrC,EAAW,GAAGW,KAAiB0B,IACnCwB,EAAU7D,EAASQ,MAAM,KAAKsD,OAAO,EAAG,GACxCC,EAAW/D,EAASQ,MAAM,KAAKsD,OAAO,GACxC,IAAIE,EAAiB,MACnBC,EAAU,GACZtD,EAAgBkD,EAAQ7C,KAAK,KAC7BgD,EAAiBD,EAAStB,KAAK,SAAUyB,EAAMC,EAAOC,GACpD,GAAIH,EAAQ/C,OAAS,EAAG,CACtB+C,GAAW,IAAIC,GACjB,KAAO,CACLD,EAAUC,CACZ,CACA,GAAIC,IAAUC,EAAMlD,OAAS,EAAG,CAE9B,MAAMI,EAAyBC,EAAoBC,0BAA0BE,EAAkBf,EAAeuD,GAC9G,MAAMG,EAAqB/C,IAA2B,MAAQA,SAAgC,OAAS,EAAIA,EAAuBgD,mBAClI,MAAMC,EAA0BF,IAAuB,MAAQA,SAA4B,OAAS,EAAIA,EAAmB7B,wBAC3H,MAAMgC,EAAqBJ,EAAMA,EAAMlD,OAAS,GAChD,GAAIqD,IAA4B,MAAQA,SAAiC,GAAKA,EAAwBzC,KAAK,SAAU2C,GACnH,OAAOA,EAAa9B,gBAAkB6B,CACxC,GAAI,CACF,OAAO,IACT,CACF,CACA,GAAIL,IAAUC,EAAMlD,OAAS,EAAG,CAE9B8C,EAAiB7B,EAA4BT,EAAkBf,EAAesD,EAChF,MAAO,GAAIvC,EAAiBX,UAAU,GAAGJ,gCAA4CuD,KAAS,CAE5FF,EAAiB7B,EAA4BT,EAAkBf,EAAesD,GAC9EA,EAAU,GAEVtD,EAAgB,IAAIe,EAAiBX,UAAU,GAAGJ,gCAA4CuD,MAChG,CACA,OAAOF,CACT,GACA,OAAOA,CACT,CAIA,SAASJ,EAAoBJ,GAC3B,IAAIkB,EAAWlB,EAAkBmB,YAAY,SAE7C,IAAKnB,EAAkBmB,YAAY,SAAU,CAC3C,OAAQD,GACN,IAAK,gDACL,IAAK,+DACHA,EAAWrB,UACX,MACF,IAAK,uCACL,IAAK,yDACL,IAAK,8CACL,IAAK,gEACL,IAAK,iDACHqB,EAAWlB,EAAkBmB,YAAY,qBACzC,MACF,IAAK,oDACL,QACE,MAAMC,EAAiBpB,EAAkBmB,YAAY,0BACrD,GAAIC,EAAgB,CAClB,GAAIA,EAAetB,SAAS,iDAAkD,CAC5EoB,EAAWlB,EAAkBmB,YAAY,wCAC3C,MAAO,GAAIC,EAAetB,SAAS,wCAAyC,CAC1EoB,EAAWlB,EAAkBmB,YAAY,oBAC3C,KAAO,CAELD,EAAWrB,SACb,CACF,KAAO,CACLqB,EAAWrB,SACb,CACA,MAEN,CACA,OAAOqB,CACT,CAIA,SAASG,EAAqBnD,EAAkBf,EAAe+B,EAAUoC,GACvE,UAAWpC,IAAa,SAAU,CAChC,MAAM,IAAIqC,MAAM,uCAClB,CAGA,GAAIrD,EAAiBX,UAAU,GAAGJ,qDAAmE,KAAM,CACzG,OAAO,IACT,CACA,MAAM6C,EAAoB9B,EAAiBsD,qBAAqB,GAAGrE,KAAiB+B,KACpF,GAAIc,IAAsBsB,EAAmB,CAC3C,GAAItB,EAAkBmB,YAAY,wCAA0C,MAAQnB,EAAkBmB,YAAY,8CAAgD,KAAM,CACtK,OAAO,KACT,CACA,MAAMM,EAAazB,EAAkBmB,YAAY,4CACjD,MAAMO,EAAmB1B,EAAkBmB,YAAY,kDACvD,GAAIM,GAAcC,EAAkB,CAClC,OAAOvF,EAAkBD,EAAID,EAAGD,EAAYyF,GAAazF,EAAY0F,KACvE,MAAO,GAAID,EAAY,CACrB,OAAOtF,EAAkBD,EAAIF,EAAYyF,IAC3C,MAAO,GAAIC,EAAkB,CAC3B,OAAOvF,EAAkBD,EAAIF,EAAY0F,IAC3C,CACF,CACA,OAAO3B,EAA2B5C,EAAee,EAAkBgB,EAAUc,EAC/E,CAGAlE,EAASuF,qBAAuBA,EAChC,SAASM,EAA4BzD,EAAkB0D,EAAMC,GAC3D,MAAMC,EAAgB5D,EAAiBX,UAAU,GAAGqE,MAASG,KAC7D,MAAMC,EAAyB,GAC/B,MAAMC,EAAyB,GAC/B,MAAMC,EAAahE,EAAiBX,UAAU,GAAGqE,MACjD,IAAK,MAAMlB,KAAQwB,EAAY,CAC7B,GAAIA,EAAWxB,GAAMyB,OAASD,EAAWxB,GAAMyB,QAAU,WAAY,CACnE,MAAMC,EAAclE,EAAiBX,UAAU,GAAGqE,KAAQlB,OAAY,CAAC,EACrE2B,EAAQP,EAAchC,SAASY,GAC/B4B,EAAcF,EAAY,gCAC1BG,GAAiBH,EAAY,+BAC7BI,GAAaJ,EAAY,sCACzBK,EAAyBL,EAAY,2CACrCM,EAAoCL,GAASH,EAAWxB,GAAMiC,QAAU,WAAaF,GAA0BL,EAAY,wCAA0C,MACvK,IAAKM,GAAqCL,GAASH,EAAWxB,GAAMiC,QAAU,aAAeJ,GAAiBC,EAAW,CACvHR,EAAuBY,KAAKlC,EAC9B,MAAO,GAAI4B,GAAeC,GAAiBC,EAAW,CACpDP,EAAuBW,KAAKlC,EAC9B,CACA,IAAK6B,GAAiBE,GAA0BZ,EAAc,CAC5D,MAAMgB,EAAchB,EAAaiB,iBACjC,MAAMC,EAAU,+EAChBF,EAAYG,SAAS1G,EAAc2G,WAAY7G,EAAc8G,OAAQH,EAAS1G,EAAmBA,EAAkB8G,YAAYC,kBACjI,CACF,CACF,CACA,MAAMC,EAAqBtF,EAAoBuF,4CAA4C1B,EAAM1D,GACjG,GAAImF,EAAmB3F,OAAQ,CAC7B2F,EAAmBE,QAAQ,SAAUrE,GACnC,MAAMkD,EAAclE,EAAiBX,UAAU,GAAGqE,KAAQ1C,MACxDsD,IAAcJ,IAAgB,MAAQA,SAAqB,GAAKA,EAAY,uCAC9E,GAAII,IAAcR,EAAuBlC,SAASZ,KAAc+C,EAAuBnC,SAASZ,GAAW,CACzG8C,EAAuBY,KAAK1D,EAC9B,CACF,EACF,CACA,OAAO8C,EAAuBwB,OAAOvB,EACvC,CAEAnG,EAAS6F,4BAA8BA,EACvC,SAAS8B,EAAsB7B,EAAM1D,GACnC,IAAIwF,EAA0BC,UAAUjG,OAAS,GAAKiG,UAAU,KAAO9D,UAAY8D,UAAU,GAAK,MAClG,MAAMN,EAAqB,GAC3B,IAAIO,EAA6B,GACjC,MAAMhH,EAAiB,6BACvB,IAAIiH,EAAsB,KAC1B,GAAIjC,EAAKkC,SAAS,KAAM,CAEtBlC,EAAOA,EAAKmC,QAAQ,KAAM,GAC5B,CACA,MAAMjH,EAAsB8E,EAAK7E,WAAW,MAAO,KAAKC,MAAM,KAAKC,OAAOtB,EAAYuB,yBACtF,MAAMC,EAAgBxB,EAAYyB,iBAAiBwE,EAAM1D,GACzD,MAAMb,EAAqBF,EAAcH,MAAM,KAAKC,OAAOtB,EAAYuB,yBACvE,MAAMI,EAAgBY,EAAiBX,UAAU,IAAIT,EAAoBU,KAAK,wBAA0B,KAAO,MAC/G,MAAMC,EAAqBH,EAAgBR,EAAoBA,EAAoBY,OAAS,GAAK,GAIjG,IAAKJ,EAAe,CAClBuG,EAAsB3F,EAAiBX,UAAU,GAAGJ,KACtD,CACA,GAAIL,EAAoBY,OAAS,EAAG,CAClC,MAAMC,EAAUL,EAAgBG,EAAqBJ,EAAmBA,EAAmBK,OAAS,GACpG,MAAME,EAAsBN,EAAgBH,EAAgB,IAAIE,EAAmBQ,MAAM,GAAI,GAAGL,KAAK,IAAIZ,QAGzG,MAAMkB,EAAyBC,EAAoBC,0BAA0BE,EAAkBN,EAAqBD,EAAQZ,WAAW,MAAO,MAC9I,GAAIe,IAA2B+B,WAAa9B,EAAoBiG,qCAAqClG,EAAwB,KAAM4F,GAA0B,CAC3J,IAAIO,EAAuBC,EAC3BN,EAA6BF,IAA4BO,EAAwBnG,EAAuBqG,sBAAwB,MAAQF,SAA+B,OAAS,EAAIA,EAAsBG,qBAAuB,KAAOF,EAAyBpG,EAAuBuG,sBAAwB,MAAQH,SAAgC,OAAS,EAAIA,EAAuBE,qBAAuB,EACrZ,CACA,IAAKR,EAA2BlG,QAAUK,EAAoBiG,qCAAqCH,EAAqB,MAAOH,GAA0B,CACvJE,EAA6B7F,EAAoBuG,qCAAqCT,EAAqBH,EAC7G,CACF,MAAO,GAAI3F,EAAoBiG,qCAAqCH,EAAqB,MAAOH,GAA0B,CACxHE,EAA6B7F,EAAoBuG,qCAAqCT,EAAqBH,EAC7G,CACAE,EAA2BL,QAAQ,SAAUgB,GAC3C,MAAMtD,EAAesD,EAAiBpF,cACtCkE,EAAmBT,KAAK3B,EAC1B,GACA,OAAOoC,CACT,CAGA,SAASC,EAA4C1B,EAAMhD,GACzD,OAAOb,EAAoB0F,sBAAsB7B,EAAMhD,EACzD,CAGA9C,EAASwH,4CAA8CA,EACvD,SAASkB,EAA4C5C,EAAMhD,GACzD,OAAOb,EAAoB0F,sBAAsB7B,EAAMhD,EAAkB,KAC3E,CAGA9C,EAAS0I,4CAA8CA,EACvD,SAASF,EAAqClC,GAC5C,IAAIqC,EACJ,IAAIf,EAA0BC,UAAUjG,OAAS,GAAKiG,UAAU,KAAO9D,UAAY8D,UAAU,GAAK,MAClG,GAAID,EAAyB,CAC3B,IAAIgB,EACJ,OAAQtC,IAAgB,MAAQA,SAAqB,OAAS,GAAKsC,EAAsBtC,EAAY,oDAAsD,MAAQsC,SAA6B,OAAS,EAAIA,EAAoBN,qBAAuB,EAC1P,CACA,OAAQhC,IAAgB,MAAQA,SAAqB,OAAS,GAAKqC,EAAuBrC,EAAY,oDAAsD,MAAQqC,SAA8B,OAAS,EAAIA,EAAqBL,qBAAuB,EAC7P,CAGA,SAASJ,EAAqC5B,GAC5C,IAAIuC,EACJ,IAAIC,EAA2BjB,UAAUjG,OAAS,GAAKiG,UAAU,KAAO9D,UAAY8D,UAAU,GAAK,MACnG,IAAID,EAA0BC,UAAUjG,OAAS,GAAKiG,UAAU,KAAO9D,UAAY8D,UAAU,GAAK,MAClG,GAAIiB,EAA0B,CAC5B,IAAIC,EACJ,MAAMC,EAAiB1C,EACvB,GAAIsB,EAAyB,CAC3B,IAAIqB,EACJ,OAAOD,IAAmB,MAAQA,SAAwB,IAAMC,EAAwBD,EAAeX,sBAAwB,MAAQY,SAA+B,GAAKA,EAAsBX,mBAAqB,KAAO,KAC/N,CACA,OAAOU,IAAmB,MAAQA,SAAwB,IAAMD,EAAwBC,EAAeT,sBAAwB,MAAQQ,SAA+B,GAAKA,EAAsBT,mBAAqB,KAAO,KAC/N,MAAO,GAAIV,EAAyB,CAClC,IAAIsB,EACJ,MAAMC,EAAoB7C,EAC1B,OAAO6C,IAAsB,MAAQA,SAA2B,IAAMD,EAAuBC,EAAkB,oDAAsD,MAAQD,SAA8B,GAAKA,EAAqBZ,mBAAqB,KAAO,KACnQ,CACA,MAAMc,EAAwB9C,EAC9B,OAAO8C,IAA0B,MAAQA,SAA+B,IAAMP,EAAwBO,EAAsB,oDAAsD,MAAQP,SAA+B,GAAKA,EAAsBP,mBAAqB,KAAO,KAClR,CAGA,MAAMrG,EAAsB,CAC1B0F,wBACAa,uCACAN,uCACAV,8CACAtF,6BAEFlC,EAASiC,oBAAsBA,EAC/B,OAAOjC,CACT,EAAG"}
|
|
1
|
+
{"version":3,"file":"MetaModelFunction.js","names":["sap","ui","define","IssueManager","BindingToolkit","ModelHelper","EDM","_exports","isTypeFilterable","pathInModel","or","not","compileExpression","IssueSeverity","IssueCategoryType","IssueCategory","getSearchRestrictions","fullPath","metaModel","searchRestrictions","navigationSearchRestrictions","navigationText","searchRestrictionsTerm","entityTypePathParts","replaceAll","split","filter","filterOutNavPropBinding","entitySetPath","getEntitySetPath","entitySetPathParts","isContainment","getObject","join","containmentNavPath","length","navPath","parentEntitySetPath","slice","navigationRestrictions","METAMODEL_FUNCTIONS","getNavigationRestrictions","SearchRestrictions","metaModelContext","navigationPath","restrictedProperties","RestrictedProperties","find","restrictedProperty","_restrictedProperty$N","NavigationProperty","$NavigationPropertyPath","isInNonFilterableProperties","metamodelContext","contextPath","isNotFilterable","filterRestrictionsAnnotation","NonFilterableProperties","some","property","$PropertyPath","isCustomAggregate","interanlIsCustomAggregate","isApplySupported","entitySetAnnotations","customAggregatesAnnotations","getAllCustomAggregates","customAggregates","Object","keys","undefined","includes","checkEntitySetIsFilterable","navigationContext","isFilterable","isContextPathFilterable","propertyDataType","getPropertyDataType","esParts","splice","contexts","isNoFilterable","context","item","index","array","filterRestrictions","FilterRestrictions","nonFilterableProperties","targetPropertyPath","propertyPath","dataType","getProperty","annotationPath","isPropertyFilterable","skipHiddenFilters","Error","createBindingContext","hiddenPath","hiddenFilterPath","getNonComputedVisibleFields","path","appComponent","technicalKeys","$Key","nonComputedVisibleKeys","immutableVisibleFields","entityType","$kind","annotations","isKey","isImmutable","isNonComputed","isVisible","isComputedDefaultValue","isKeyComputedDefaultValueWithText","$Type","push","diagnostics","getDiagnostics","message","addIssue","Annotation","Medium","Annotations","IgnoredAnnotation","requiredProperties","getRequiredPropertiesFromInsertRestrictions","forEach","concat","getRequiredProperties","checkUpdateRestrictions","arguments","requiredPropertiesWithPath","entitySetAnnotation","endsWith","replace","hasRestrictedPropertiesInAnnotations","_navigationRestrictio","_navigationRestrictio2","UpdateRestrictions","RequiredProperties","InsertRestrictions","getRequiredPropertiesFromAnnotations","requiredProperty","getRequiredPropertiesFromUpdateRestrictions","_annotations$OrgODa2","_annotations$OrgODa","_entitytSetAnnotation","isNavigationRestrictions","_navAnnotations$Inser","navAnnotations","_navAnnotations$Updat","_entityAnnotations$O","entityAnnotations","entitytSetAnnotations","annotation","annotationKey","startsWith","annotationParts","customAggregate","contextDefiningProperties","label","name","sortable","sortOrder","custom","getSortRestrictionsInfo","sortRestrictionsInfo","propertyInfo","sortRestrictions","Sortable","propertyItem","NonSortableProperties","propertyName","AscendingOnlyProperties","sortDirection","DescendingOnlyProperties","getFilterRestrictionsInfo","i","filterRestrictionsInfo","filterable","requiresFilter","RequiresFilter","Filterable","FilterExpressionRestrictions","_filterRestrictions$F","Property","allowedExpressions","AllowedExpressions","isMultiValueFilterExpression","filterExpression","isMultiValue"],"sources":["MetaModelFunction-dbg.js"],"mappings":"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"}
|