@sapui5/sap.fe.core 1.111.1 → 1.113.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 +6 -5
- 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 +12 -11
- package/src/sap/fe/core/AppComponent-dbg.js +35 -9
- 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 +66 -9
- package/src/sap/fe/core/AppStateHandler-dbg.js +5 -2
- 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 +10 -1
- package/src/sap/fe/core/BaseController-dbg.js +1 -1
- package/src/sap/fe/core/BaseController.ts +2 -1
- package/src/sap/fe/core/CommonUtils-dbg.js +202 -533
- 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 +260 -681
- package/src/sap/fe/core/ExtensionAPI-dbg.js +4 -1
- package/src/sap/fe/core/ExtensionAPI.js +1 -1
- package/src/sap/fe/core/ExtensionAPI.js.map +1 -1
- package/src/sap/fe/core/ExtensionAPI.ts +11 -1
- package/src/sap/fe/core/PageController-dbg.js +26 -31
- package/src/sap/fe/core/PageController.js +1 -1
- package/src/sap/fe/core/PageController.js.map +1 -1
- package/src/sap/fe/core/PageController.ts +17 -3
- package/src/sap/fe/core/ResourceModel-dbg.js +71 -0
- package/src/sap/fe/core/ResourceModel.js +6 -0
- package/src/sap/fe/core/ResourceModel.js.map +1 -0
- package/src/sap/fe/core/ResourceModel.ts +67 -0
- package/src/sap/fe/core/TemplateComponent-dbg.js +1 -1
- package/src/sap/fe/core/TemplateComponent.ts +1 -0
- package/src/sap/fe/core/TemplateModel-dbg.js +1 -1
- package/src/sap/fe/core/TemplateModel.ts +6 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel-dbg.js +5 -7
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +6 -5
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase-dbg.js +164 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +170 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport-dbg.js +88 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js +6 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockSupport.ts +142 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +913 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js +21 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/{BuildingBlockRuntime.ts → BuildingBlockTemplateProcessor.ts} +313 -373
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock-dbg.js +79 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js +15 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlock.ts +68 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment-dbg.js +162 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js +6 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.js.map +1 -0
- package/src/sap/fe/core/buildingBlocks/RuntimeBuildingBlockFragment.ts +183 -0
- package/src/sap/fe/core/buildingBlocks/TraceInfo-dbg.js +4 -2
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js.map +1 -1
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +5 -3
- package/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +936 -231
- 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 +1023 -255
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +48 -98
- 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 +95 -129
- package/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +14 -17
- 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 +23 -17
- package/src/sap/fe/core/controllerextensions/KPIManagement-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -0
- package/src/sap/fe/core/controllerextensions/MassEdit-dbg.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.js +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +2 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +2 -0
- 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 +26 -4
- package/src/sap/fe/core/controllerextensions/Paginator-dbg.js +2 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Paginator.ts +7 -0
- package/src/sap/fe/core/controllerextensions/Placeholder-dbg.js +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +8 -0
- package/src/sap/fe/core/controllerextensions/Share-dbg.js +8 -1
- package/src/sap/fe/core/controllerextensions/Share.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/Share.ts +11 -0
- package/src/sap/fe/core/controllerextensions/SideEffects-dbg.js +14 -13
- 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 +27 -27
- package/src/sap/fe/core/controllerextensions/ViewState-dbg.js +17 -8
- 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 +35 -14
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase-dbg.js +6 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +7 -4
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync-dbg.js +285 -82
- 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 +326 -89
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon-dbg.js +23 -2
- 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 +32 -3
- 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 +4 -5
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +17 -3
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block-dbg.js +65 -34
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +33 -18
- 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 +78 -149
- 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 +85 -160
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +49 -49
- 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 +52 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +82 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +123 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1508 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +6 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js.map +1 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +1993 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations-dbg.js +3 -1415
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +2 -1921
- package/src/sap/fe/core/controllerextensions/editFlow/sticky-dbg.js +10 -18
- 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 +9 -22
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +53 -47
- 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 +55 -61
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher-dbg.js +12 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +19 -0
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy-dbg.js +78 -13
- 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 +100 -13
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +4 -1
- package/src/sap/fe/core/controls/CommandExecution-dbg.js +16 -5
- 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 +15 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler-dbg.js +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js.map +1 -1
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +4 -1
- package/src/sap/fe/core/controls/FilterBar-dbg.js +1 -1
- package/src/sap/fe/core/controls/FilterBar.ts +5 -0
- package/src/sap/fe/core/controls/FormElementWrapper-dbg.js +1 -1
- package/src/sap/fe/core/controls/FormElementWrapper.ts +3 -0
- package/src/sap/fe/core/controls/filterbar/FilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +7 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilter-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +4 -0
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer-dbg.js +1 -1
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +10 -0
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils-dbg.js +4 -3
- 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 +3 -2
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +0 -1
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +2 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers-dbg.js +6 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js.map +1 -1
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +5 -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 +4 -6
- package/src/sap/fe/core/converters/ManifestSettings-dbg.js +1 -8
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js.map +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +15 -6
- package/src/sap/fe/core/converters/ManifestWrapper-dbg.js +21 -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 +23 -1
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +67 -62
- 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 +75 -66
- package/src/sap/fe/core/converters/TemplateConverter-dbg.js +2 -1
- package/src/sap/fe/core/converters/TemplateConverter.js.map +1 -1
- package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
- package/src/sap/fe/core/converters/annotations/DataField-dbg.js +81 -20
- 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 +76 -22
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1027 -956
- 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 +13 -19
- 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 +37 -40
- package/src/sap/fe/core/converters/controls/Common/Chart-dbg.js +95 -33
- 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 +133 -49
- package/src/sap/fe/core/converters/controls/Common/DataVisualization-dbg.js +99 -62
- 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 +140 -75
- 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 +8 -14
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +9 -9
- 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 +17 -18
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +143 -93
- 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 +221 -177
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +23 -16
- 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 +27 -23
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +138 -75
- 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 +223 -110
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +38 -28
- 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 +67 -47
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar-dbg.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet-dbg.js +6 -6
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +5 -8
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +54 -24
- 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 +84 -37
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +12 -14
- 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 +16 -11
- 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/ConfigurableObject-dbg.js +7 -6
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +19 -10
- package/src/sap/fe/core/converters/helpers/DataFieldHelper-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +7 -2
- package/src/sap/fe/core/converters/helpers/ID-dbg.js +1 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -1
- package/src/sap/fe/core/converters/helpers/IssueManager-dbg.js +11 -9
- 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 +10 -8
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +22 -20
- 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 +19 -16
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +32 -35
- 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 +42 -37
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +12 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js.map +1 -1
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +8 -2
- package/src/sap/fe/core/formatters/FPMFormatter-dbg.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +2 -2
- package/src/sap/fe/core/formatters/FiscalFormat.ts +6 -1
- package/src/sap/fe/core/formatters/TableFormatter-dbg.js +3 -7
- 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 +2 -6
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +9 -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 +11 -4
- package/src/sap/fe/core/fpm/Component-dbg.js +1 -1
- package/src/sap/fe/core/fpm/Component.ts +1 -0
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/AppStartupHelper.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit-dbg.js +7 -6
- 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 +9 -9
- package/src/sap/fe/core/helpers/ClassSupport-dbg.js +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.js.map +1 -1
- package/src/sap/fe/core/helpers/ClassSupport.ts +1 -0
- package/src/sap/fe/core/helpers/DeleteHelper-dbg.js +93 -62
- 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 +140 -185
- package/src/sap/fe/core/helpers/MassEditHelper-dbg.js +23 -20
- 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 +26 -28
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +9 -9
- 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 +8 -8
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +517 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js +6 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.js.map +1 -0
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +610 -0
- 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 +47 -74
- package/src/sap/fe/core/helpers/PasteHelper-dbg.js +5 -5
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.ts +6 -10
- package/src/sap/fe/core/helpers/ResourceModelHelper-dbg.js +39 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js +6 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.js.map +1 -0
- package/src/sap/fe/core/helpers/ResourceModelHelper.ts +35 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +132 -23
- 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 +109 -22
- package/src/sap/fe/core/helpers/SemanticKeyHelper-dbg.js +2 -2
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +1 -1
- 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 +29 -25
- 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 +26 -24
- package/src/sap/fe/core/helpers/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +151 -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 +162 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader-dbg.js +2 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +6 -2
- package/src/sap/fe/core/jsx-runtime/jsx-control-dbg.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +3 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents-dbg.js +3 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js.map +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library-dbg.js +2 -2
- package/src/sap/fe/core/library-preload.js +156 -140
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/library.ts +7 -0
- 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 +35 -0
- package/src/sap/fe/core/messagebundle_ar.properties +15 -12
- package/src/sap/fe/core/messagebundle_bg.properties +20 -17
- package/src/sap/fe/core/messagebundle_ca.properties +12 -9
- package/src/sap/fe/core/messagebundle_cs.properties +12 -9
- package/src/sap/fe/core/messagebundle_cy.properties +12 -9
- package/src/sap/fe/core/messagebundle_da.properties +12 -9
- package/src/sap/fe/core/messagebundle_de.properties +13 -10
- package/src/sap/fe/core/messagebundle_el.properties +14 -11
- package/src/sap/fe/core/messagebundle_en.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +4 -1
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +21 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +23 -3
- package/src/sap/fe/core/messagebundle_es.properties +12 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +12 -9
- package/src/sap/fe/core/messagebundle_et.properties +12 -9
- package/src/sap/fe/core/messagebundle_fi.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr.properties +12 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +13 -10
- package/src/sap/fe/core/messagebundle_hi.properties +12 -9
- package/src/sap/fe/core/messagebundle_hr.properties +12 -9
- package/src/sap/fe/core/messagebundle_hu.properties +12 -9
- package/src/sap/fe/core/messagebundle_id.properties +13 -10
- package/src/sap/fe/core/messagebundle_it.properties +12 -9
- package/src/sap/fe/core/messagebundle_iw.properties +12 -9
- package/src/sap/fe/core/messagebundle_ja.properties +13 -10
- package/src/sap/fe/core/messagebundle_kk.properties +12 -9
- package/src/sap/fe/core/messagebundle_ko.properties +12 -9
- package/src/sap/fe/core/messagebundle_lt.properties +12 -9
- package/src/sap/fe/core/messagebundle_lv.properties +12 -9
- package/src/sap/fe/core/messagebundle_ms.properties +13 -10
- package/src/sap/fe/core/messagebundle_nl.properties +13 -10
- package/src/sap/fe/core/messagebundle_no.properties +12 -9
- package/src/sap/fe/core/messagebundle_pl.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt.properties +12 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +12 -9
- package/src/sap/fe/core/messagebundle_ro.properties +16 -13
- package/src/sap/fe/core/messagebundle_ru.properties +13 -10
- package/src/sap/fe/core/messagebundle_sh.properties +12 -9
- package/src/sap/fe/core/messagebundle_sk.properties +12 -9
- package/src/sap/fe/core/messagebundle_sl.properties +12 -9
- package/src/sap/fe/core/messagebundle_sv.properties +12 -9
- package/src/sap/fe/core/messagebundle_th.properties +12 -9
- package/src/sap/fe/core/messagebundle_tr.properties +12 -9
- package/src/sap/fe/core/messagebundle_uk.properties +12 -9
- package/src/sap/fe/core/messagebundle_vi.properties +13 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +12 -9
- package/src/sap/fe/core/messagebundle_zh_TW.properties +12 -9
- package/src/sap/fe/core/operationsHelper-dbg.js +70 -44
- package/src/sap/fe/core/operationsHelper.js +1 -1
- package/src/sap/fe/core/operationsHelper.js.map +1 -1
- package/src/sap/fe/core/operationsHelper.ts +88 -63
- package/src/sap/fe/core/rootView/Fcl-dbg.controller.js +1 -1
- package/src/sap/fe/core/rootView/Fcl.controller.ts +10 -0
- package/src/sap/fe/core/rootView/NavContainer-dbg.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.js.map +1 -1
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +5 -3
- package/src/sap/fe/core/rootView/RootViewBaseController-dbg.js +10 -5
- 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 +22 -8
- package/src/sap/fe/core/services/AsyncComponentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +3 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +15 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +4 -1
- package/src/sap/fe/core/services/NavigationServiceFactory-dbg.js +9 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +19 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory-dbg.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js.map +1 -1
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +10 -3
- package/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +9 -3
- 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 +35 -3
- 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 +24 -2
- package/src/sap/fe/core/services/SideEffectsServiceFactory-dbg.js +448 -279
- 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 +497 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +26 -6
- 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 +54 -13
- package/src/sap/fe/core/support/Diagnostics-dbg.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -0
- 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/DataModelPathHelper-dbg.js +195 -95
- 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 +210 -96
- 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 -29
- 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 -26
- 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 +3 -3
- 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 +5 -3
- 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 +47 -32
- package/src/sap/fe/core/type/DateTimeWithTimezone-dbg.js +1 -1
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +2 -0
- package/src/sap/fe/core/type/FiscalDate-dbg.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.js.map +1 -1
- package/src/sap/fe/core/type/FiscalDate.ts +2 -1
- package/src/sap/fe/core/type/TypeUtil-dbg.js +5 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -1
- package/src/sap/fe/core/type/TypeUtil.js.map +1 -1
- package/src/sap/fe/core/type/TypeUtil.ts +3 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlock-dbg.js +0 -410
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +0 -15
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +0 -536
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment-dbg.js +0 -44
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +0 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js.map +0 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +0 -14
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime-dbg.js +0 -948
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +0 -19
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow-dbg.js +0 -711
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +0 -6
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js.map +0 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +0 -863
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +0 -91
- package/src/sap/fe/core/controls/ConditionalWrapper-dbg.js +0 -151
- package/src/sap/fe/core/controls/ConditionalWrapper.js +0 -6
- package/src/sap/fe/core/controls/ConditionalWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +0 -88
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper-dbg.js +0 -330
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +0 -6
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -292
- package/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +0 -126
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +0 -6
- package/src/sap/fe/core/controls/CustomQuickViewPage.js.map +0 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +0 -105
- package/src/sap/fe/core/controls/FieldWrapper-dbg.js +0 -194
- package/src/sap/fe/core/controls/FieldWrapper.js +0 -6
- package/src/sap/fe/core/controls/FieldWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FieldWrapper.ts +0 -121
- package/src/sap/fe/core/controls/FileWrapper-dbg.js +0 -280
- package/src/sap/fe/core/controls/FileWrapper.js +0 -6
- package/src/sap/fe/core/controls/FileWrapper.js.map +0 -1
- package/src/sap/fe/core/controls/FileWrapper.ts +0 -202
- package/src/sap/fe/core/helpers/SideEffectsHelper-dbg.js +0 -141
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +0 -6
- package/src/sap/fe/core/helpers/SideEffectsHelper.js.map +0 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +0 -129
|
@@ -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/formatters/TableFormatter", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/BindingHelper", "../../../ManifestSettings"], function (tableFormatters, BindingToolkit, ModelHelper, DataModelPathHelper, BindingHelper, ManifestSettings) {
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/DataModelPathHelper", "../../../helpers/BindingHelper", "../../../ManifestSettings"], function (tableFormatters, BindingToolkit, ModelHelper, TypeGuards, DataModelPathHelper, BindingHelper, ManifestSettings) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -14,6 +14,8 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
14
14
|
var isPathInsertable = DataModelPathHelper.isPathInsertable;
|
|
15
15
|
var isPathDeletable = DataModelPathHelper.isPathDeletable;
|
|
16
16
|
var getTargetObjectPath = DataModelPathHelper.getTargetObjectPath;
|
|
17
|
+
var isNavigationProperty = TypeGuards.isNavigationProperty;
|
|
18
|
+
var isEntitySet = TypeGuards.isEntitySet;
|
|
17
19
|
var pathInModel = BindingToolkit.pathInModel;
|
|
18
20
|
var or = BindingToolkit.or;
|
|
19
21
|
var notEqual = BindingToolkit.notEqual;
|
|
@@ -85,13 +87,13 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
85
87
|
*/
|
|
86
88
|
_exports.isDraftOrStickySupported = isDraftOrStickySupported;
|
|
87
89
|
function getNewAction(converterContext) {
|
|
88
|
-
var
|
|
90
|
+
var _currentEntitySet$ann, _currentEntitySet$ann2, _currentEntitySet$ann3, _currentEntitySet$ann4;
|
|
89
91
|
const currentEntitySet = converterContext.getEntitySet();
|
|
90
|
-
const newAction =
|
|
92
|
+
const newAction = isEntitySet(currentEntitySet) ? ((_currentEntitySet$ann = currentEntitySet.annotations.Common) === null || _currentEntitySet$ann === void 0 ? void 0 : (_currentEntitySet$ann2 = _currentEntitySet$ann.DraftRoot) === null || _currentEntitySet$ann2 === void 0 ? void 0 : _currentEntitySet$ann2.NewAction) ?? ((_currentEntitySet$ann3 = currentEntitySet.annotations.Session) === null || _currentEntitySet$ann3 === void 0 ? void 0 : (_currentEntitySet$ann4 = _currentEntitySet$ann3.StickySessionSupported) === null || _currentEntitySet$ann4 === void 0 ? void 0 : _currentEntitySet$ann4.NewAction) : undefined;
|
|
91
93
|
const newActionName = newAction === null || newAction === void 0 ? void 0 : newAction.toString();
|
|
92
94
|
if (newActionName) {
|
|
93
|
-
var _converterContext$get, _converterContext$get2, _converterContext$get3;
|
|
94
|
-
let availableProperty = converterContext === null || converterContext === void 0 ? void 0 : (_converterContext$get = converterContext.getEntityType().actions[newActionName]) === null || _converterContext$get === void 0 ? void 0 : (_converterContext$get2 = _converterContext$get.annotations) === null || _converterContext$get2 === void 0 ? void 0 : (_converterContext$get3 = _converterContext$get2.Core) === null || _converterContext$get3 === void 0 ? void 0 : _converterContext$get3.OperationAvailable;
|
|
95
|
+
var _converterContext$get, _converterContext$get2, _converterContext$get3, _converterContext$get4;
|
|
96
|
+
let availableProperty = converterContext === null || converterContext === void 0 ? void 0 : (_converterContext$get = converterContext.getEntityType().actions[newActionName]) === null || _converterContext$get === void 0 ? void 0 : (_converterContext$get2 = _converterContext$get.annotations) === null || _converterContext$get2 === void 0 ? void 0 : (_converterContext$get3 = _converterContext$get2.Core) === null || _converterContext$get3 === void 0 ? void 0 : (_converterContext$get4 = _converterContext$get3.OperationAvailable) === null || _converterContext$get4 === void 0 ? void 0 : _converterContext$get4.valueOf();
|
|
95
97
|
availableProperty = availableProperty !== undefined ? availableProperty : true;
|
|
96
98
|
return {
|
|
97
99
|
name: newActionName,
|
|
@@ -111,13 +113,13 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
111
113
|
*/
|
|
112
114
|
_exports.getNewAction = getNewAction;
|
|
113
115
|
function isActionAnnotatedHidden(converterContext, sAnnotationTerm) {
|
|
114
|
-
var _currentEntitySet$
|
|
116
|
+
var _currentEntitySet$ann5;
|
|
115
117
|
let bWithNavigationPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
116
118
|
const currentEntitySet = converterContext.getEntitySet();
|
|
117
119
|
const dataModelObjectPath = converterContext.getDataModelObjectPath();
|
|
118
120
|
// Consider only the last level of navigation. The others are already considered in the element binding of the page.
|
|
119
121
|
const visitedNavigationPaths = dataModelObjectPath.navigationProperties.length > 0 && bWithNavigationPath ? [dataModelObjectPath.navigationProperties[dataModelObjectPath.navigationProperties.length - 1].name] : [];
|
|
120
|
-
const actionAnnotationValue = (currentEntitySet === null || currentEntitySet === void 0 ? void 0 : (_currentEntitySet$
|
|
122
|
+
const actionAnnotationValue = (currentEntitySet === null || currentEntitySet === void 0 ? void 0 : (_currentEntitySet$ann5 = currentEntitySet.annotations.UI) === null || _currentEntitySet$ann5 === void 0 ? void 0 : _currentEntitySet$ann5[sAnnotationTerm]) || false;
|
|
121
123
|
return currentEntitySet ? getExpressionFromAnnotation(actionAnnotationValue, visitedNavigationPaths, undefined, path => singletonPathVisitor(path, converterContext.getConvertedTypes(), visitedNavigationPaths)) : constant(false);
|
|
122
124
|
}
|
|
123
125
|
|
|
@@ -162,12 +164,11 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
162
164
|
*
|
|
163
165
|
* @param standardActionsContext
|
|
164
166
|
* @param isDraftOrSticky
|
|
165
|
-
* @
|
|
166
|
-
* @returns The
|
|
167
|
+
* @returns True if we need to template insert or update actions, false otherwise
|
|
167
168
|
*/
|
|
168
169
|
_exports.getRestrictions = getRestrictions;
|
|
169
|
-
function getInsertUpdateActionsTemplating(standardActionsContext, isDraftOrSticky
|
|
170
|
-
return
|
|
170
|
+
function getInsertUpdateActionsTemplating(standardActionsContext, isDraftOrSticky) {
|
|
171
|
+
return isDraftOrSticky || standardActionsContext.creationMode === CreationMode.External;
|
|
171
172
|
}
|
|
172
173
|
|
|
173
174
|
/**
|
|
@@ -412,7 +413,7 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
412
413
|
const navigationProperties = converterContext.getDataModelObjectPath().navigationProperties;
|
|
413
414
|
if (navigationProperties) {
|
|
414
415
|
const lastNav = navigationProperties[navigationProperties.length - 1];
|
|
415
|
-
const partner = lastNav
|
|
416
|
+
const partner = isNavigationProperty(lastNav) && lastNav.partner;
|
|
416
417
|
if (partner) {
|
|
417
418
|
path = `${partner}/${path}`;
|
|
418
419
|
}
|
|
@@ -436,10 +437,16 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
436
437
|
*/
|
|
437
438
|
_exports.getCreationRowEnablement = getCreationRowEnablement;
|
|
438
439
|
function getCreateEnablement(converterContext, standardActionsContext, createVisibility) {
|
|
439
|
-
|
|
440
|
+
let condition;
|
|
441
|
+
if (standardActionsContext.creationMode === CreationMode.InlineCreationRows) {
|
|
442
|
+
// for Inline creation rows create can be hidden via manifest and this should not impact its enablement
|
|
443
|
+
condition = not(standardActionsContext.hiddenAnnotation.create);
|
|
444
|
+
} else {
|
|
445
|
+
condition = createVisibility;
|
|
446
|
+
}
|
|
440
447
|
const isInsertable = standardActionsContext.restrictions.isInsertable.expression;
|
|
441
|
-
const CollectionType =
|
|
442
|
-
return and(
|
|
448
|
+
const CollectionType = converterContext.resolveAbsolutePath(standardActionsContext.collectionPath).target;
|
|
449
|
+
return and(condition, or(isEntitySet(CollectionType), and(isInsertable, or(converterContext.getTemplateType() !== TemplateType.ObjectPage, UI.IsEditable))));
|
|
443
450
|
}
|
|
444
451
|
|
|
445
452
|
/**
|
|
@@ -519,4 +526,4 @@ sap.ui.define(["sap/fe/core/formatters/TableFormatter", "sap/fe/core/helpers/Bin
|
|
|
519
526
|
_exports.isInDisplayMode = isInDisplayMode;
|
|
520
527
|
return _exports;
|
|
521
528
|
}, false);
|
|
522
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkiLCJnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRpb25Nb2RlIiwidGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlndXJhdGlvbiIsImNvbGxlY3Rpb25QYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiY3JlYXRlIiwiaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4iLCJDcmVhdGVIaWRkZW4iLCJkZWxldGUiLCJEZWxldGVIaWRkZW4iLCJ1cGRhdGUiLCJVcGRhdGVIaWRkZW4iLCJpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQiLCJpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldE1hbmlmZXN0V3JhcHBlciIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJuZXdBY3Rpb24iLCJnZXROZXdBY3Rpb24iLCJyZXN0cmljdGlvbnMiLCJnZXRSZXN0cmljdGlvbnMiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiYklzRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsImlzT2JqZWN0UGF0aERyYWZ0U3VwcG9ydGVkIiwiYklzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsInN0YXJ0aW5nRW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJTZXNzaW9uIiwiU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsImN1cnJlbnRFbnRpdHlTZXQiLCJnZXRFbnRpdHlTZXQiLCJpc1NpbmdsZXRvbiIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsIk5ld0FjdGlvbiIsInVuZGVmaW5lZCIsIm5ld0FjdGlvbk5hbWUiLCJ0b1N0cmluZyIsImF2YWlsYWJsZVByb3BlcnR5IiwiZ2V0RW50aXR5VHlwZSIsImFjdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwibmFtZSIsImF2YWlsYWJsZSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsInNBbm5vdGF0aW9uVGVybSIsImJXaXRoTmF2aWdhdGlvblBhdGgiLCJ2aXNpdGVkTmF2aWdhdGlvblBhdGhzIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJsZW5ndGgiLCJhY3Rpb25Bbm5vdGF0aW9uVmFsdWUiLCJVSSIsInBhdGgiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImdldENvbnZlcnRlZFR5cGVzIiwiY29uc3RhbnQiLCJyZXN0cmljdGlvbnNEZWYiLCJrZXkiLCJmdW5jdGlvbiIsImlzUGF0aEluc2VydGFibGUiLCJpc1BhdGhVcGRhdGFibGUiLCJpc1BhdGhEZWxldGFibGUiLCJyZXN1bHQiLCJmb3JFYWNoIiwiZGVmIiwiZGVmRnVuY3Rpb24iLCJleHByZXNzaW9uIiwiYXBwbHkiLCJwYXRoVmlzaXRvciIsIm5hdmlnYXRpb25QYXRocyIsIm5hdmlnYXRpb25FeHByZXNzaW9uIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsImdldEluc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0aW5nIiwic3RhbmRhcmRBY3Rpb25zQ29udGV4dCIsImlzRHJhZnRPclN0aWNreSIsImlzQ3JlYXRlQWx3YXlzSGlkZGVuIiwiQ3JlYXRpb25Nb2RlIiwiRXh0ZXJuYWwiLCJnZXRTdGFuZGFyZEFjdGlvbkNyZWF0ZSIsImNyZWF0ZVZpc2liaWxpdHkiLCJnZXRDcmVhdGVWaXNpYmlsaXR5IiwiaXNUZW1wbGF0ZWQiLCJjb21waWxlRXhwcmVzc2lvbiIsImdldENyZWF0ZVRlbXBsYXRpbmciLCJ2aXNpYmxlIiwiZW5hYmxlZCIsImdldENyZWF0ZUVuYWJsZW1lbnQiLCJnZXRTdGFuZGFyZEFjdGlvbkRlbGV0ZSIsImRlbGV0ZVZpc2liaWxpdHkiLCJnZXREZWxldGVWaXNpYmlsaXR5IiwiZ2V0RGVmYXVsdFRlbXBsYXRpbmciLCJnZXREZWxldGVFbmFibGVtZW50IiwiZ2V0Q3JlYXRpb25Sb3ciLCJjcmVhdGlvblJvd1Zpc2liaWxpdHkiLCJnZXRDcmVhdGlvblJvd0VuYWJsZW1lbnQiLCJnZXRTdGFuZGFyZEFjdGlvblBhc3RlIiwiaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkIiwiY3JlYXRlRW5hYmxlbWVudCIsInBhc3RlVmlzaWJpbGl0eSIsImdldFBhc3RlVmlzaWJpbGl0eSIsImdldFBhc3RlRW5hYmxlbWVudCIsImdldFN0YW5kYXJkQWN0aW9uTWFzc0VkaXQiLCJtYXNzRWRpdFZpc2liaWxpdHkiLCJnZXRNYXNzRWRpdFZpc2liaWxpdHkiLCJnZXRNYXNzRWRpdEVuYWJsZW1lbnQiLCJpc0ZvckNyZWF0aW9uUm93IiwiYW5kIiwib3IiLCJDcmVhdGlvblJvdyIsIm5vdCIsImlzQ29uc3RhbnQiLCJhY3Rpb25WaXNpYmlsaXR5IiwiaXNJbnNlcnRhYmxlIiwiaXNDcmVhdGVIaWRkZW4iLCJpZkVsc2UiLCJnZXRUZW1wbGF0ZVR5cGUiLCJUZW1wbGF0ZVR5cGUiLCJMaXN0UmVwb3J0IiwiSXNFZGl0YWJsZSIsImVxdWFsIiwiSW5saW5lQ3JlYXRpb25Sb3dzIiwidHlwZSIsImlubGluZUNyZWF0aW9uUm93c0hpZGRlbkluRWRpdE1vZGUiLCJJc0NyZWF0ZU1vZGUiLCJpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbiIsImlzRGVsZXRlSGlkZGVuIiwicGF0aERlbGV0YWJsZUV4cHJlc3Npb24iLCJpc0RlbGV0YWJsZSIsIkFuYWx5dGljYWxMaXN0UGFnZSIsIm5vdEVxdWFsIiwiZW5hYmxlUGFzdGUiLCJpbmRleE9mIiwiaXNVcGRhdGVIaWRkZW4iLCJwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiIsImlzVXBkYXRhYmxlIiwiYk1hc3NFZGl0RW5hYmxlZEluTWFuaWZlc3QiLCJlbmFibGVNYXNzRWRpdCIsInRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24iLCJPYmplY3RQYWdlIiwicmVzdHJpY3Rpb25zSW5zZXJ0YWJsZSIsImxhc3ROYXYiLCJwYXJ0bmVyIiwiX3R5cGUiLCJkaXNhYmxlQWRkUm93QnV0dG9uRm9yRW1wdHlEYXRhIiwiZm9ybWF0UmVzdWx0IiwicGF0aEluTW9kZWwiLCJ0YWJsZUZvcm1hdHRlcnMiLCJ2YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzIiwiQ29sbGVjdGlvblR5cGUiLCJyZXNvbHZlQWJzb2x1dGVQYXRoIiwidGFyZ2V0IiwiZGVsZXRhYmxlQ29udGV4dHMiLCJ1blNhdmVkQ29udGV4dHMiLCJkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlIiwiZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZSIsImdyZWF0ZXJUaGFuIiwiaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSIsIm51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyIsImdyZWF0ZXJPckVxdWFsIiwibnVtYmVyT2ZVcGRhdGFibGVDb250ZXh0cyIsImJEaXNwbGF5TW9kZSIsImlzSW5EaXNwbGF5TW9kZSIsInJ1bnRpbWVCaW5kaW5nIiwidGVtcGxhdGVUeXBlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGFuZGFyZEFjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXQsIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdGFibGVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1RhYmxlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGVxdWFsLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGdyZWF0ZXJUaGFuLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdGlzUGF0aEluTW9kZWxFeHByZXNzaW9uLFxuXHRsZW5ndGgsXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoLCBpc1BhdGhEZWxldGFibGUsIGlzUGF0aEluc2VydGFibGUsIGlzUGF0aFVwZGF0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IHNpbmdsZXRvblBhdGhWaXNpdG9yLCBVSSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmlld1BhdGhDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSwgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVDb250cm9sQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9UYWJsZVwiO1xuXG5lbnVtIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eSB7XG5cdENyZWF0ZUhpZGRlbiA9IFwiQ3JlYXRlSGlkZGVuXCIsXG5cdERlbGV0ZUhpZGRlbiA9IFwiRGVsZXRlSGlkZGVuXCIsXG5cdFVwZGF0ZUhpZGRlbiA9IFwiVXBkYXRlSGlkZGVuXCJcbn1cblxuZXhwb3J0IHR5cGUgU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlID0ge1xuXHRpc1RlbXBsYXRlZD86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZW5hYmxlZDogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG50eXBlIEV4cHJlc3Npb25SZXN0cmljdGlvbnNUeXBlID0ge1xuXHRleHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdG5hdmlnYXRpb25FeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xudHlwZSBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlID0gUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvblJlc3RyaWN0aW9uc1R5cGU+O1xuXG5leHBvcnQgdHlwZSBTdGFuZGFyZEFjdGlvbnNDb250ZXh0ID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRoaWRkZW5Bbm5vdGF0aW9uOiB7XG5cdFx0Y3JlYXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0ZGVsZXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0dXBkYXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdH07XG5cdGNyZWF0aW9uTW9kZTogQ3JlYXRpb25Nb2RlO1xuXHRpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cdGlzVmlld1dpdGhNdWx0aXBsZVZpc3VhbGl6YXRpb25zOiBib29sZWFuO1xuXHRuZXdBY3Rpb24/OiB7XG5cdFx0bmFtZT86IHN0cmluZztcblx0XHRhdmFpbGFibGU/OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdH07XG5cdHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uOiBUYWJsZUNvbnRyb2xDb25maWd1cmF0aW9uO1xuXHRyZXN0cmljdGlvbnM6IFN0YW5kYXJkQWN0aW9uc1Jlc3RyaWN0aW9uc1R5cGU7XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgY29udGV4dCBmb3IgdGhlIHN0YW5kYXJkIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBjcmVhdGlvbk1vZGVcbiAqIEBwYXJhbSB0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvblxuICogQHBhcmFtIHZpZXdDb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyAgVGhlIGNvbnRleHQgZm9yIHRhYmxlIGFjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU3RhbmRhcmRBY3Rpb25zQ29udGV4dChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0Y3JlYXRpb25Nb2RlOiBDcmVhdGlvbk1vZGUsXG5cdHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uOiBUYWJsZUNvbnRyb2xDb25maWd1cmF0aW9uLFxuXHR2aWV3Q29uZmlndXJhdGlvbj86IFZpZXdQYXRoQ29uZmlndXJhdGlvblxuKTogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCB7XG5cdHJldHVybiB7XG5cdFx0Y29sbGVjdGlvblBhdGg6IGdldFRhcmdldE9iamVjdFBhdGgoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpLFxuXHRcdGhpZGRlbkFubm90YXRpb246IHtcblx0XHRcdGNyZWF0ZTogaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oY29udmVydGVyQ29udGV4dCwgQW5ub3RhdGlvbkhpZGRlblByb3BlcnR5LkNyZWF0ZUhpZGRlbiksXG5cdFx0XHRkZWxldGU6IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5EZWxldGVIaWRkZW4pLFxuXHRcdFx0dXBkYXRlOiBpc0FjdGlvbkFubm90YXRlZEhpZGRlbihjb252ZXJ0ZXJDb250ZXh0LCBBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkuVXBkYXRlSGlkZGVuKVxuXHRcdH0sXG5cdFx0Y3JlYXRpb25Nb2RlOiBjcmVhdGlvbk1vZGUsXG5cdFx0aXNEcmFmdE9yU3RpY2t5U3VwcG9ydGVkOiBpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dCksXG5cdFx0aXNWaWV3V2l0aE11bHRpcGxlVmlzdWFsaXphdGlvbnM6IHZpZXdDb25maWd1cmF0aW9uXG5cdFx0XHQ/IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyh2aWV3Q29uZmlndXJhdGlvbilcblx0XHRcdDogZmFsc2UsXG5cdFx0bmV3QWN0aW9uOiBnZXROZXdBY3Rpb24oY29udmVydGVyQ29udGV4dCksXG5cdFx0dGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb246IHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uLFxuXHRcdHJlc3RyaWN0aW9uczogZ2V0UmVzdHJpY3Rpb25zKGNvbnZlcnRlckNvbnRleHQpXG5cdH07XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHN0aWNreSBvciBkcmFmdCBpcyBzdXBwb3J0ZWQuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBpdCBpcyBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRHJhZnRPclN0aWNreVN1cHBvcnRlZChjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogYm9vbGVhbiB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgYklzRHJhZnRTdXBwb3J0ZWQgPSBNb2RlbEhlbHBlci5pc09iamVjdFBhdGhEcmFmdFN1cHBvcnRlZChkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0Y29uc3QgYklzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCA9IChkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0IGFzIEVudGl0eVNldCk/LmFubm90YXRpb25zPy5TZXNzaW9uPy5TdGlja3lTZXNzaW9uU3VwcG9ydGVkXG5cdFx0PyB0cnVlXG5cdFx0OiBmYWxzZTtcblxuXHRyZXR1cm4gYklzRHJhZnRTdXBwb3J0ZWQgfHwgYklzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBjb25maWd1cmVkIG5ld0FjdGlvbiBpbnRvIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBuZXcgYWN0aW9uIGluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE5ld0FjdGlvbihjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogYW55IHtcblx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0KCk7XG5cdGNvbnN0IG5ld0FjdGlvbiA9ICFNb2RlbEhlbHBlci5pc1NpbmdsZXRvbihjdXJyZW50RW50aXR5U2V0KVxuXHRcdD8gKGN1cnJlbnRFbnRpdHlTZXQgYXMgRW50aXR5U2V0KT8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290Py5OZXdBY3Rpb24gfHxcblx0XHQgIChjdXJyZW50RW50aXR5U2V0IGFzIEVudGl0eVNldCk/LmFubm90YXRpb25zPy5TZXNzaW9uPy5TdGlja3lTZXNzaW9uU3VwcG9ydGVkPy5OZXdBY3Rpb25cblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3QgbmV3QWN0aW9uTmFtZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPSBuZXdBY3Rpb24/LnRvU3RyaW5nKCk7XG5cdGlmIChuZXdBY3Rpb25OYW1lKSB7XG5cdFx0bGV0IGF2YWlsYWJsZVByb3BlcnR5OiBhbnkgPSBjb252ZXJ0ZXJDb250ZXh0Py5nZXRFbnRpdHlUeXBlKCkuYWN0aW9uc1tuZXdBY3Rpb25OYW1lXT8uYW5ub3RhdGlvbnM/LkNvcmU/Lk9wZXJhdGlvbkF2YWlsYWJsZTtcblx0XHRhdmFpbGFibGVQcm9wZXJ0eSA9IGF2YWlsYWJsZVByb3BlcnR5ICE9PSB1bmRlZmluZWQgPyBhdmFpbGFibGVQcm9wZXJ0eSA6IHRydWU7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IG5ld0FjdGlvbk5hbWUsXG5cdFx0XHRhdmFpbGFibGU6IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihhdmFpbGFibGVQcm9wZXJ0eSlcblx0XHR9O1xuXHR9XG5cdHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgYWN0aW9uIHZpc2liaWxpdHkgY29uZmlndXJlZCBpbnRvIGFubm90YXRpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzQW5ub3RhdGlvblRlcm1cbiAqIEBwYXJhbSBiV2l0aE5hdmlnYXRpb25QYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgYWN0aW9uIHZpc2liaWxpdHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzQW5ub3RhdGlvblRlcm06IHN0cmluZyxcblx0YldpdGhOYXZpZ2F0aW9uUGF0aCA9IHRydWVcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGN1cnJlbnRFbnRpdHlTZXQgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldCgpO1xuXHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdC8vIENvbnNpZGVyIG9ubHkgdGhlIGxhc3QgbGV2ZWwgb2YgbmF2aWdhdGlvbi4gVGhlIG90aGVycyBhcmUgYWxyZWFkeSBjb25zaWRlcmVkIGluIHRoZSBlbGVtZW50IGJpbmRpbmcgb2YgdGhlIHBhZ2UuXG5cdGNvbnN0IHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMgPVxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCAmJiBiV2l0aE5hdmlnYXRpb25QYXRoXG5cdFx0XHQ/IFtkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW2RhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV0ubmFtZV1cblx0XHRcdDogW107XG5cdGNvbnN0IGFjdGlvbkFubm90YXRpb25WYWx1ZSA9XG5cdFx0KChjdXJyZW50RW50aXR5U2V0Py5hbm5vdGF0aW9ucy5VSSBhcyBhbnkpPy5bc0Fubm90YXRpb25UZXJtXSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPikgfHwgZmFsc2U7XG5cblx0cmV0dXJuIGN1cnJlbnRFbnRpdHlTZXRcblx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihhY3Rpb25Bbm5vdGF0aW9uVmFsdWUsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHVuZGVmaW5lZCwgKHBhdGg6IHN0cmluZykgPT5cblx0XHRcdFx0c2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZWRUeXBlcygpLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzKVxuXHRcdCAgKVxuXHRcdDogY29uc3RhbnQoZmFsc2UpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFubm90YXRlZCByZXN0cmljdGlvbnMgZm9yIHRoZSBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgcmVzdHJpY3Rpb24gaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3RyaWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogU3RhbmRhcmRBY3Rpb25zUmVzdHJpY3Rpb25zVHlwZSB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgcmVzdHJpY3Rpb25zRGVmID0gW1xuXHRcdHtcblx0XHRcdGtleTogXCJpc0luc2VydGFibGVcIixcblx0XHRcdGZ1bmN0aW9uOiBpc1BhdGhJbnNlcnRhYmxlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiaXNVcGRhdGFibGVcIixcblx0XHRcdGZ1bmN0aW9uOiBpc1BhdGhVcGRhdGFibGVcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogXCJpc0RlbGV0YWJsZVwiLFxuXHRcdFx0ZnVuY3Rpb246IGlzUGF0aERlbGV0YWJsZVxuXHRcdH1cblx0XTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uUmVzdHJpY3Rpb25zVHlwZT4gPSB7fTtcblx0cmVzdHJpY3Rpb25zRGVmLmZvckVhY2goZnVuY3Rpb24gKGRlZikge1xuXHRcdGNvbnN0IGRlZkZ1bmN0aW9uID0gZGVmW1wiZnVuY3Rpb25cIl07XG5cdFx0cmVzdWx0W2RlZi5rZXldID0ge1xuXHRcdFx0ZXhwcmVzc2lvbjogZGVmRnVuY3Rpb24uYXBwbHkobnVsbCwgW1xuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocylcblx0XHRcdFx0fVxuXHRcdFx0XSksXG5cdFx0XHRuYXZpZ2F0aW9uRXhwcmVzc2lvbjogZGVmRnVuY3Rpb24uYXBwbHkobnVsbCwgW1xuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWUsXG5cdFx0XHRcdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocylcblx0XHRcdFx0fVxuXHRcdFx0XSlcblx0XHR9O1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGVtcGxhdGluZyBmb3IgaW5zZXJ0L3VwZGF0ZSBhY3Rpb25zIGlzIG1hbmRhdG9yeS5cbiAqXG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGlzRHJhZnRPclN0aWNreVxuICogQHBhcmFtIGlzQ3JlYXRlQWx3YXlzSGlkZGVuXG4gKiBAcmV0dXJucyBUaGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0aW5nKFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRpc0RyYWZ0T3JTdGlja3k6IGJvb2xlYW4sXG5cdGlzQ3JlYXRlQWx3YXlzSGlkZGVuOiBib29sZWFuXG4pOiBib29sZWFuIHtcblx0cmV0dXJuIChpc0RyYWZ0T3JTdGlja3kgfHwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5FeHRlcm5hbCkgJiYgIWlzQ3JlYXRlQWx3YXlzSGlkZGVuO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgYWN0aW9uIGluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uQ3JlYXRlKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGVWaXNpYmlsaXR5ID0gZ2V0Q3JlYXRlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0Q3JlYXRlVGVtcGxhdGluZyhzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5KSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oY3JlYXRlVmlzaWJpbGl0eSksXG5cdFx0ZW5hYmxlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0Q3JlYXRlRW5hYmxlbWVudChjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgJ0RlbGV0ZScgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkRlbGV0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgZGVsZXRlVmlzaWJpbGl0eSA9IGdldERlbGV0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0RGVmYXVsdFRlbXBsYXRpbmcoZGVsZXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKGRlbGV0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldERlbGV0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgZGVsZXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGlvblJvd1Zpc2liaWxpdHkgPSBnZXRDcmVhdGVWaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIHRydWUpO1xuXG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5LCB0cnVlKSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlRXhwcmVzc2lvbihnZXRDcmVhdGlvblJvd0VuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgJ1Bhc3RlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhbmRhcmRBY3Rpb25QYXN0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkOiBib29sZWFuXG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGVWaXNpYmlsaXR5ID0gZ2V0Q3JlYXRlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblx0Y29uc3QgY3JlYXRlRW5hYmxlbWVudCA9IGdldENyZWF0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSk7XG5cdGNvbnN0IHBhc3RlVmlzaWJpbGl0eSA9IGdldFBhc3RlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5LCBpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWQpO1xuXHRyZXR1cm4ge1xuXHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKHBhc3RlVmlzaWJpbGl0eSksXG5cdFx0ZW5hYmxlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0UGFzdGVFbmFibGVtZW50KHBhc3RlVmlzaWJpbGl0eSwgY3JlYXRlRW5hYmxlbWVudCkpXG5cdH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnTWFzc0VkaXQnIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uTWFzc0VkaXQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IFN0YW5kYXJkQWN0aW9uQ29uZmlnVHlwZSB7XG5cdGNvbnN0IG1hc3NFZGl0VmlzaWJpbGl0eSA9IGdldE1hc3NFZGl0VmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblxuXHRyZXR1cm4ge1xuXHRcdGlzVGVtcGxhdGVkOiBjb21waWxlRXhwcmVzc2lvbihnZXREZWZhdWx0VGVtcGxhdGluZyhtYXNzRWRpdFZpc2liaWxpdHkpKSxcblx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihtYXNzRWRpdFZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldE1hc3NFZGl0RW5hYmxlbWVudChjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBtYXNzRWRpdFZpc2liaWxpdHkpKVxuXHR9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRlbXBsYXRpbmcgb2YgdGhlICdDcmVhdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGNyZWF0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSBpc0ZvckNyZWF0aW9uUm93XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlIGJpbmRpbmcgZXhwcmVzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlVGVtcGxhdGluZyhcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRlVmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRpc0ZvckNyZWF0aW9uUm93ID0gZmFsc2Vcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vVGVtcGxhdGluZyBvZiBDcmVhdGUgQnV0dG9uIGlzIG5vdCBkb25lOlxuXHQvLyBcdCAtIElmIEJ1dHRvbiBpcyBuZXZlciB2aXNpYmxlKGNvdmVyZWQgdGhlIEV4dGVybmFsIGNyZWF0ZSBidXR0b24sIG5ldyBBY3Rpb24pXG5cdC8vXHQgLSBvciBDcmVhdGlvbk1vZGUgaXMgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0ZSBCdXR0b25cblx0Ly9cdCAtIG9yIENyZWF0aW9uTW9kZSBpcyBub3Qgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0aW9uUm93IEJ1dHRvblxuXG5cdHJldHVybiBhbmQoXG5cdFx0Ly9YTk9SIGdhdGVcblx0XHRvcihcblx0XHRcdGFuZChpc0ZvckNyZWF0aW9uUm93LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkNyZWF0aW9uUm93KSxcblx0XHRcdGFuZCghaXNGb3JDcmVhdGlvblJvdywgc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgIT09IENyZWF0aW9uTW9kZS5DcmVhdGlvblJvdylcblx0XHQpLFxuXHRcdG9yKG5vdChpc0NvbnN0YW50KGNyZWF0ZVZpc2liaWxpdHkpKSwgY3JlYXRlVmlzaWJpbGl0eSlcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIGFjdGlvblZpc2liaWxpdHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VGVtcGxhdGluZyhhY3Rpb25WaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gb3Iobm90KGlzQ29uc3RhbnQoYWN0aW9uVmlzaWJpbGl0eSkpLCBhY3Rpb25WaXNpYmlsaXR5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdDcmVhdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSBpc0ZvckNyZWF0aW9uUm93XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDcmVhdGVWaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRpc0ZvckNyZWF0aW9uUm93ID0gZmFsc2Vcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzSW5zZXJ0YWJsZSA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzSW5zZXJ0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBpc0NyZWF0ZUhpZGRlbiA9IGlzRm9yQ3JlYXRpb25Sb3dcblx0XHQ/IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5DcmVhdGVIaWRkZW4sIGZhbHNlKVxuXHRcdDogc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLmNyZWF0ZTtcblx0Y29uc3QgbmV3QWN0aW9uID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5uZXdBY3Rpb247XG5cdC8vQ3JlYXRlIEJ1dHRvbiBpcyB2aXNpYmxlOlxuXHQvLyBcdCAtIElmIHRoZSBjcmVhdGlvbiBtb2RlIGlzIGV4dGVybmFsXG5cdC8vICAgICAgLSBJZiB3ZSdyZSBvbiB0aGUgbGlzdCByZXBvcnQgYW5kIGNyZWF0ZSBpcyBub3QgaGlkZGVuXG5cdC8vXHRcdC0gT3RoZXJ3aXNlIHRoaXMgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgdGhlIFVJLklzRWRpdGFibGVcblx0Ly9cdCAtIE90aGVyd2lzZVxuXHQvL1x0XHQtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgaXMgdmFsaWQgdGhlbiBjcmVhdGUgYnV0dG9uIGlzbid0IHZpc2libGVcblx0Ly9cdFx0XHQtIG5vIG5ld0FjdGlvbiBhdmFpbGFibGVcblx0Ly9cdFx0XHQtIEl0J3Mgbm90IGluc2VydGFibGUgYW5kIHRoZXJlIGlzIG5vdCBhIG5ldyBhY3Rpb25cblx0Ly9cdFx0XHQtIGNyZWF0ZSBpcyBoaWRkZW5cblx0Ly9cdFx0XHQtIFRoZXJlIGFyZSBtdWx0aXBsZSB2aXN1YWxpemF0aW9uc1xuXHQvL1x0XHRcdC0gSXQncyBhbiBBbmFseXRpY2FsIExpc3QgUGFnZVxuXHQvL1x0XHRcdC0gVXNlcyBJbmxpbmVDcmVhdGlvblJvd3MgbW9kZSBhbmQgYSBSZXNwb25zaXZlIHRhYmxlIHR5cGUsIHdpdGggdGhlIHBhcmFtZXRlciBpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIHRvIHRydWUgd2hpbGUgbm90IGluIGNyZWF0ZSBtb2RlXG5cdC8vICAgLSBPdGhlcndpc2Vcblx0Ly8gXHQgXHQtIElmIHdlJ3JlIG9uIHRoZSBsaXN0IHJlcG9ydCAtPlxuXHQvLyBcdCBcdFx0LSBJZiBVSS5DcmVhdGVIaWRkZW4gcG9pbnRzIHRvIGEgcHJvcGVydHkgcGF0aCAtPiBwcm92aWRlIGEgbmVnYXRlZCBiaW5kaW5nIHRvIHRoaXMgcGF0aFxuXHQvLyBcdCBcdFx0LSBPdGhlcndpc2UsIGNyZWF0ZSBpcyB2aXNpYmxlXG5cdC8vIFx0IFx0LSBPdGhlcndpc2Vcblx0Ly8gXHQgIFx0IC0gVGhpcyBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiB0aGUgVUkuSXNFZGl0YWJsZVxuXHRyZXR1cm4gaWZFbHNlKFxuXHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuY3JlYXRpb25Nb2RlID09PSBDcmVhdGlvbk1vZGUuRXh0ZXJuYWwsXG5cdFx0YW5kKG5vdChpc0NyZWF0ZUhpZGRlbiksIG9yKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LCBVSS5Jc0VkaXRhYmxlKSksXG5cdFx0aWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KG5ld0FjdGlvbj8uYXZhaWxhYmxlKSwgZXF1YWwobmV3QWN0aW9uPy5hdmFpbGFibGUsIGZhbHNlKSksXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KGlzSW5zZXJ0YWJsZSksIGVxdWFsKGlzSW5zZXJ0YWJsZSwgZmFsc2UpLCAhbmV3QWN0aW9uKSxcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNDcmVhdGVIaWRkZW4pLCBlcXVhbChpc0NyZWF0ZUhpZGRlbiwgdHJ1ZSkpLFxuXHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3MsXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8udHlwZSA9PT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0Py50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSA9PT0gZmFsc2UsXG5cdFx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdFx0VUkuSXNDcmVhdGVNb2RlXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0XHRvcihub3QoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oaXNDcmVhdGVIaWRkZW4pKSwgbm90KGlzQ3JlYXRlSGlkZGVuKSksXG5cdFx0XHRcdGFuZChub3QoaXNDcmVhdGVIaWRkZW4pLCBVSS5Jc0VkaXRhYmxlKVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdEZWxldGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdEZWxldGUnIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGV0ZVZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzRGVsZXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLmRlbGV0ZTtcblx0Y29uc3QgcGF0aERlbGV0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc0RlbGV0YWJsZS5leHByZXNzaW9uO1xuXG5cdC8vRGVsZXRlIEJ1dHRvbiBpcyB2aXNpYmxlOlxuXHQvLyBcdCBQcmVyZXF1aXNpdGVzOlxuXHQvL1x0IC0gSWYgd2UncmUgbm90IG9uIEFMUFxuXHQvLyAgIC0gSWYgcmVzdHJpY3Rpb25zIG9uIGRlbGV0YWJsZSBzZXQgdG8gZmFsc2UgLT4gbm90IHZpc2libGVcblx0Ly8gICAtIE90aGVyd2lzZVxuXHQvL1x0XHRcdC0gSWYgVUkuRGVsZXRlSGlkZGVuIGlzIHRydWUgLT4gbm90IHZpc2libGVcblx0Ly9cdFx0XHQtIE90aGVyd2lzZVxuXHQvLyBcdCBcdFx0XHQtIElmIHdlJ3JlIG9uIE9QIC0+IGRlcGVuZGluZyBpZiBVSSBpcyBlZGl0YWJsZSBhbmQgcmVzdHJpY3Rpb25zIG9uIGRlbGV0YWJsZVxuXHQvL1x0XHRcdFx0LSBPdGhlcndpc2Vcblx0Ly9cdFx0XHRcdCBcdC0gSWYgVUkuRGVsZXRlSGlkZGVuIHBvaW50cyB0byBhIHByb3BlcnR5IHBhdGggLT4gcHJvdmlkZSBhIG5lZ2F0ZWQgYmluZGluZyB0byB0aGlzIHBhdGhcblx0Ly9cdCBcdCBcdFx0IFx0LSBPdGhlcndpc2UsIGRlbGV0ZSBpcyB2aXNpYmxlXG5cblx0cmV0dXJuIGlmRWxzZShcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlLFxuXHRcdGZhbHNlLFxuXHRcdGlmRWxzZShcblx0XHRcdGFuZChpc0NvbnN0YW50KHBhdGhEZWxldGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aERlbGV0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSksXG5cdFx0XHRmYWxzZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNEZWxldGVIaWRkZW4pLCBlcXVhbChpc0RlbGV0ZUhpZGRlbiwgY29uc3RhbnQodHJ1ZSkpKSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpICE9PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCxcblx0XHRcdFx0XHRhbmQobm90KGlzRGVsZXRlSGlkZGVuKSwgVUkuSXNFZGl0YWJsZSksXG5cdFx0XHRcdFx0bm90KGFuZChpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbihpc0RlbGV0ZUhpZGRlbiksIGlzRGVsZXRlSGlkZGVuKSlcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGNyZWF0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSBpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFzdGVWaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRjcmVhdGVWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZDogYm9vbGVhblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Ly8gSWYgQ3JlYXRlIGlzIHZpc2libGUsIGVuYWJsZVBhc3RlIGlzIG5vdCBkaXNhYmxlZCBpbnRvIG1hbmlmZXN0IGFuZCB3ZSBhcmUgb24gT1AvYmxvY2tzIG91dHNpZGUgRmlvcmkgZWxlbWVudHMgdGVtcGxhdGVzXG5cdC8vIFRoZW4gYnV0dG9uIHdpbGwgYmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gaW5zZXJ0YWJsZSByZXN0cmljdGlvbnMgYW5kIGNyZWF0ZSB2aXNpYmlsaXR5XG5cdC8vIE90aGVyd2lzZSBpdCdzIG5vdCB2aXNpYmxlXG5cdHJldHVybiBhbmQoXG5cdFx0bm90RXF1YWwoc3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbi5lbmFibGVQYXN0ZSwgZmFsc2UpLFxuXHRcdGNyZWF0ZVZpc2liaWxpdHksXG5cdFx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkLFxuXHRcdFtUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCwgVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZV0uaW5kZXhPZihjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpKSA9PT0gLTEsXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb25cblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBvZiB0aGUgJ01hc3NFZGl0JyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXNzRWRpdFZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzVXBkYXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLnVwZGF0ZSxcblx0XHRwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLmV4cHJlc3Npb24sXG5cdFx0Yk1hc3NFZGl0RW5hYmxlZEluTWFuaWZlc3Q6IGJvb2xlYW4gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uPy5lbmFibGVNYXNzRWRpdCB8fCBmYWxzZTtcblx0Y29uc3QgdGVtcGxhdGVCaW5kaW5nRXhwcmVzc2lvbiA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2Vcblx0XHRcdD8gVUkuSXNFZGl0YWJsZVxuXHRcdFx0OiBjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydDtcblx0Ly9NYXNzRWRpdCBpcyB2aXNpYmxlXG5cdC8vIElmXG5cdC8vXHRcdC0gdGhlcmUgaXMgbm8gc3RhdGljIHJlc3RyaWN0aW9ucyBzZXQgdG8gZmFsc2Vcblx0Ly9cdFx0LSBhbmQgZW5hYmxlTWFzc0VkaXQgaXMgbm90IHNldCB0byBmYWxzZSBpbnRvIHRoZSBtYW5pZmVzdFxuXHQvL1x0XHQtIGFuZCB0aGUgc2VsZWN0aW9uTW9kZSBpcyByZWxldmFudFxuXHQvL1x0VGhlbiBNYXNzRWRpdCBpcyBhbHdheXMgdmlzaWJsZSBpbiBMUiBvciBkeW5hbWljYWxseSB2aXNpYmxlIGluIE9QIGFjY29yZGluZyB0byB1aT5FZGl0YWJsZSBhbmQgaGlkZGVuQW5ub3RhdGlvblxuXHQvLyAgQnV0dG9uIGlzIGhpZGRlbiBmb3IgYWxsIG90aGVyIGNhc2VzXG5cdHJldHVybiBhbmQoXG5cdFx0bm90KGFuZChpc0NvbnN0YW50KHBhdGhVcGRhdGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aFVwZGF0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSkpLFxuXHRcdGJNYXNzRWRpdEVuYWJsZWRJbk1hbmlmZXN0LFxuXHRcdHRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0bm90KGlzVXBkYXRlSGlkZGVuKVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgY3JlYXRpb25Sb3cuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gY3JlYXRpb25Sb3dWaXNpYmlsaXR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBjcmVhdGlvblJvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93RW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRpb25Sb3dWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IHJlc3RyaWN0aW9uc0luc2VydGFibGUgPSBpc1BhdGhJbnNlcnRhYmxlKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCB7XG5cdFx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbjogdHJ1ZSxcblx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWUsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+IHtcblx0XHRcdGlmIChwYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdHBhdGggPSBzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocyk7XG5cdFx0XHRcdHJldHVybiBwYXRoO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS5uYXZpZ2F0aW9uUHJvcGVydGllcztcblx0XHRcdGlmIChuYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0XHRjb25zdCBsYXN0TmF2ID0gbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV07XG5cdFx0XHRcdGNvbnN0IHBhcnRuZXIgPSBsYXN0TmF2Ll90eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmIGxhc3ROYXYucGFydG5lcjtcblx0XHRcdFx0aWYgKHBhcnRuZXIpIHtcblx0XHRcdFx0XHRwYXRoID0gYCR7cGFydG5lcn0vJHtwYXRofWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiBwYXRoO1xuXHRcdH1cblx0fSk7XG5cdGNvbnN0IGlzSW5zZXJ0YWJsZSA9XG5cdFx0cmVzdHJpY3Rpb25zSW5zZXJ0YWJsZS5fdHlwZSA9PT0gXCJVbnJlc29sdmFibGVcIlxuXHRcdFx0PyBpc1BhdGhJbnNlcnRhYmxlKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCB7XG5cdFx0XHRcdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcpID0+IHNpbmdsZXRvblBhdGhWaXNpdG9yKHBhdGgsIGNvbnZlcnRlckNvbnRleHQuZ2V0Q29udmVydGVkVHlwZXMoKSwgW10pXG5cdFx0XHQgIH0pXG5cdFx0XHQ6IHJlc3RyaWN0aW9uc0luc2VydGFibGU7XG5cblx0cmV0dXJuIGFuZChcblx0XHRjcmVhdGlvblJvd1Zpc2liaWxpdHksXG5cdFx0aXNJbnNlcnRhYmxlLFxuXHRcdG9yKFxuXHRcdFx0IXN0YW5kYXJkQWN0aW9uc0NvbnRleHQudGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24uZGlzYWJsZUFkZFJvd0J1dHRvbkZvckVtcHR5RGF0YSxcblx0XHRcdGZvcm1hdFJlc3VsdChbcGF0aEluTW9kZWwoXCJjcmVhdGlvblJvd0ZpZWxkVmFsaWRpdHlcIiwgXCJpbnRlcm5hbFwiKV0sIHRhYmxlRm9ybWF0dGVycy52YWxpZGF0ZUNyZWF0aW9uUm93RmllbGRzKVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlICdDcmVhdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSBjcmVhdGVWaXNpYmlsaXR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDcmVhdGVFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRjcmVhdGVWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzSW5zZXJ0YWJsZSA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzSW5zZXJ0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBDb2xsZWN0aW9uVHlwZSA9IGNvbnZlcnRlckNvbnRleHQucmVzb2x2ZUFic29sdXRlUGF0aDxhbnk+KHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuY29sbGVjdGlvblBhdGgpLnRhcmdldD8uX3R5cGU7XG5cdHJldHVybiBhbmQoXG5cdFx0Y3JlYXRlVmlzaWJpbGl0eSxcblx0XHRvcihcblx0XHRcdENvbGxlY3Rpb25UeXBlID09PSBcIkVudGl0eVNldFwiLFxuXHRcdFx0YW5kKGlzSW5zZXJ0YWJsZSwgb3IoY29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSAhPT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UsIFVJLklzRWRpdGFibGUpKVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlICdEZWxldGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSBkZWxldGVWaXNpYmlsaXR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRkZWxldGVWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGRlbGV0YWJsZUNvbnRleHRzID0gcGF0aEluTW9kZWwoXCJkZWxldGFibGVDb250ZXh0c1wiLCBcImludGVybmFsXCIpO1xuXHRjb25zdCB1blNhdmVkQ29udGV4dHMgPSBwYXRoSW5Nb2RlbChcInVuU2F2ZWRDb250ZXh0c1wiLCBcImludGVybmFsXCIpO1xuXHRjb25zdCBkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlID0gcGF0aEluTW9kZWwoXCJkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlXCIsIFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUgPSBwYXRoSW5Nb2RlbChcImRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmVcIiwgXCJpbnRlcm5hbFwiKTtcblxuXHRyZXR1cm4gYW5kKFxuXHRcdGRlbGV0ZVZpc2liaWxpdHksXG5cdFx0aWZFbHNlKFxuXHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2UsXG5cdFx0XHRvcihcblx0XHRcdFx0YW5kKG5vdEVxdWFsKGRlbGV0YWJsZUNvbnRleHRzLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgoZGVsZXRhYmxlQ29udGV4dHMpLCAwKSksXG5cdFx0XHRcdGFuZChub3RFcXVhbChkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgoZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSksIDApKVxuXHRcdFx0KSxcblx0XHRcdG9yKFxuXHRcdFx0XHRhbmQobm90RXF1YWwoZGVsZXRhYmxlQ29udGV4dHMsIHVuZGVmaW5lZCksIGdyZWF0ZXJUaGFuKGxlbmd0aChkZWxldGFibGVDb250ZXh0cyksIDApKSxcblx0XHRcdFx0YW5kKG5vdEVxdWFsKGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUsIHVuZGVmaW5lZCksIGdyZWF0ZXJUaGFuKGxlbmd0aChkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlKSwgMCkpLFxuXHRcdFx0XHQvLyBvbiBMUiwgYWxzbyBlbmFibGUgZGVsZXRlIGJ1dHRvbiB0byBjYW5jZWwgZHJhZnRzXG5cdFx0XHRcdGFuZChub3RFcXVhbChkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgoZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZSksIDApKSxcblx0XHRcdFx0Ly8gZGVsZXRhYmxlIGNvbnRleHRzIHdpdGggdW5zYXZlZCBjaGFuZ2VzIGFyZSBjb3VudGVkIHNlcGFyYXRlbHkgKExSIG9ubHkpXG5cdFx0XHRcdGFuZChub3RFcXVhbCh1blNhdmVkQ29udGV4dHMsIHVuZGVmaW5lZCksIGdyZWF0ZXJUaGFuKGxlbmd0aCh1blNhdmVkQ29udGV4dHMpLCAwKSlcblx0XHRcdClcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnUGFzdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gcGFzdGVWaXNpYmlsaXR5XG4gKiBAcGFyYW0gY3JlYXRlRW5hYmxlbWVudFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgJ1Bhc3RlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXN0ZUVuYWJsZW1lbnQoXG5cdHBhc3RlVmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRjcmVhdGVFbmFibGVtZW50OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBhbmQocGFzdGVWaXNpYmlsaXR5LCBjcmVhdGVFbmFibGVtZW50KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIG1hc3NFZGl0VmlzaWJpbGl0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgJ01hc3NFZGl0JyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXNzRWRpdEVuYWJsZW1lbnQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQsXG5cdG1hc3NFZGl0VmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHk6IGFueSA9XG5cdFx0IWlzQ29uc3RhbnQocGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pICYmXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNVcGRhdGFibGUubmF2aWdhdGlvbkV4cHJlc3Npb24uX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCI7XG5cdGNvbnN0IG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cyA9IGdyZWF0ZXJPckVxdWFsKHBhdGhJbk1vZGVsKFwibnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzXCIsIFwiaW50ZXJuYWxcIiksIDEpO1xuXHRjb25zdCBudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzID0gZ3JlYXRlck9yRXF1YWwobGVuZ3RoKHBhdGhJbk1vZGVsKFwidXBkYXRhYmxlQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKSksIDEpO1xuXHRjb25zdCBiSXNEcmFmdFN1cHBvcnRlZCA9IE1vZGVsSGVscGVyLmlzT2JqZWN0UGF0aERyYWZ0U3VwcG9ydGVkKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKTtcblx0Y29uc3QgYkRpc3BsYXlNb2RlID0gaXNJbkRpc3BsYXlNb2RlKGNvbnZlcnRlckNvbnRleHQpO1xuXG5cdC8vIG51bWJlck9mVXBkYXRhYmxlQ29udGV4dHMgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlIGJpbmRpbmcgaW4gY2FzZVxuXHQvLyAxLiBVcGRhdGUgaXMgZGVwZW5kZW50IG9uIGN1cnJlbnQgZW50aXR5IHByb3BlcnR5IChpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5IGlzIHRydWUpLlxuXHQvLyAyLiBUaGUgdGFibGUgaXMgcmVhZCBvbmx5IGFuZCBkcmFmdCBlbmFibGVkKGxpa2UgTFIpLCBpbiB0aGlzIGNhc2Ugb25seSBhY3RpdmUgY29udGV4dHMgY2FuIGJlIG1hc3MgZWRpdGVkLlxuXHQvLyAgICBTbywgdXBkYXRlIGRlcGVuZHMgb24gJ0lzQWN0aXZlRW50aXR5JyB2YWx1ZSB3aGljaCBuZWVkcyB0byBiZSBjaGVja2VkIHJ1bnRpbWUuXG5cdGNvbnN0IHJ1bnRpbWVCaW5kaW5nID0gaWZFbHNlKFxuXHRcdG9yKGFuZChiRGlzcGxheU1vZGUsIGJJc0RyYWZ0U3VwcG9ydGVkKSwgaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSksXG5cdFx0YW5kKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cywgbnVtYmVyT2ZVcGRhdGFibGVDb250ZXh0cyksXG5cdFx0YW5kKG51bWJlck9mU2VsZWN0ZWRDb250ZXh0cylcblx0KTtcblxuXHRyZXR1cm4gYW5kKG1hc3NFZGl0VmlzaWJpbGl0eSwgaWZFbHNlKGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHksIHJ1bnRpbWVCaW5kaW5nLCBhbmQocnVudGltZUJpbmRpbmcsIHBhdGhVcGRhdGFibGVFeHByZXNzaW9uKSkpO1xufVxuXG4vKipcbiAqIFRlbGxzIGlmIHRoZSB0YWJsZSBpbiB0ZW1wbGF0ZSBpcyBpbiBkaXNwbGF5IG1vZGUuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSB2aWV3Q29uZmlndXJhdGlvblxuICogQHJldHVybnMgYHRydWVgIGlmIHRoZSB0YWJsZSBpcyBpbiBkaXNwbGF5IG1vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW5EaXNwbGF5TW9kZShjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LCB2aWV3Q29uZmlndXJhdGlvbj86IFZpZXdQYXRoQ29uZmlndXJhdGlvbik6IGJvb2xlYW4ge1xuXHRjb25zdCB0ZW1wbGF0ZVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpO1xuXHRpZiAoXG5cdFx0dGVtcGxhdGVUeXBlID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCB8fFxuXHRcdHRlbXBsYXRlVHlwZSA9PT0gVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZSB8fFxuXHRcdCh2aWV3Q29uZmlndXJhdGlvbiAmJiBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnModmlld0NvbmZpZ3VyYXRpb24pKVxuXHQpIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHQvLyB1cGRhdGFibGUgd2lsbCBiZSBoYW5kbGVkIGF0IHRoZSBwcm9wZXJ0eSBsZXZlbFxuXHRyZXR1cm4gZmFsc2U7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BNkJLQSx3QkFBd0I7RUFBQSxXQUF4QkEsd0JBQXdCO0lBQXhCQSx3QkFBd0I7SUFBeEJBLHdCQUF3QjtJQUF4QkEsd0JBQXdCO0VBQUEsR0FBeEJBLHdCQUF3QixLQUF4QkEsd0JBQXdCO0VBb0M3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxTQUFTQyw4QkFBOEIsQ0FDN0NDLGdCQUFrQyxFQUNsQ0MsWUFBMEIsRUFDMUJDLDBCQUFxRCxFQUNyREMsaUJBQXlDLEVBQ2hCO0lBQ3pCLE9BQU87TUFDTkMsY0FBYyxFQUFFQyxtQkFBbUIsQ0FBQ0wsZ0JBQWdCLENBQUNNLHNCQUFzQixFQUFFLENBQUM7TUFDOUVDLGdCQUFnQixFQUFFO1FBQ2pCQyxNQUFNLEVBQUVDLHVCQUF1QixDQUFDVCxnQkFBZ0IsRUFBRUYsd0JBQXdCLENBQUNZLFlBQVksQ0FBQztRQUN4RkMsTUFBTSxFQUFFRix1QkFBdUIsQ0FBQ1QsZ0JBQWdCLEVBQUVGLHdCQUF3QixDQUFDYyxZQUFZLENBQUM7UUFDeEZDLE1BQU0sRUFBRUosdUJBQXVCLENBQUNULGdCQUFnQixFQUFFRix3QkFBd0IsQ0FBQ2dCLFlBQVk7TUFDeEYsQ0FBQztNQUNEYixZQUFZLEVBQUVBLFlBQVk7TUFDMUJjLHdCQUF3QixFQUFFQSx3QkFBd0IsQ0FBQ2YsZ0JBQWdCLENBQUM7TUFDcEVnQixnQ0FBZ0MsRUFBRWIsaUJBQWlCLEdBQ2hESCxnQkFBZ0IsQ0FBQ2lCLGtCQUFrQixFQUFFLENBQUNDLHlCQUF5QixDQUFDZixpQkFBaUIsQ0FBQyxHQUNsRixLQUFLO01BQ1JnQixTQUFTLEVBQUVDLFlBQVksQ0FBQ3BCLGdCQUFnQixDQUFDO01BQ3pDRSwwQkFBMEIsRUFBRUEsMEJBQTBCO01BQ3REbUIsWUFBWSxFQUFFQyxlQUFlLENBQUN0QixnQkFBZ0I7SUFDL0MsQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTU8sU0FBU2Usd0JBQXdCLENBQUNmLGdCQUFrQyxFQUFXO0lBQUE7SUFDckYsTUFBTXVCLG1CQUFtQixHQUFHdkIsZ0JBQWdCLENBQUNNLHNCQUFzQixFQUFFO0lBQ3JFLE1BQU1rQixpQkFBaUIsR0FBR0MsV0FBVyxDQUFDQywwQkFBMEIsQ0FBQ0gsbUJBQW1CLENBQUM7SUFDckYsTUFBTUkseUJBQXlCLEdBQUcseUJBQUNKLG1CQUFtQixDQUFDSyxpQkFBaUIsNEVBQXRDLHNCQUFzREMsV0FBVyw2RUFBakUsdUJBQW1FQyxPQUFPLG1EQUExRSx1QkFBNEVDLHNCQUFzQixHQUNqSSxJQUFJLEdBQ0osS0FBSztJQUVSLE9BQU9QLGlCQUFpQixJQUFJRyx5QkFBeUI7RUFDdEQ7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEE7RUFNTyxTQUFTUCxZQUFZLENBQUNwQixnQkFBa0MsRUFBTztJQUFBO0lBQ3JFLE1BQU1nQyxnQkFBZ0IsR0FBR2hDLGdCQUFnQixDQUFDaUMsWUFBWSxFQUFFO0lBQ3hELE1BQU1kLFNBQVMsR0FBRyxDQUFDTSxXQUFXLENBQUNTLFdBQVcsQ0FBQ0YsZ0JBQWdCLENBQUMsR0FDekQsQ0FBQ0EsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsdUNBQWhCQSxnQkFBZ0IsQ0FBZ0JILFdBQVcsd0VBQTVDLGFBQThDTSxNQUFNLGlGQUFwRCxvQkFBc0RDLFNBQVMsMERBQS9ELHNCQUFpRUMsU0FBUyxNQUN6RUwsZ0JBQWdCLGFBQWhCQSxnQkFBZ0Isd0NBQWhCQSxnQkFBZ0IsQ0FBZ0JILFdBQVcsMkVBQTVDLGNBQThDQyxPQUFPLG9GQUFyRCxzQkFBdURDLHNCQUFzQiwyREFBN0UsdUJBQStFTSxTQUFTLElBQ3hGQyxTQUFTO0lBQ1osTUFBTUMsYUFBK0MsR0FBR3BCLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFcUIsUUFBUSxFQUFFO0lBQzdFLElBQUlELGFBQWEsRUFBRTtNQUFBO01BQ2xCLElBQUlFLGlCQUFzQixHQUFHekMsZ0JBQWdCLGFBQWhCQSxnQkFBZ0IsZ0RBQWhCQSxnQkFBZ0IsQ0FBRTBDLGFBQWEsRUFBRSxDQUFDQyxPQUFPLENBQUNKLGFBQWEsQ0FBQyxvRkFBeEQsc0JBQTBEVixXQUFXLHFGQUFyRSx1QkFBdUVlLElBQUksMkRBQTNFLHVCQUE2RUMsa0JBQWtCO01BQzVISixpQkFBaUIsR0FBR0EsaUJBQWlCLEtBQUtILFNBQVMsR0FBR0csaUJBQWlCLEdBQUcsSUFBSTtNQUM5RSxPQUFPO1FBQ05LLElBQUksRUFBRVAsYUFBYTtRQUNuQlEsU0FBUyxFQUFFQywyQkFBMkIsQ0FBQ1AsaUJBQWlCO01BQ3pELENBQUM7SUFDRjtJQUNBLE9BQU9ILFNBQVM7RUFDakI7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sU0FBUzdCLHVCQUF1QixDQUN0Q1QsZ0JBQWtDLEVBQ2xDaUQsZUFBdUIsRUFFYTtJQUFBO0lBQUEsSUFEcENDLG1CQUFtQix1RUFBRyxJQUFJO0lBRTFCLE1BQU1sQixnQkFBZ0IsR0FBR2hDLGdCQUFnQixDQUFDaUMsWUFBWSxFQUFFO0lBQ3hELE1BQU1WLG1CQUFtQixHQUFHdkIsZ0JBQWdCLENBQUNNLHNCQUFzQixFQUFFO0lBQ3JFO0lBQ0EsTUFBTTZDLHNCQUFzQixHQUMzQjVCLG1CQUFtQixDQUFDNkIsb0JBQW9CLENBQUNDLE1BQU0sR0FBRyxDQUFDLElBQUlILG1CQUFtQixHQUN2RSxDQUFDM0IsbUJBQW1CLENBQUM2QixvQkFBb0IsQ0FBQzdCLG1CQUFtQixDQUFDNkIsb0JBQW9CLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQ1AsSUFBSSxDQUFDLEdBQ3BHLEVBQUU7SUFDTixNQUFNUSxxQkFBcUIsR0FDMUIsQ0FBRXRCLGdCQUFnQixhQUFoQkEsZ0JBQWdCLGdEQUFoQkEsZ0JBQWdCLENBQUVILFdBQVcsQ0FBQzBCLEVBQUUsMERBQWpDLHNCQUE0Q04sZUFBZSxDQUFDLEtBQXlDLEtBQUs7SUFFNUcsT0FBT2pCLGdCQUFnQixHQUNwQmdCLDJCQUEyQixDQUFDTSxxQkFBcUIsRUFBRUgsc0JBQXNCLEVBQUViLFNBQVMsRUFBR2tCLElBQVksSUFDbkdDLG9CQUFvQixDQUFDRCxJQUFJLEVBQUV4RCxnQkFBZ0IsQ0FBQzBELGlCQUFpQixFQUFFLEVBQUVQLHNCQUFzQixDQUFDLENBQ3ZGLEdBQ0RRLFFBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkI7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEE7RUFNTyxTQUFTckMsZUFBZSxDQUFDdEIsZ0JBQWtDLEVBQW1DO0lBQ3BHLE1BQU11QixtQkFBbUIsR0FBR3ZCLGdCQUFnQixDQUFDTSxzQkFBc0IsRUFBRTtJQUNyRSxNQUFNc0QsZUFBZSxHQUFHLENBQ3ZCO01BQ0NDLEdBQUcsRUFBRSxjQUFjO01BQ25CQyxRQUFRLEVBQUVDO0lBQ1gsQ0FBQyxFQUNEO01BQ0NGLEdBQUcsRUFBRSxhQUFhO01BQ2xCQyxRQUFRLEVBQUVFO0lBQ1gsQ0FBQyxFQUNEO01BQ0NILEdBQUcsRUFBRSxhQUFhO01BQ2xCQyxRQUFRLEVBQUVHO0lBQ1gsQ0FBQyxDQUNEO0lBQ0QsTUFBTUMsTUFBa0QsR0FBRyxDQUFDLENBQUM7SUFDN0ROLGVBQWUsQ0FBQ08sT0FBTyxDQUFDLFVBQVVDLEdBQUcsRUFBRTtNQUN0QyxNQUFNQyxXQUFXLEdBQUdELEdBQUcsQ0FBQyxVQUFVLENBQUM7TUFDbkNGLE1BQU0sQ0FBQ0UsR0FBRyxDQUFDUCxHQUFHLENBQUMsR0FBRztRQUNqQlMsVUFBVSxFQUFFRCxXQUFXLENBQUNFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FDbkNoRCxtQkFBbUIsRUFDbkI7VUFDQ2lELFdBQVcsRUFBRSxDQUFDaEIsSUFBWSxFQUFFaUIsZUFBeUIsS0FDcERoQixvQkFBb0IsQ0FBQ0QsSUFBSSxFQUFFeEQsZ0JBQWdCLENBQUMwRCxpQkFBaUIsRUFBRSxFQUFFZSxlQUFlO1FBQ2xGLENBQUMsQ0FDRCxDQUFDO1FBQ0ZDLG9CQUFvQixFQUFFTCxXQUFXLENBQUNFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FDN0NoRCxtQkFBbUIsRUFDbkI7VUFDQ29ELHNCQUFzQixFQUFFLElBQUk7VUFDNUJDLHFCQUFxQixFQUFFLElBQUk7VUFDM0JKLFdBQVcsRUFBRSxDQUFDaEIsSUFBWSxFQUFFaUIsZUFBeUIsS0FDcERoQixvQkFBb0IsQ0FBQ0QsSUFBSSxFQUFFeEQsZ0JBQWdCLENBQUMwRCxpQkFBaUIsRUFBRSxFQUFFZSxlQUFlO1FBQ2xGLENBQUMsQ0FDRDtNQUNGLENBQUM7SUFDRixDQUFDLENBQUM7SUFDRixPQUFPUCxNQUFNO0VBQ2Q7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sU0FBU1csZ0NBQWdDLENBQy9DQyxzQkFBOEMsRUFDOUNDLGVBQXdCLEVBQ3hCQyxvQkFBNkIsRUFDbkI7SUFDVixPQUFPLENBQUNELGVBQWUsSUFBSUQsc0JBQXNCLENBQUM3RSxZQUFZLEtBQUtnRixZQUFZLENBQUNDLFFBQVEsS0FBSyxDQUFDRixvQkFBb0I7RUFDbkg7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLFNBQVNHLHVCQUF1QixDQUN0Q25GLGdCQUFrQyxFQUNsQzhFLHNCQUE4QyxFQUNuQjtJQUMzQixNQUFNTSxnQkFBZ0IsR0FBR0MsbUJBQW1CLENBQUNyRixnQkFBZ0IsRUFBRThFLHNCQUFzQixDQUFDO0lBQ3RGLE9BQU87TUFDTlEsV0FBVyxFQUFFQyxpQkFBaUIsQ0FBQ0MsbUJBQW1CLENBQUNWLHNCQUFzQixFQUFFTSxnQkFBZ0IsQ0FBQyxDQUFDO01BQzdGSyxPQUFPLEVBQUVGLGlCQUFpQixDQUFDSCxnQkFBZ0IsQ0FBQztNQUM1Q00sT0FBTyxFQUFFSCxpQkFBaUIsQ0FBQ0ksbUJBQW1CLENBQUMzRixnQkFBZ0IsRUFBRThFLHNCQUFzQixFQUFFTSxnQkFBZ0IsQ0FBQztJQUMzRyxDQUFDO0VBQ0Y7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLFNBQVNRLHVCQUF1QixDQUN0QzVGLGdCQUFrQyxFQUNsQzhFLHNCQUE4QyxFQUNuQjtJQUMzQixNQUFNZSxnQkFBZ0IsR0FBR0MsbUJBQW1CLENBQUM5RixnQkFBZ0IsRUFBRThFLHNCQUFzQixDQUFDO0lBRXRGLE9BQU87TUFDTlEsV0FBVyxFQUFFQyxpQkFBaUIsQ0FBQ1Esb0JBQW9CLENBQUNGLGdCQUFnQixDQUFDLENBQUM7TUFDdEVKLE9BQU8sRUFBRUYsaUJBQWlCLENBQUNNLGdCQUFnQixDQUFDO01BQzVDSCxPQUFPLEVBQUVILGlCQUFpQixDQUFDUyxtQkFBbUIsQ0FBQ2hHLGdCQUFnQixFQUFFOEUsc0JBQXNCLEVBQUVlLGdCQUFnQixDQUFDO0lBQzNHLENBQUM7RUFDRjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBSkE7RUFLTyxTQUFTSSxjQUFjLENBQzdCakcsZ0JBQWtDLEVBQ2xDOEUsc0JBQThDLEVBQ25CO0lBQzNCLE1BQU1vQixxQkFBcUIsR0FBR2IsbUJBQW1CLENBQUNyRixnQkFBZ0IsRUFBRThFLHNCQUFzQixFQUFFLElBQUksQ0FBQztJQUVqRyxPQUFPO01BQ05RLFdBQVcsRUFBRUMsaUJBQWlCLENBQUNDLG1CQUFtQixDQUFDVixzQkFBc0IsRUFBRW9CLHFCQUFxQixFQUFFLElBQUksQ0FBQyxDQUFDO01BQ3hHVCxPQUFPLEVBQUVGLGlCQUFpQixDQUFDVyxxQkFBcUIsQ0FBQztNQUNqRFIsT0FBTyxFQUFFSCxpQkFBaUIsQ0FBQ1ksd0JBQXdCLENBQUNuRyxnQkFBZ0IsRUFBRThFLHNCQUFzQixFQUFFb0IscUJBQXFCLENBQUM7SUFDckgsQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLFNBQVNFLHNCQUFzQixDQUNyQ3BHLGdCQUFrQyxFQUNsQzhFLHNCQUE4QyxFQUM5Q3VCLDhCQUF1QyxFQUNaO0lBQzNCLE1BQU1qQixnQkFBZ0IsR0FBR0MsbUJBQW1CLENBQUNyRixnQkFBZ0IsRUFBRThFLHNCQUFzQixDQUFDO0lBQ3RGLE1BQU13QixnQkFBZ0IsR0FBR1gsbUJBQW1CLENBQUMzRixnQkFBZ0IsRUFBRThFLHNCQUFzQixFQUFFTSxnQkFBZ0IsQ0FBQztJQUN4RyxNQUFNbUIsZUFBZSxHQUFHQyxrQkFBa0IsQ0FBQ3hHLGdCQUFnQixFQUFFOEUsc0JBQXNCLEVBQUVNLGdCQUFnQixFQUFFaUIsOEJBQThCLENBQUM7SUFDdEksT0FBTztNQUNOWixPQUFPLEVBQUVGLGlCQUFpQixDQUFDZ0IsZUFBZSxDQUFDO01BQzNDYixPQUFPLEVBQUVILGlCQUFpQixDQUFDa0Isa0JBQWtCLENBQUNGLGVBQWUsRUFBRUQsZ0JBQWdCLENBQUM7SUFDakYsQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkE7RUFPTyxTQUFTSSx5QkFBeUIsQ0FDeEMxRyxnQkFBa0MsRUFDbEM4RSxzQkFBOEMsRUFDbkI7SUFDM0IsTUFBTTZCLGtCQUFrQixHQUFHQyxxQkFBcUIsQ0FBQzVHLGdCQUFnQixFQUFFOEUsc0JBQXNCLENBQUM7SUFFMUYsT0FBTztNQUNOUSxXQUFXLEVBQUVDLGlCQUFpQixDQUFDUSxvQkFBb0IsQ0FBQ1ksa0JBQWtCLENBQUMsQ0FBQztNQUN4RWxCLE9BQU8sRUFBRUYsaUJBQWlCLENBQUNvQixrQkFBa0IsQ0FBQztNQUM5Q2pCLE9BQU8sRUFBRUgsaUJBQWlCLENBQUNzQixxQkFBcUIsQ0FBQzdHLGdCQUFnQixFQUFFOEUsc0JBQXNCLEVBQUU2QixrQkFBa0IsQ0FBQztJQUMvRyxDQUFDO0VBQ0Y7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sU0FBU25CLG1CQUFtQixDQUNsQ1Ysc0JBQThDLEVBQzlDTSxnQkFBbUQsRUFFZjtJQUFBLElBRHBDMEIsZ0JBQWdCLHVFQUFHLEtBQUs7SUFFeEI7SUFDQTtJQUNBO0lBQ0E7O0lBRUEsT0FBT0MsR0FBRztJQUNUO0lBQ0FDLEVBQUUsQ0FDREQsR0FBRyxDQUFDRCxnQkFBZ0IsRUFBRWhDLHNCQUFzQixDQUFDN0UsWUFBWSxLQUFLZ0YsWUFBWSxDQUFDZ0MsV0FBVyxDQUFDLEVBQ3ZGRixHQUFHLENBQUMsQ0FBQ0QsZ0JBQWdCLEVBQUVoQyxzQkFBc0IsQ0FBQzdFLFlBQVksS0FBS2dGLFlBQVksQ0FBQ2dDLFdBQVcsQ0FBQyxDQUN4RixFQUNERCxFQUFFLENBQUNFLEdBQUcsQ0FBQ0MsVUFBVSxDQUFDL0IsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFQSxnQkFBZ0IsQ0FBQyxDQUN2RDtFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTU8sU0FBU1csb0JBQW9CLENBQUNxQixnQkFBbUQsRUFBcUM7SUFDNUgsT0FBT0osRUFBRSxDQUFDRSxHQUFHLENBQUNDLFVBQVUsQ0FBQ0MsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFQSxnQkFBZ0IsQ0FBQztFQUMvRDs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEE7RUFRTyxTQUFTL0IsbUJBQW1CLENBQ2xDckYsZ0JBQWtDLEVBQ2xDOEUsc0JBQThDLEVBRVY7SUFBQTtJQUFBLElBRHBDZ0MsZ0JBQWdCLHVFQUFHLEtBQUs7SUFFeEIsTUFBTU8sWUFBWSxHQUFHdkMsc0JBQXNCLENBQUN6RCxZQUFZLENBQUNnRyxZQUFZLENBQUMvQyxVQUFVO0lBQ2hGLE1BQU1nRCxjQUFjLEdBQUdSLGdCQUFnQixHQUNwQ3JHLHVCQUF1QixDQUFDVCxnQkFBZ0IsRUFBRUYsd0JBQXdCLENBQUNZLFlBQVksRUFBRSxLQUFLLENBQUMsR0FDdkZvRSxzQkFBc0IsQ0FBQ3ZFLGdCQUFnQixDQUFDQyxNQUFNO0lBQ2pELE1BQU1XLFNBQVMsR0FBRzJELHNCQUFzQixDQUFDM0QsU0FBUztJQUNsRDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxPQUFPb0csTUFBTSxDQUNaekMsc0JBQXNCLENBQUM3RSxZQUFZLEtBQUtnRixZQUFZLENBQUNDLFFBQVEsRUFDN0Q2QixHQUFHLENBQUNHLEdBQUcsQ0FBQ0ksY0FBYyxDQUFDLEVBQUVOLEVBQUUsQ0FBQ2hILGdCQUFnQixDQUFDd0gsZUFBZSxFQUFFLEtBQUtDLFlBQVksQ0FBQ0MsVUFBVSxFQUFFbkUsRUFBRSxDQUFDb0UsVUFBVSxDQUFDLENBQUMsRUFDM0dKLE1BQU0sQ0FDTFAsRUFBRSxDQUNERCxHQUFHLENBQUNJLFVBQVUsQ0FBQ2hHLFNBQVMsYUFBVEEsU0FBUyx1QkFBVEEsU0FBUyxDQUFFNEIsU0FBUyxDQUFDLEVBQUU2RSxLQUFLLENBQUN6RyxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRTRCLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQyxFQUN6RWdFLEdBQUcsQ0FBQ0ksVUFBVSxDQUFDRSxZQUFZLENBQUMsRUFBRU8sS0FBSyxDQUFDUCxZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQ2xHLFNBQVMsQ0FBQyxFQUNyRTRGLEdBQUcsQ0FBQ0ksVUFBVSxDQUFDRyxjQUFjLENBQUMsRUFBRU0sS0FBSyxDQUFDTixjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFDNURQLEdBQUcsQ0FDRmpDLHNCQUFzQixDQUFDN0UsWUFBWSxLQUFLZ0YsWUFBWSxDQUFDNEMsa0JBQWtCLEVBQ3ZFLDBCQUFBL0Msc0JBQXNCLENBQUM1RSwwQkFBMEIsMERBQWpELHNCQUFtRDRILElBQUksTUFBSyxpQkFBaUIsRUFDN0VQLE1BQU0sQ0FDTCxDQUFBekMsc0JBQXNCLGFBQXRCQSxzQkFBc0IsaURBQXRCQSxzQkFBc0IsQ0FBRTVFLDBCQUEwQiwyREFBbEQsdUJBQW9ENkgsa0NBQWtDLE1BQUssS0FBSyxFQUNoRyxJQUFJLEVBQ0p4RSxFQUFFLENBQUN5RSxZQUFZLENBQ2YsQ0FDRCxDQUNELEVBQ0QsS0FBSyxFQUNMVCxNQUFNLENBQ0x2SCxnQkFBZ0IsQ0FBQ3dILGVBQWUsRUFBRSxLQUFLQyxZQUFZLENBQUNDLFVBQVUsRUFDOURWLEVBQUUsQ0FBQ0UsR0FBRyxDQUFDZSx1QkFBdUIsQ0FBQ1gsY0FBYyxDQUFDLENBQUMsRUFBRUosR0FBRyxDQUFDSSxjQUFjLENBQUMsQ0FBQyxFQUNyRVAsR0FBRyxDQUFDRyxHQUFHLENBQUNJLGNBQWMsQ0FBQyxFQUFFL0QsRUFBRSxDQUFDb0UsVUFBVSxDQUFDLENBQ3ZDLENBQ0QsQ0FDRDtFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkE7RUFPTyxTQUFTN0IsbUJBQW1CLENBQ2xDOUYsZ0JBQWtDLEVBQ2xDOEUsc0JBQThDLEVBQ1Y7SUFDcEMsTUFBTW9ELGNBQWMsR0FBR3BELHNCQUFzQixDQUFDdkUsZ0JBQWdCLENBQUNJLE1BQU07SUFDckUsTUFBTXdILHVCQUF1QixHQUFHckQsc0JBQXNCLENBQUN6RCxZQUFZLENBQUMrRyxXQUFXLENBQUM5RCxVQUFVOztJQUUxRjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBOztJQUVBLE9BQU9pRCxNQUFNLENBQ1p2SCxnQkFBZ0IsQ0FBQ3dILGVBQWUsRUFBRSxLQUFLQyxZQUFZLENBQUNZLGtCQUFrQixFQUN0RSxLQUFLLEVBQ0xkLE1BQU0sQ0FDTFIsR0FBRyxDQUFDSSxVQUFVLENBQUNnQix1QkFBdUIsQ0FBQyxFQUFFUCxLQUFLLENBQUNPLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQy9FLEtBQUssRUFDTFosTUFBTSxDQUNMUixHQUFHLENBQUNJLFVBQVUsQ0FBQ2UsY0FBYyxDQUFDLEVBQUVOLEtBQUssQ0FBQ00sY0FBYyxFQUFFdkUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDdEUsS0FBSyxFQUNMNEQsTUFBTSxDQUNMdkgsZ0JBQWdCLENBQUN3SCxlQUFlLEVBQUUsS0FBS0MsWUFBWSxDQUFDQyxVQUFVLEVBQzlEWCxHQUFHLENBQUNHLEdBQUcsQ0FBQ2dCLGNBQWMsQ0FBQyxFQUFFM0UsRUFBRSxDQUFDb0UsVUFBVSxDQUFDLEVBQ3ZDVCxHQUFHLENBQUNILEdBQUcsQ0FBQ2tCLHVCQUF1QixDQUFDQyxjQUFjLENBQUMsRUFBRUEsY0FBYyxDQUFDLENBQUMsQ0FDakUsQ0FDRCxDQUNELENBQ0Q7RUFDRjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFSQTtFQVNPLFNBQVMxQixrQkFBa0IsQ0FDakN4RyxnQkFBa0MsRUFDbEM4RSxzQkFBOEMsRUFDOUNNLGdCQUFtRCxFQUNuRGlCLDhCQUF1QyxFQUNIO0lBQ3BDO0lBQ0E7SUFDQTtJQUNBLE9BQU9VLEdBQUcsQ0FDVHVCLFFBQVEsQ0FBQ3hELHNCQUFzQixDQUFDNUUsMEJBQTBCLENBQUNxSSxXQUFXLEVBQUUsS0FBSyxDQUFDLEVBQzlFbkQsZ0JBQWdCLEVBQ2hCaUIsOEJBQThCLEVBQzlCLENBQUNvQixZQUFZLENBQUNDLFVBQVUsRUFBRUQsWUFBWSxDQUFDWSxrQkFBa0IsQ0FBQyxDQUFDRyxPQUFPLENBQUN4SSxnQkFBZ0IsQ0FBQ3dILGVBQWUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQzdHMUMsc0JBQXNCLENBQUN6RCxZQUFZLENBQUNnRyxZQUFZLENBQUMvQyxVQUFVLENBQzNEO0VBQ0Y7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLFNBQVNzQyxxQkFBcUIsQ0FDcEM1RyxnQkFBa0MsRUFDbEM4RSxzQkFBOEMsRUFDVjtJQUFBO0lBQ3BDLE1BQU0yRCxjQUFjLEdBQUczRCxzQkFBc0IsQ0FBQ3ZFLGdCQUFnQixDQUFDTSxNQUFNO01BQ3BFNkgsdUJBQXVCLEdBQUc1RCxzQkFBc0IsQ0FBQ3pELFlBQVksQ0FBQ3NILFdBQVcsQ0FBQ3JFLFVBQVU7TUFDcEZzRSwwQkFBbUMsR0FBRywyQkFBQTlELHNCQUFzQixDQUFDNUUsMEJBQTBCLDJEQUFqRCx1QkFBbUQySSxjQUFjLEtBQUksS0FBSztJQUNqSCxNQUFNQyx5QkFBeUIsR0FDOUI5SSxnQkFBZ0IsQ0FBQ3dILGVBQWUsRUFBRSxLQUFLQyxZQUFZLENBQUNzQixVQUFVLEdBQzNEeEYsRUFBRSxDQUFDb0UsVUFBVSxHQUNiM0gsZ0JBQWdCLENBQUN3SCxlQUFlLEVBQUUsS0FBS0MsWUFBWSxDQUFDQyxVQUFVO0lBQ2xFO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsT0FBT1gsR0FBRyxDQUNURyxHQUFHLENBQUNILEdBQUcsQ0FBQ0ksVUFBVSxDQUFDdUIsdUJBQXVCLENBQUMsRUFBRWQsS0FBSyxDQUFDYyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQ3BGRSwwQkFBMEIsRUFDMUJFLHlCQUF5QixFQUN6QjVCLEdBQUcsQ0FBQ3VCLGNBQWMsQ0FBQyxDQUNuQjtFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLFNBQVN0Qyx3QkFBd0IsQ0FDdkNuRyxnQkFBa0MsRUFDbEM4RSxzQkFBOEMsRUFDOUNvQixxQkFBd0QsRUFDcEI7SUFDcEMsTUFBTThDLHNCQUFzQixHQUFHakYsZ0JBQWdCLENBQUMvRCxnQkFBZ0IsQ0FBQ00sc0JBQXNCLEVBQUUsRUFBRTtNQUMxRnFFLHNCQUFzQixFQUFFLElBQUk7TUFDNUJDLHFCQUFxQixFQUFFLElBQUk7TUFDM0JKLFdBQVcsRUFBRSxDQUFDaEIsSUFBWSxFQUFFaUIsZUFBeUIsS0FBSztRQUN6RCxJQUFJakIsSUFBSSxDQUFDZ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUM1QmhGLElBQUksR0FBR0Msb0JBQW9CLENBQUNELElBQUksRUFBRXhELGdCQUFnQixDQUFDMEQsaUJBQWlCLEVBQUUsRUFBRWUsZUFBZSxDQUFDO1VBQ3hGLE9BQU9qQixJQUFJO1FBQ1o7UUFDQSxNQUFNSixvQkFBb0IsR0FBR3BELGdCQUFnQixDQUFDTSxzQkFBc0IsRUFBRSxDQUFDOEMsb0JBQW9CO1FBQzNGLElBQUlBLG9CQUFvQixFQUFFO1VBQ3pCLE1BQU02RixPQUFPLEdBQUc3RixvQkFBb0IsQ0FBQ0Esb0JBQW9CLENBQUNDLE1BQU0sR0FBRyxDQUFDLENBQUM7VUFDckUsTUFBTTZGLE9BQU8sR0FBR0QsT0FBTyxDQUFDRSxLQUFLLEtBQUssb0JBQW9CLElBQUlGLE9BQU8sQ0FBQ0MsT0FBTztVQUN6RSxJQUFJQSxPQUFPLEVBQUU7WUFDWjFGLElBQUksR0FBSSxHQUFFMEYsT0FBUSxJQUFHMUYsSUFBSyxFQUFDO1VBQzVCO1FBQ0Q7UUFDQSxPQUFPQSxJQUFJO01BQ1o7SUFDRCxDQUFDLENBQUM7SUFDRixNQUFNNkQsWUFBWSxHQUNqQjJCLHNCQUFzQixDQUFDRyxLQUFLLEtBQUssY0FBYyxHQUM1Q3BGLGdCQUFnQixDQUFDL0QsZ0JBQWdCLENBQUNNLHNCQUFzQixFQUFFLEVBQUU7TUFDNURrRSxXQUFXLEVBQUdoQixJQUFZLElBQUtDLG9CQUFvQixDQUFDRCxJQUFJLEVBQUV4RCxnQkFBZ0IsQ0FBQzBELGlCQUFpQixFQUFFLEVBQUUsRUFBRTtJQUNsRyxDQUFDLENBQUMsR0FDRnNGLHNCQUFzQjtJQUUxQixPQUFPakMsR0FBRyxDQUNUYixxQkFBcUIsRUFDckJtQixZQUFZLEVBQ1pMLEVBQUUsQ0FDRCxDQUFDbEMsc0JBQXNCLENBQUM1RSwwQkFBMEIsQ0FBQ2tKLCtCQUErQixFQUNsRkMsWUFBWSxDQUFDLENBQUNDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxVQUFVLENBQUMsQ0FBQyxFQUFFQyxlQUFlLENBQUNDLHlCQUF5QixDQUFDLENBQzlHLENBQ0Q7RUFDRjs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEE7RUFRTyxTQUFTN0QsbUJBQW1CLENBQ2xDM0YsZ0JBQWtDLEVBQ2xDOEUsc0JBQThDLEVBQzlDTSxnQkFBbUQsRUFDZjtJQUFBO0lBQ3BDLE1BQU1pQyxZQUFZLEdBQUd2QyxzQkFBc0IsQ0FBQ3pELFlBQVksQ0FBQ2dHLFlBQVksQ0FBQy9DLFVBQVU7SUFDaEYsTUFBTW1GLGNBQWMsNEJBQUd6SixnQkFBZ0IsQ0FBQzBKLG1CQUFtQixDQUFNNUUsc0JBQXNCLENBQUMxRSxjQUFjLENBQUMsQ0FBQ3VKLE1BQU0sMERBQXZGLHNCQUF5RlIsS0FBSztJQUNySCxPQUFPcEMsR0FBRyxDQUNUM0IsZ0JBQWdCLEVBQ2hCNEIsRUFBRSxDQUNEeUMsY0FBYyxLQUFLLFdBQVcsRUFDOUIxQyxHQUFHLENBQUNNLFlBQVksRUFBRUwsRUFBRSxDQUFDaEgsZ0JBQWdCLENBQUN3SCxlQUFlLEVBQUUsS0FBS0MsWUFBWSxDQUFDc0IsVUFBVSxFQUFFeEYsRUFBRSxDQUFDb0UsVUFBVSxDQUFDLENBQUMsQ0FDcEcsQ0FDRDtFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLFNBQVMzQixtQkFBbUIsQ0FDbENoRyxnQkFBa0MsRUFDbEM4RSxzQkFBOEMsRUFDOUNlLGdCQUFtRCxFQUNmO0lBQ3BDLE1BQU0rRCxpQkFBaUIsR0FBR04sV0FBVyxDQUFDLG1CQUFtQixFQUFFLFVBQVUsQ0FBQztJQUN0RSxNQUFNTyxlQUFlLEdBQUdQLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLENBQUM7SUFDbEUsTUFBTVEseUJBQXlCLEdBQUdSLFdBQVcsQ0FBQywyQkFBMkIsRUFBRSxVQUFVLENBQUM7SUFDdEYsTUFBTVMsNEJBQTRCLEdBQUdULFdBQVcsQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLENBQUM7SUFFNUYsT0FBT3ZDLEdBQUcsQ0FDVGxCLGdCQUFnQixFQUNoQjBCLE1BQU0sQ0FDTHZILGdCQUFnQixDQUFDd0gsZUFBZSxFQUFFLEtBQUtDLFlBQVksQ0FBQ3NCLFVBQVUsRUFDOUQvQixFQUFFLENBQ0RELEdBQUcsQ0FBQ3VCLFFBQVEsQ0FBQ3NCLGlCQUFpQixFQUFFdEgsU0FBUyxDQUFDLEVBQUUwSCxXQUFXLENBQUMzRyxNQUFNLENBQUN1RyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ3RGN0MsR0FBRyxDQUFDdUIsUUFBUSxDQUFDd0IseUJBQXlCLEVBQUV4SCxTQUFTLENBQUMsRUFBRTBILFdBQVcsQ0FBQzNHLE1BQU0sQ0FBQ3lHLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDdEcsRUFDRDlDLEVBQUUsQ0FDREQsR0FBRyxDQUFDdUIsUUFBUSxDQUFDc0IsaUJBQWlCLEVBQUV0SCxTQUFTLENBQUMsRUFBRTBILFdBQVcsQ0FBQzNHLE1BQU0sQ0FBQ3VHLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFDdEY3QyxHQUFHLENBQUN1QixRQUFRLENBQUN3Qix5QkFBeUIsRUFBRXhILFNBQVMsQ0FBQyxFQUFFMEgsV0FBVyxDQUFDM0csTUFBTSxDQUFDeUcseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0RztJQUNBL0MsR0FBRyxDQUFDdUIsUUFBUSxDQUFDeUIsNEJBQTRCLEVBQUV6SCxTQUFTLENBQUMsRUFBRTBILFdBQVcsQ0FBQzNHLE1BQU0sQ0FBQzBHLDRCQUE0QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDNUc7SUFDQWhELEdBQUcsQ0FBQ3VCLFFBQVEsQ0FBQ3VCLGVBQWUsRUFBRXZILFNBQVMsQ0FBQyxFQUFFMEgsV0FBVyxDQUFDM0csTUFBTSxDQUFDd0csZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDbEYsQ0FDRCxDQUNEO0VBQ0Y7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLFNBQVNwRCxrQkFBa0IsQ0FDakNGLGVBQWtELEVBQ2xERCxnQkFBbUQsRUFDZjtJQUNwQyxPQUFPUyxHQUFHLENBQUNSLGVBQWUsRUFBRUQsZ0JBQWdCLENBQUM7RUFDOUM7O0VBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sU0FBU08scUJBQXFCLENBQ3BDN0csZ0JBQWtDLEVBQ2xDOEUsc0JBQThDLEVBQzlDNkIsa0JBQXFELEVBQ2pCO0lBQ3BDLE1BQU0rQix1QkFBdUIsR0FBRzVELHNCQUFzQixDQUFDekQsWUFBWSxDQUFDc0gsV0FBVyxDQUFDckUsVUFBVTtJQUMxRixNQUFNMkYsNEJBQWlDLEdBQ3RDLENBQUM5QyxVQUFVLENBQUN1Qix1QkFBdUIsQ0FBQyxJQUNwQzVELHNCQUFzQixDQUFDekQsWUFBWSxDQUFDc0gsV0FBVyxDQUFDakUsb0JBQW9CLENBQUN5RSxLQUFLLEtBQUssY0FBYztJQUM5RixNQUFNZSx3QkFBd0IsR0FBR0MsY0FBYyxDQUFDYixXQUFXLENBQUMsMEJBQTBCLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLE1BQU1jLHlCQUF5QixHQUFHRCxjQUFjLENBQUM5RyxNQUFNLENBQUNpRyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekcsTUFBTTlILGlCQUFpQixHQUFHQyxXQUFXLENBQUNDLDBCQUEwQixDQUFDMUIsZ0JBQWdCLENBQUNNLHNCQUFzQixFQUFFLENBQUM7SUFDM0csTUFBTStKLFlBQVksR0FBR0MsZUFBZSxDQUFDdEssZ0JBQWdCLENBQUM7O0lBRXREO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsTUFBTXVLLGNBQWMsR0FBR2hELE1BQU0sQ0FDNUJQLEVBQUUsQ0FBQ0QsR0FBRyxDQUFDc0QsWUFBWSxFQUFFN0ksaUJBQWlCLENBQUMsRUFBRXlJLDRCQUE0QixDQUFDLEVBQ3RFbEQsR0FBRyxDQUFDbUQsd0JBQXdCLEVBQUVFLHlCQUF5QixDQUFDLEVBQ3hEckQsR0FBRyxDQUFDbUQsd0JBQXdCLENBQUMsQ0FDN0I7SUFFRCxPQUFPbkQsR0FBRyxDQUFDSixrQkFBa0IsRUFBRVksTUFBTSxDQUFDMEMsNEJBQTRCLEVBQUVNLGNBQWMsRUFBRXhELEdBQUcsQ0FBQ3dELGNBQWMsRUFBRTdCLHVCQUF1QixDQUFDLENBQUMsQ0FBQztFQUNuSTs7RUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BO0VBT08sU0FBUzRCLGVBQWUsQ0FBQ3RLLGdCQUFrQyxFQUFFRyxpQkFBeUMsRUFBVztJQUN2SCxNQUFNcUssWUFBWSxHQUFHeEssZ0JBQWdCLENBQUN3SCxlQUFlLEVBQUU7SUFDdkQsSUFDQ2dELFlBQVksS0FBSy9DLFlBQVksQ0FBQ0MsVUFBVSxJQUN4QzhDLFlBQVksS0FBSy9DLFlBQVksQ0FBQ1ksa0JBQWtCLElBQy9DbEksaUJBQWlCLElBQUlILGdCQUFnQixDQUFDaUIsa0JBQWtCLEVBQUUsQ0FBQ0MseUJBQXlCLENBQUNmLGlCQUFpQixDQUFFLEVBQ3hHO01BQ0QsT0FBTyxJQUFJO0lBQ1o7SUFDQTtJQUNBLE9BQU8sS0FBSztFQUNiO0VBQUM7RUFBQTtBQUFBIn0=
|
|
529
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkiLCJnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0IiwiY3JlYXRpb25Nb2RlIiwidGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb24iLCJ2aWV3Q29uZmlndXJhdGlvbiIsImNvbGxlY3Rpb25QYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGgiLCJoaWRkZW5Bbm5vdGF0aW9uIiwiY3JlYXRlIiwiaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4iLCJDcmVhdGVIaWRkZW4iLCJkZWxldGUiLCJEZWxldGVIaWRkZW4iLCJ1cGRhdGUiLCJVcGRhdGVIaWRkZW4iLCJpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQiLCJpc1ZpZXdXaXRoTXVsdGlwbGVWaXN1YWxpemF0aW9ucyIsImdldE1hbmlmZXN0V3JhcHBlciIsImhhc011bHRpcGxlVmlzdWFsaXphdGlvbnMiLCJuZXdBY3Rpb24iLCJnZXROZXdBY3Rpb24iLCJyZXN0cmljdGlvbnMiLCJnZXRSZXN0cmljdGlvbnMiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwiYklzRHJhZnRTdXBwb3J0ZWQiLCJNb2RlbEhlbHBlciIsImlzT2JqZWN0UGF0aERyYWZ0U3VwcG9ydGVkIiwiYklzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsInN0YXJ0aW5nRW50aXR5U2V0IiwiYW5ub3RhdGlvbnMiLCJTZXNzaW9uIiwiU3RpY2t5U2Vzc2lvblN1cHBvcnRlZCIsImN1cnJlbnRFbnRpdHlTZXQiLCJnZXRFbnRpdHlTZXQiLCJpc0VudGl0eVNldCIsIkNvbW1vbiIsIkRyYWZ0Um9vdCIsIk5ld0FjdGlvbiIsInVuZGVmaW5lZCIsIm5ld0FjdGlvbk5hbWUiLCJ0b1N0cmluZyIsImF2YWlsYWJsZVByb3BlcnR5IiwiZ2V0RW50aXR5VHlwZSIsImFjdGlvbnMiLCJDb3JlIiwiT3BlcmF0aW9uQXZhaWxhYmxlIiwidmFsdWVPZiIsIm5hbWUiLCJhdmFpbGFibGUiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJzQW5ub3RhdGlvblRlcm0iLCJiV2l0aE5hdmlnYXRpb25QYXRoIiwidmlzaXRlZE5hdmlnYXRpb25QYXRocyIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibGVuZ3RoIiwiYWN0aW9uQW5ub3RhdGlvblZhbHVlIiwiVUkiLCJwYXRoIiwic2luZ2xldG9uUGF0aFZpc2l0b3IiLCJnZXRDb252ZXJ0ZWRUeXBlcyIsImNvbnN0YW50IiwicmVzdHJpY3Rpb25zRGVmIiwia2V5IiwiZnVuY3Rpb24iLCJpc1BhdGhJbnNlcnRhYmxlIiwiaXNQYXRoVXBkYXRhYmxlIiwiaXNQYXRoRGVsZXRhYmxlIiwicmVzdWx0IiwiZm9yRWFjaCIsImRlZiIsImRlZkZ1bmN0aW9uIiwiZXhwcmVzc2lvbiIsImFwcGx5IiwicGF0aFZpc2l0b3IiLCJuYXZpZ2F0aW9uUGF0aHMiLCJuYXZpZ2F0aW9uRXhwcmVzc2lvbiIsImlnbm9yZVRhcmdldENvbGxlY3Rpb24iLCJhdXRob3JpemVVbnJlc29sdmFibGUiLCJnZXRJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGluZyIsInN0YW5kYXJkQWN0aW9uc0NvbnRleHQiLCJpc0RyYWZ0T3JTdGlja3kiLCJDcmVhdGlvbk1vZGUiLCJFeHRlcm5hbCIsImdldFN0YW5kYXJkQWN0aW9uQ3JlYXRlIiwiY3JlYXRlVmlzaWJpbGl0eSIsImdldENyZWF0ZVZpc2liaWxpdHkiLCJpc1RlbXBsYXRlZCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZ2V0Q3JlYXRlVGVtcGxhdGluZyIsInZpc2libGUiLCJlbmFibGVkIiwiZ2V0Q3JlYXRlRW5hYmxlbWVudCIsImdldFN0YW5kYXJkQWN0aW9uRGVsZXRlIiwiZGVsZXRlVmlzaWJpbGl0eSIsImdldERlbGV0ZVZpc2liaWxpdHkiLCJnZXREZWZhdWx0VGVtcGxhdGluZyIsImdldERlbGV0ZUVuYWJsZW1lbnQiLCJnZXRDcmVhdGlvblJvdyIsImNyZWF0aW9uUm93VmlzaWJpbGl0eSIsImdldENyZWF0aW9uUm93RW5hYmxlbWVudCIsImdldFN0YW5kYXJkQWN0aW9uUGFzdGUiLCJpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWQiLCJjcmVhdGVFbmFibGVtZW50IiwicGFzdGVWaXNpYmlsaXR5IiwiZ2V0UGFzdGVWaXNpYmlsaXR5IiwiZ2V0UGFzdGVFbmFibGVtZW50IiwiZ2V0U3RhbmRhcmRBY3Rpb25NYXNzRWRpdCIsIm1hc3NFZGl0VmlzaWJpbGl0eSIsImdldE1hc3NFZGl0VmlzaWJpbGl0eSIsImdldE1hc3NFZGl0RW5hYmxlbWVudCIsImlzRm9yQ3JlYXRpb25Sb3ciLCJhbmQiLCJvciIsIkNyZWF0aW9uUm93Iiwibm90IiwiaXNDb25zdGFudCIsImFjdGlvblZpc2liaWxpdHkiLCJpc0luc2VydGFibGUiLCJpc0NyZWF0ZUhpZGRlbiIsImlmRWxzZSIsImdldFRlbXBsYXRlVHlwZSIsIlRlbXBsYXRlVHlwZSIsIkxpc3RSZXBvcnQiLCJJc0VkaXRhYmxlIiwiZXF1YWwiLCJJbmxpbmVDcmVhdGlvblJvd3MiLCJ0eXBlIiwiaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSIsIklzQ3JlYXRlTW9kZSIsImlzUGF0aEluTW9kZWxFeHByZXNzaW9uIiwiaXNEZWxldGVIaWRkZW4iLCJwYXRoRGVsZXRhYmxlRXhwcmVzc2lvbiIsImlzRGVsZXRhYmxlIiwiQW5hbHl0aWNhbExpc3RQYWdlIiwibm90RXF1YWwiLCJlbmFibGVQYXN0ZSIsImluZGV4T2YiLCJpc1VwZGF0ZUhpZGRlbiIsInBhdGhVcGRhdGFibGVFeHByZXNzaW9uIiwiaXNVcGRhdGFibGUiLCJiTWFzc0VkaXRFbmFibGVkSW5NYW5pZmVzdCIsImVuYWJsZU1hc3NFZGl0IiwidGVtcGxhdGVCaW5kaW5nRXhwcmVzc2lvbiIsIk9iamVjdFBhZ2UiLCJyZXN0cmljdGlvbnNJbnNlcnRhYmxlIiwibGFzdE5hdiIsInBhcnRuZXIiLCJpc05hdmlnYXRpb25Qcm9wZXJ0eSIsIl90eXBlIiwiZGlzYWJsZUFkZFJvd0J1dHRvbkZvckVtcHR5RGF0YSIsImZvcm1hdFJlc3VsdCIsInBhdGhJbk1vZGVsIiwidGFibGVGb3JtYXR0ZXJzIiwidmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcyIsImNvbmRpdGlvbiIsIkNvbGxlY3Rpb25UeXBlIiwicmVzb2x2ZUFic29sdXRlUGF0aCIsInRhcmdldCIsImRlbGV0YWJsZUNvbnRleHRzIiwidW5TYXZlZENvbnRleHRzIiwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSIsImRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUiLCJncmVhdGVyVGhhbiIsImlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHkiLCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHMiLCJncmVhdGVyT3JFcXVhbCIsIm51bWJlck9mVXBkYXRhYmxlQ29udGV4dHMiLCJiRGlzcGxheU1vZGUiLCJpc0luRGlzcGxheU1vZGUiLCJydW50aW1lQmluZGluZyIsInRlbXBsYXRlVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU3RhbmRhcmRBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0LCBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFbnRpdHlTZXRBbm5vdGF0aW9uc19VSSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlfRWRtXCI7XG5pbXBvcnQgdGFibGVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1RhYmxlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHtcblx0YW5kLFxuXHRjb21waWxlRXhwcmVzc2lvbixcblx0Y29uc3RhbnQsXG5cdGVxdWFsLFxuXHRmb3JtYXRSZXN1bHQsXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0Z3JlYXRlck9yRXF1YWwsXG5cdGdyZWF0ZXJUaGFuLFxuXHRpZkVsc2UsXG5cdGlzQ29uc3RhbnQsXG5cdGlzUGF0aEluTW9kZWxFeHByZXNzaW9uLFxuXHRsZW5ndGgsXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgeyBpc0VudGl0eVNldCwgaXNOYXZpZ2F0aW9uUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBnZXRUYXJnZXRPYmplY3RQYXRoLCBpc1BhdGhEZWxldGFibGUsIGlzUGF0aEluc2VydGFibGUsIGlzUGF0aFVwZGF0YWJsZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB7IHNpbmdsZXRvblBhdGhWaXNpdG9yLCBVSSB9IGZyb20gXCIuLi8uLi8uLi9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgVmlld1BhdGhDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IENyZWF0aW9uTW9kZSwgVGVtcGxhdGVUeXBlIH0gZnJvbSBcIi4uLy4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB0eXBlIHsgVGFibGVDb250cm9sQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9UYWJsZVwiO1xuXG5lbnVtIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eSB7XG5cdENyZWF0ZUhpZGRlbiA9IFwiQ3JlYXRlSGlkZGVuXCIsXG5cdERlbGV0ZUhpZGRlbiA9IFwiRGVsZXRlSGlkZGVuXCIsXG5cdFVwZGF0ZUhpZGRlbiA9IFwiVXBkYXRlSGlkZGVuXCJcbn1cblxuZXhwb3J0IHR5cGUgU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlID0ge1xuXHRpc1RlbXBsYXRlZD86IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0ZW5hYmxlZDogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG59O1xuXG50eXBlIEV4cHJlc3Npb25SZXN0cmljdGlvbnNUeXBlID0ge1xuXHRleHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdG5hdmlnYXRpb25FeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xudHlwZSBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlID0gUmVjb3JkPHN0cmluZywgRXhwcmVzc2lvblJlc3RyaWN0aW9uc1R5cGU+O1xuXG5leHBvcnQgdHlwZSBTdGFuZGFyZEFjdGlvbnNDb250ZXh0ID0ge1xuXHRjb2xsZWN0aW9uUGF0aDogc3RyaW5nO1xuXHRoaWRkZW5Bbm5vdGF0aW9uOiB7XG5cdFx0Y3JlYXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0ZGVsZXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdFx0dXBkYXRlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG5cdH07XG5cdGNyZWF0aW9uTW9kZTogQ3JlYXRpb25Nb2RlO1xuXHRpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cdGlzVmlld1dpdGhNdWx0aXBsZVZpc3VhbGl6YXRpb25zOiBib29sZWFuO1xuXHRuZXdBY3Rpb24/OiB7XG5cdFx0bmFtZTogc3RyaW5nO1xuXHRcdGF2YWlsYWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xuXHR9O1xuXHR0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjogVGFibGVDb250cm9sQ29uZmlndXJhdGlvbjtcblx0cmVzdHJpY3Rpb25zOiBTdGFuZGFyZEFjdGlvbnNSZXN0cmljdGlvbnNUeXBlO1xufTtcblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGNvbnRleHQgZm9yIHRoZSBzdGFuZGFyZCBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gY3JlYXRpb25Nb2RlXG4gKiBAcGFyYW0gdGFibGVNYW5pZmVzdENvbmZpZ3VyYXRpb25cbiAqIEBwYXJhbSB2aWV3Q29uZmlndXJhdGlvblxuICogQHJldHVybnMgIFRoZSBjb250ZXh0IGZvciB0YWJsZSBhY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVN0YW5kYXJkQWN0aW9uc0NvbnRleHQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdGNyZWF0aW9uTW9kZTogQ3JlYXRpb25Nb2RlLFxuXHR0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbjogVGFibGVDb250cm9sQ29uZmlndXJhdGlvbixcblx0dmlld0NvbmZpZ3VyYXRpb24/OiBWaWV3UGF0aENvbmZpZ3VyYXRpb25cbik6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHQge1xuXHRyZXR1cm4ge1xuXHRcdGNvbGxlY3Rpb25QYXRoOiBnZXRUYXJnZXRPYmplY3RQYXRoKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpKSxcblx0XHRoaWRkZW5Bbm5vdGF0aW9uOiB7XG5cdFx0XHRjcmVhdGU6IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5DcmVhdGVIaWRkZW4pLFxuXHRcdFx0ZGVsZXRlOiBpc0FjdGlvbkFubm90YXRlZEhpZGRlbihjb252ZXJ0ZXJDb250ZXh0LCBBbm5vdGF0aW9uSGlkZGVuUHJvcGVydHkuRGVsZXRlSGlkZGVuKSxcblx0XHRcdHVwZGF0ZTogaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oY29udmVydGVyQ29udGV4dCwgQW5ub3RhdGlvbkhpZGRlblByb3BlcnR5LlVwZGF0ZUhpZGRlbilcblx0XHR9LFxuXHRcdGNyZWF0aW9uTW9kZTogY3JlYXRpb25Nb2RlLFxuXHRcdGlzRHJhZnRPclN0aWNreVN1cHBvcnRlZDogaXNEcmFmdE9yU3RpY2t5U3VwcG9ydGVkKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdGlzVmlld1dpdGhNdWx0aXBsZVZpc3VhbGl6YXRpb25zOiB2aWV3Q29uZmlndXJhdGlvblxuXHRcdFx0PyBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpLmhhc011bHRpcGxlVmlzdWFsaXphdGlvbnModmlld0NvbmZpZ3VyYXRpb24pXG5cdFx0XHQ6IGZhbHNlLFxuXHRcdG5ld0FjdGlvbjogZ2V0TmV3QWN0aW9uKGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdHRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uOiB0YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbixcblx0XHRyZXN0cmljdGlvbnM6IGdldFJlc3RyaWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0KVxuXHR9O1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBzdGlja3kgb3IgZHJhZnQgaXMgc3VwcG9ydGVkLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQgaXMgc3VwcG9ydGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWZ0T3JTdGlja3lTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IGJvb2xlYW4ge1xuXHRjb25zdCBkYXRhTW9kZWxPYmplY3RQYXRoID0gY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCk7XG5cdGNvbnN0IGJJc0RyYWZ0U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNPYmplY3RQYXRoRHJhZnRTdXBwb3J0ZWQoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQgPSAoZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCBhcyBFbnRpdHlTZXQpPy5hbm5vdGF0aW9ucz8uU2Vzc2lvbj8uU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFxuXHRcdD8gdHJ1ZVxuXHRcdDogZmFsc2U7XG5cblx0cmV0dXJuIGJJc0RyYWZ0U3VwcG9ydGVkIHx8IGJJc1N0aWNreVNlc3Npb25TdXBwb3J0ZWQ7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY29uZmlndXJlZCBuZXdBY3Rpb24gaW50byBhbm5vdGF0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgbmV3IGFjdGlvbiBpbmZvXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdBY3Rpb24oY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCkge1xuXHRjb25zdCBjdXJyZW50RW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0Y29uc3QgbmV3QWN0aW9uID0gaXNFbnRpdHlTZXQoY3VycmVudEVudGl0eVNldClcblx0XHQ/IGN1cnJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnMuQ29tbW9uPy5EcmFmdFJvb3Q/Lk5ld0FjdGlvbiA/P1xuXHRcdCAgY3VycmVudEVudGl0eVNldC5hbm5vdGF0aW9ucy5TZXNzaW9uPy5TdGlja3lTZXNzaW9uU3VwcG9ydGVkPy5OZXdBY3Rpb25cblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3QgbmV3QWN0aW9uTmFtZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gPSBuZXdBY3Rpb24/LnRvU3RyaW5nKCk7XG5cdGlmIChuZXdBY3Rpb25OYW1lKSB7XG5cdFx0bGV0IGF2YWlsYWJsZVByb3BlcnR5ID0gY29udmVydGVyQ29udGV4dD8uZ2V0RW50aXR5VHlwZSgpLmFjdGlvbnNbbmV3QWN0aW9uTmFtZV0/LmFubm90YXRpb25zPy5Db3JlPy5PcGVyYXRpb25BdmFpbGFibGU/LnZhbHVlT2YoKTtcblx0XHRhdmFpbGFibGVQcm9wZXJ0eSA9IGF2YWlsYWJsZVByb3BlcnR5ICE9PSB1bmRlZmluZWQgPyBhdmFpbGFibGVQcm9wZXJ0eSA6IHRydWU7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG5hbWU6IG5ld0FjdGlvbk5hbWUsXG5cdFx0XHRhdmFpbGFibGU6IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbjxib29sZWFuPihhdmFpbGFibGVQcm9wZXJ0eSBhcyB1bmtub3duIGFzIFByb3BlcnR5QW5ub3RhdGlvblZhbHVlPGJvb2xlYW4+KVxuXHRcdH07XG5cdH1cblx0cmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBhY3Rpb24gdmlzaWJpbGl0eSBjb25maWd1cmVkIGludG8gYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHNBbm5vdGF0aW9uVGVybVxuICogQHBhcmFtIGJXaXRoTmF2aWdhdGlvblBhdGhcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSBhY3Rpb24gdmlzaWJpbGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBY3Rpb25Bbm5vdGF0ZWRIaWRkZW4oXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHNBbm5vdGF0aW9uVGVybToga2V5b2YgRW50aXR5U2V0QW5ub3RhdGlvbnNfVUksXG5cdGJXaXRoTmF2aWdhdGlvblBhdGggPSB0cnVlXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBjdXJyZW50RW50aXR5U2V0ID0gY29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlTZXQoKTtcblx0Y29uc3QgZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpO1xuXHQvLyBDb25zaWRlciBvbmx5IHRoZSBsYXN0IGxldmVsIG9mIG5hdmlnYXRpb24uIFRoZSBvdGhlcnMgYXJlIGFscmVhZHkgY29uc2lkZXJlZCBpbiB0aGUgZWxlbWVudCBiaW5kaW5nIG9mIHRoZSBwYWdlLlxuXHRjb25zdCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzID1cblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCA+IDAgJiYgYldpdGhOYXZpZ2F0aW9uUGF0aFxuXHRcdFx0PyBbZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllc1tkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCAtIDFdLm5hbWVdXG5cdFx0XHQ6IFtdO1xuXHRjb25zdCBhY3Rpb25Bbm5vdGF0aW9uVmFsdWUgPVxuXHRcdCgoY3VycmVudEVudGl0eVNldD8uYW5ub3RhdGlvbnMuVUkgYXMgRW50aXR5U2V0QW5ub3RhdGlvbnNfVUkpPy5bc0Fubm90YXRpb25UZXJtXSBhcyBQcm9wZXJ0eUFubm90YXRpb25WYWx1ZTxib29sZWFuPikgfHwgZmFsc2U7XG5cblx0cmV0dXJuIGN1cnJlbnRFbnRpdHlTZXRcblx0XHQ/IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihhY3Rpb25Bbm5vdGF0aW9uVmFsdWUsIHZpc2l0ZWROYXZpZ2F0aW9uUGF0aHMsIHVuZGVmaW5lZCwgKHBhdGg6IHN0cmluZykgPT5cblx0XHRcdFx0c2luZ2xldG9uUGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVyQ29udGV4dC5nZXRDb252ZXJ0ZWRUeXBlcygpLCB2aXNpdGVkTmF2aWdhdGlvblBhdGhzKVxuXHRcdCAgKVxuXHRcdDogY29uc3RhbnQoZmFsc2UpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGFubm90YXRlZCByZXN0cmljdGlvbnMgZm9yIHRoZSBhY3Rpb25zLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgcmVzdHJpY3Rpb24gaW5mb3JtYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc3RyaWN0aW9ucyhjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0KTogU3RhbmRhcmRBY3Rpb25zUmVzdHJpY3Rpb25zVHlwZSB7XG5cdGNvbnN0IGRhdGFNb2RlbE9iamVjdFBhdGggPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKTtcblx0Y29uc3QgcmVzdHJpY3Rpb25zRGVmID0gW1xuXHRcdHtcblx0XHRcdGtleTogXCJpc0luc2VydGFibGVcIixcblx0XHRcdGZ1bmN0aW9uOiBpc1BhdGhJbnNlcnRhYmxlXG5cdFx0fSxcblx0XHR7XG5cdFx0XHRrZXk6IFwiaXNVcGRhdGFibGVcIixcblx0XHRcdGZ1bmN0aW9uOiBpc1BhdGhVcGRhdGFibGVcblx0XHR9LFxuXHRcdHtcblx0XHRcdGtleTogXCJpc0RlbGV0YWJsZVwiLFxuXHRcdFx0ZnVuY3Rpb246IGlzUGF0aERlbGV0YWJsZVxuXHRcdH1cblx0XTtcblx0Y29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBFeHByZXNzaW9uUmVzdHJpY3Rpb25zVHlwZT4gPSB7fTtcblx0cmVzdHJpY3Rpb25zRGVmLmZvckVhY2goZnVuY3Rpb24gKGRlZikge1xuXHRcdGNvbnN0IGRlZkZ1bmN0aW9uID0gZGVmW1wiZnVuY3Rpb25cIl07XG5cdFx0cmVzdWx0W2RlZi5rZXldID0ge1xuXHRcdFx0ZXhwcmVzc2lvbjogZGVmRnVuY3Rpb24uYXBwbHkobnVsbCwgW1xuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocylcblx0XHRcdFx0fVxuXHRcdFx0XSksXG5cdFx0XHRuYXZpZ2F0aW9uRXhwcmVzc2lvbjogZGVmRnVuY3Rpb24uYXBwbHkobnVsbCwgW1xuXHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbjogdHJ1ZSxcblx0XHRcdFx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWUsXG5cdFx0XHRcdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRcdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocylcblx0XHRcdFx0fVxuXHRcdFx0XSlcblx0XHR9O1xuXHR9KTtcblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGVtcGxhdGluZyBmb3IgaW5zZXJ0L3VwZGF0ZSBhY3Rpb25zIGlzIG1hbmRhdG9yeS5cbiAqXG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGlzRHJhZnRPclN0aWNreVxuICogQHJldHVybnMgVHJ1ZSBpZiB3ZSBuZWVkIHRvIHRlbXBsYXRlIGluc2VydCBvciB1cGRhdGUgYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGluZyhzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBpc0RyYWZ0T3JTdGlja3k6IGJvb2xlYW4pOiBib29sZWFuIHtcblx0cmV0dXJuIGlzRHJhZnRPclN0aWNreSB8fCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkV4dGVybmFsO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgc3RhbmRhcmQgYWN0aW9uIGluZm9cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uQ3JlYXRlKFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGVWaXNpYmlsaXR5ID0gZ2V0Q3JlYXRlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0Q3JlYXRlVGVtcGxhdGluZyhzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5KSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oY3JlYXRlVmlzaWJpbGl0eSksXG5cdFx0ZW5hYmxlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0Q3JlYXRlRW5hYmxlbWVudChjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgJ0RlbGV0ZScgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFuZGFyZEFjdGlvbkRlbGV0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuKTogU3RhbmRhcmRBY3Rpb25Db25maWdUeXBlIHtcblx0Y29uc3QgZGVsZXRlVmlzaWJpbGl0eSA9IGdldERlbGV0ZVZpc2liaWxpdHkoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCk7XG5cblx0cmV0dXJuIHtcblx0XHRpc1RlbXBsYXRlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0RGVmYXVsdFRlbXBsYXRpbmcoZGVsZXRlVmlzaWJpbGl0eSkpLFxuXHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKGRlbGV0ZVZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldERlbGV0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgZGVsZXRlVmlzaWJpbGl0eSkpXG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcmV0dXJucyBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGlvblJvd1Zpc2liaWxpdHkgPSBnZXRDcmVhdGVWaXNpYmlsaXR5KGNvbnZlcnRlckNvbnRleHQsIHN0YW5kYXJkQWN0aW9uc0NvbnRleHQsIHRydWUpO1xuXG5cdHJldHVybiB7XG5cdFx0aXNUZW1wbGF0ZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldENyZWF0ZVRlbXBsYXRpbmcoc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5LCB0cnVlKSksXG5cdFx0dmlzaWJsZTogY29tcGlsZUV4cHJlc3Npb24oY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSxcblx0XHRlbmFibGVkOiBjb21waWxlRXhwcmVzc2lvbihnZXRDcmVhdGlvblJvd0VuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRpb25Sb3dWaXNpYmlsaXR5KSlcblx0fTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb25zIGZvciB0aGUgcHJvcGVydGllcyBvZiB0aGUgJ1Bhc3RlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gaXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhbmRhcmRBY3Rpb25QYXN0ZShcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkOiBib29sZWFuXG4pOiBTdGFuZGFyZEFjdGlvbkNvbmZpZ1R5cGUge1xuXHRjb25zdCBjcmVhdGVWaXNpYmlsaXR5ID0gZ2V0Q3JlYXRlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblx0Y29uc3QgY3JlYXRlRW5hYmxlbWVudCA9IGdldENyZWF0ZUVuYWJsZW1lbnQoY29udmVydGVyQ29udGV4dCwgc3RhbmRhcmRBY3Rpb25zQ29udGV4dCwgY3JlYXRlVmlzaWJpbGl0eSk7XG5cdGNvbnN0IHBhc3RlVmlzaWJpbGl0eSA9IGdldFBhc3RlVmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBjcmVhdGVWaXNpYmlsaXR5LCBpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWQpO1xuXHRyZXR1cm4ge1xuXHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKHBhc3RlVmlzaWJpbGl0eSksXG5cdFx0ZW5hYmxlZDogY29tcGlsZUV4cHJlc3Npb24oZ2V0UGFzdGVFbmFibGVtZW50KHBhc3RlVmlzaWJpbGl0eSwgY3JlYXRlRW5hYmxlbWVudCkpXG5cdH07XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9ucyBmb3IgdGhlIHByb3BlcnRpZXMgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbnMgZm9yIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSAnTWFzc0VkaXQnIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YW5kYXJkQWN0aW9uTWFzc0VkaXQoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IFN0YW5kYXJkQWN0aW9uQ29uZmlnVHlwZSB7XG5cdGNvbnN0IG1hc3NFZGl0VmlzaWJpbGl0eSA9IGdldE1hc3NFZGl0VmlzaWJpbGl0eShjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0KTtcblxuXHRyZXR1cm4ge1xuXHRcdGlzVGVtcGxhdGVkOiBjb21waWxlRXhwcmVzc2lvbihnZXREZWZhdWx0VGVtcGxhdGluZyhtYXNzRWRpdFZpc2liaWxpdHkpKSxcblx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihtYXNzRWRpdFZpc2liaWxpdHkpLFxuXHRcdGVuYWJsZWQ6IGNvbXBpbGVFeHByZXNzaW9uKGdldE1hc3NFZGl0RW5hYmxlbWVudChjb252ZXJ0ZXJDb250ZXh0LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LCBtYXNzRWRpdFZpc2liaWxpdHkpKVxuXHR9O1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIHRlbXBsYXRpbmcgb2YgdGhlICdDcmVhdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGNyZWF0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSBpc0ZvckNyZWF0aW9uUm93XG4gKiBAcmV0dXJucyBUaGUgY3JlYXRlIGJpbmRpbmcgZXhwcmVzc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlVGVtcGxhdGluZyhcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRlVmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+LFxuXHRpc0ZvckNyZWF0aW9uUm93ID0gZmFsc2Vcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdC8vVGVtcGxhdGluZyBvZiBDcmVhdGUgQnV0dG9uIGlzIG5vdCBkb25lOlxuXHQvLyBcdCAtIElmIEJ1dHRvbiBpcyBuZXZlciB2aXNpYmxlKGNvdmVyZWQgdGhlIEV4dGVybmFsIGNyZWF0ZSBidXR0b24sIG5ldyBBY3Rpb24pXG5cdC8vXHQgLSBvciBDcmVhdGlvbk1vZGUgaXMgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0ZSBCdXR0b25cblx0Ly9cdCAtIG9yIENyZWF0aW9uTW9kZSBpcyBub3Qgb24gQ3JlYXRpb25Sb3cgZm9yIENyZWF0aW9uUm93IEJ1dHRvblxuXG5cdHJldHVybiBhbmQoXG5cdFx0Ly9YTk9SIGdhdGVcblx0XHRvcihcblx0XHRcdGFuZChpc0ZvckNyZWF0aW9uUm93LCBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LmNyZWF0aW9uTW9kZSA9PT0gQ3JlYXRpb25Nb2RlLkNyZWF0aW9uUm93KSxcblx0XHRcdGFuZCghaXNGb3JDcmVhdGlvblJvdywgc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgIT09IENyZWF0aW9uTW9kZS5DcmVhdGlvblJvdylcblx0XHQpLFxuXHRcdG9yKG5vdChpc0NvbnN0YW50KGNyZWF0ZVZpc2liaWxpdHkpKSwgY3JlYXRlVmlzaWJpbGl0eSlcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKlxuICogQHBhcmFtIGFjdGlvblZpc2liaWxpdHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSB0ZW1wbGF0aW5nIG9mIHRoZSBub24tQ3JlYXRlIGFjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0VGVtcGxhdGluZyhhY3Rpb25WaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gb3Iobm90KGlzQ29uc3RhbnQoYWN0aW9uVmlzaWJpbGl0eSkpLCBhY3Rpb25WaXNpYmlsaXR5KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdDcmVhdGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSBpc0ZvckNyZWF0aW9uUm93XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ3Zpc2libGUnIHByb3BlcnR5IG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDcmVhdGVWaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRpc0ZvckNyZWF0aW9uUm93ID0gZmFsc2Vcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzSW5zZXJ0YWJsZSA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzSW5zZXJ0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBpc0NyZWF0ZUhpZGRlbiA9IGlzRm9yQ3JlYXRpb25Sb3dcblx0XHQ/IGlzQWN0aW9uQW5ub3RhdGVkSGlkZGVuKGNvbnZlcnRlckNvbnRleHQsIEFubm90YXRpb25IaWRkZW5Qcm9wZXJ0eS5DcmVhdGVIaWRkZW4sIGZhbHNlKVxuXHRcdDogc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLmNyZWF0ZTtcblx0Y29uc3QgbmV3QWN0aW9uID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5uZXdBY3Rpb247XG5cdC8vQ3JlYXRlIEJ1dHRvbiBpcyB2aXNpYmxlOlxuXHQvLyBcdCAtIElmIHRoZSBjcmVhdGlvbiBtb2RlIGlzIGV4dGVybmFsXG5cdC8vICAgICAgLSBJZiB3ZSdyZSBvbiB0aGUgbGlzdCByZXBvcnQgYW5kIGNyZWF0ZSBpcyBub3QgaGlkZGVuXG5cdC8vXHRcdC0gT3RoZXJ3aXNlIHRoaXMgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgdGhlIFVJLklzRWRpdGFibGVcblx0Ly9cdCAtIE90aGVyd2lzZVxuXHQvL1x0XHQtIElmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgaXMgdmFsaWQgdGhlbiBjcmVhdGUgYnV0dG9uIGlzbid0IHZpc2libGVcblx0Ly9cdFx0XHQtIG5vIG5ld0FjdGlvbiBhdmFpbGFibGVcblx0Ly9cdFx0XHQtIEl0J3Mgbm90IGluc2VydGFibGUgYW5kIHRoZXJlIGlzIG5vdCBhIG5ldyBhY3Rpb25cblx0Ly9cdFx0XHQtIGNyZWF0ZSBpcyBoaWRkZW5cblx0Ly9cdFx0XHQtIFRoZXJlIGFyZSBtdWx0aXBsZSB2aXN1YWxpemF0aW9uc1xuXHQvL1x0XHRcdC0gSXQncyBhbiBBbmFseXRpY2FsIExpc3QgUGFnZVxuXHQvL1x0XHRcdC0gVXNlcyBJbmxpbmVDcmVhdGlvblJvd3MgbW9kZSBhbmQgYSBSZXNwb25zaXZlIHRhYmxlIHR5cGUsIHdpdGggdGhlIHBhcmFtZXRlciBpbmxpbmVDcmVhdGlvblJvd3NIaWRkZW5JbkVkaXRNb2RlIHRvIHRydWUgd2hpbGUgbm90IGluIGNyZWF0ZSBtb2RlXG5cdC8vICAgLSBPdGhlcndpc2Vcblx0Ly8gXHQgXHQtIElmIHdlJ3JlIG9uIHRoZSBsaXN0IHJlcG9ydCAtPlxuXHQvLyBcdCBcdFx0LSBJZiBVSS5DcmVhdGVIaWRkZW4gcG9pbnRzIHRvIGEgcHJvcGVydHkgcGF0aCAtPiBwcm92aWRlIGEgbmVnYXRlZCBiaW5kaW5nIHRvIHRoaXMgcGF0aFxuXHQvLyBcdCBcdFx0LSBPdGhlcndpc2UsIGNyZWF0ZSBpcyB2aXNpYmxlXG5cdC8vIFx0IFx0LSBPdGhlcndpc2Vcblx0Ly8gXHQgIFx0IC0gVGhpcyBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiB0aGUgVUkuSXNFZGl0YWJsZVxuXHRyZXR1cm4gaWZFbHNlKFxuXHRcdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuY3JlYXRpb25Nb2RlID09PSBDcmVhdGlvbk1vZGUuRXh0ZXJuYWwsXG5cdFx0YW5kKG5vdChpc0NyZWF0ZUhpZGRlbiksIG9yKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LCBVSS5Jc0VkaXRhYmxlKSksXG5cdFx0aWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KG5ld0FjdGlvbj8uYXZhaWxhYmxlKSwgZXF1YWwobmV3QWN0aW9uPy5hdmFpbGFibGUsIGZhbHNlKSksXG5cdFx0XHRcdGFuZChpc0NvbnN0YW50KGlzSW5zZXJ0YWJsZSksIGVxdWFsKGlzSW5zZXJ0YWJsZSwgZmFsc2UpLCAhbmV3QWN0aW9uKSxcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNDcmVhdGVIaWRkZW4pLCBlcXVhbChpc0NyZWF0ZUhpZGRlbiwgdHJ1ZSkpLFxuXHRcdFx0XHRhbmQoXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3MsXG5cdFx0XHRcdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8udHlwZSA9PT0gXCJSZXNwb25zaXZlVGFibGVcIixcblx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0Py50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbj8uaW5saW5lQ3JlYXRpb25Sb3dzSGlkZGVuSW5FZGl0TW9kZSA9PT0gZmFsc2UsXG5cdFx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdFx0VUkuSXNDcmVhdGVNb2RlXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0ZmFsc2UsXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0LFxuXHRcdFx0XHRvcihub3QoaXNQYXRoSW5Nb2RlbEV4cHJlc3Npb24oaXNDcmVhdGVIaWRkZW4pKSwgbm90KGlzQ3JlYXRlSGlkZGVuKSksXG5cdFx0XHRcdGFuZChub3QoaXNDcmVhdGVIaWRkZW4pLCBVSS5Jc0VkaXRhYmxlKVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdEZWxldGUnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdEZWxldGUnIGFjdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldERlbGV0ZVZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzRGVsZXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLmRlbGV0ZTtcblx0Y29uc3QgcGF0aERlbGV0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc0RlbGV0YWJsZS5leHByZXNzaW9uO1xuXG5cdC8vRGVsZXRlIEJ1dHRvbiBpcyB2aXNpYmxlOlxuXHQvLyBcdCBQcmVyZXF1aXNpdGVzOlxuXHQvL1x0IC0gSWYgd2UncmUgbm90IG9uIEFMUFxuXHQvLyAgIC0gSWYgcmVzdHJpY3Rpb25zIG9uIGRlbGV0YWJsZSBzZXQgdG8gZmFsc2UgLT4gbm90IHZpc2libGVcblx0Ly8gICAtIE90aGVyd2lzZVxuXHQvL1x0XHRcdC0gSWYgVUkuRGVsZXRlSGlkZGVuIGlzIHRydWUgLT4gbm90IHZpc2libGVcblx0Ly9cdFx0XHQtIE90aGVyd2lzZVxuXHQvLyBcdCBcdFx0XHQtIElmIHdlJ3JlIG9uIE9QIC0+IGRlcGVuZGluZyBpZiBVSSBpcyBlZGl0YWJsZSBhbmQgcmVzdHJpY3Rpb25zIG9uIGRlbGV0YWJsZVxuXHQvL1x0XHRcdFx0LSBPdGhlcndpc2Vcblx0Ly9cdFx0XHRcdCBcdC0gSWYgVUkuRGVsZXRlSGlkZGVuIHBvaW50cyB0byBhIHByb3BlcnR5IHBhdGggLT4gcHJvdmlkZSBhIG5lZ2F0ZWQgYmluZGluZyB0byB0aGlzIHBhdGhcblx0Ly9cdCBcdCBcdFx0IFx0LSBPdGhlcndpc2UsIGRlbGV0ZSBpcyB2aXNpYmxlXG5cblx0cmV0dXJuIGlmRWxzZShcblx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlLFxuXHRcdGZhbHNlLFxuXHRcdGlmRWxzZShcblx0XHRcdGFuZChpc0NvbnN0YW50KHBhdGhEZWxldGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aERlbGV0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSksXG5cdFx0XHRmYWxzZSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0YW5kKGlzQ29uc3RhbnQoaXNEZWxldGVIaWRkZW4pLCBlcXVhbChpc0RlbGV0ZUhpZGRlbiwgY29uc3RhbnQodHJ1ZSkpKSxcblx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpICE9PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCxcblx0XHRcdFx0XHRhbmQobm90KGlzRGVsZXRlSGlkZGVuKSwgVUkuSXNFZGl0YWJsZSksXG5cdFx0XHRcdFx0bm90KGFuZChpc1BhdGhJbk1vZGVsRXhwcmVzc2lvbihpc0RlbGV0ZUhpZGRlbiksIGlzRGVsZXRlSGlkZGVuKSlcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdClcblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHBhcmFtIGNyZWF0ZVZpc2liaWxpdHlcbiAqIEBwYXJhbSBpc0luc2VydFVwZGF0ZUFjdGlvbnNUZW1wbGF0ZWRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFzdGVWaXNpYmlsaXR5KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRjcmVhdGVWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4sXG5cdGlzSW5zZXJ0VXBkYXRlQWN0aW9uc1RlbXBsYXRlZDogYm9vbGVhblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Ly8gSWYgQ3JlYXRlIGlzIHZpc2libGUsIGVuYWJsZVBhc3RlIGlzIG5vdCBkaXNhYmxlZCBpbnRvIG1hbmlmZXN0IGFuZCB3ZSBhcmUgb24gT1AvYmxvY2tzIG91dHNpZGUgRmlvcmkgZWxlbWVudHMgdGVtcGxhdGVzXG5cdC8vIFRoZW4gYnV0dG9uIHdpbGwgYmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gaW5zZXJ0YWJsZSByZXN0cmljdGlvbnMgYW5kIGNyZWF0ZSB2aXNpYmlsaXR5XG5cdC8vIE90aGVyd2lzZSBpdCdzIG5vdCB2aXNpYmxlXG5cdHJldHVybiBhbmQoXG5cdFx0bm90RXF1YWwoc3RhbmRhcmRBY3Rpb25zQ29udGV4dC50YWJsZU1hbmlmZXN0Q29uZmlndXJhdGlvbi5lbmFibGVQYXN0ZSwgZmFsc2UpLFxuXHRcdGNyZWF0ZVZpc2liaWxpdHksXG5cdFx0aXNJbnNlcnRVcGRhdGVBY3Rpb25zVGVtcGxhdGVkLFxuXHRcdFtUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydCwgVGVtcGxhdGVUeXBlLkFuYWx5dGljYWxMaXN0UGFnZV0uaW5kZXhPZihjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpKSA9PT0gLTEsXG5cdFx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb25cblx0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAndmlzaWJsZScgcHJvcGVydHkgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICpcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dFxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICd2aXNpYmxlJyBwcm9wZXJ0eSBvZiB0aGUgJ01hc3NFZGl0JyBhY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXNzRWRpdFZpc2liaWxpdHkoXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsXG5cdHN0YW5kYXJkQWN0aW9uc0NvbnRleHQ6IFN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGlzVXBkYXRlSGlkZGVuID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5oaWRkZW5Bbm5vdGF0aW9uLnVwZGF0ZSxcblx0XHRwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbiA9IHN0YW5kYXJkQWN0aW9uc0NvbnRleHQucmVzdHJpY3Rpb25zLmlzVXBkYXRhYmxlLmV4cHJlc3Npb24sXG5cdFx0Yk1hc3NFZGl0RW5hYmxlZEluTWFuaWZlc3Q6IGJvb2xlYW4gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uPy5lbmFibGVNYXNzRWRpdCB8fCBmYWxzZTtcblx0Y29uc3QgdGVtcGxhdGVCaW5kaW5nRXhwcmVzc2lvbiA9XG5cdFx0Y29udmVydGVyQ29udGV4dC5nZXRUZW1wbGF0ZVR5cGUoKSA9PT0gVGVtcGxhdGVUeXBlLk9iamVjdFBhZ2Vcblx0XHRcdD8gVUkuSXNFZGl0YWJsZVxuXHRcdFx0OiBjb252ZXJ0ZXJDb250ZXh0LmdldFRlbXBsYXRlVHlwZSgpID09PSBUZW1wbGF0ZVR5cGUuTGlzdFJlcG9ydDtcblx0Ly9NYXNzRWRpdCBpcyB2aXNpYmxlXG5cdC8vIElmXG5cdC8vXHRcdC0gdGhlcmUgaXMgbm8gc3RhdGljIHJlc3RyaWN0aW9ucyBzZXQgdG8gZmFsc2Vcblx0Ly9cdFx0LSBhbmQgZW5hYmxlTWFzc0VkaXQgaXMgbm90IHNldCB0byBmYWxzZSBpbnRvIHRoZSBtYW5pZmVzdFxuXHQvL1x0XHQtIGFuZCB0aGUgc2VsZWN0aW9uTW9kZSBpcyByZWxldmFudFxuXHQvL1x0VGhlbiBNYXNzRWRpdCBpcyBhbHdheXMgdmlzaWJsZSBpbiBMUiBvciBkeW5hbWljYWxseSB2aXNpYmxlIGluIE9QIGFjY29yZGluZyB0byB1aT5FZGl0YWJsZSBhbmQgaGlkZGVuQW5ub3RhdGlvblxuXHQvLyAgQnV0dG9uIGlzIGhpZGRlbiBmb3IgYWxsIG90aGVyIGNhc2VzXG5cdHJldHVybiBhbmQoXG5cdFx0bm90KGFuZChpc0NvbnN0YW50KHBhdGhVcGRhdGFibGVFeHByZXNzaW9uKSwgZXF1YWwocGF0aFVwZGF0YWJsZUV4cHJlc3Npb24sIGZhbHNlKSkpLFxuXHRcdGJNYXNzRWRpdEVuYWJsZWRJbk1hbmlmZXN0LFxuXHRcdHRlbXBsYXRlQmluZGluZ0V4cHJlc3Npb24sXG5cdFx0bm90KGlzVXBkYXRlSGlkZGVuKVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgY3JlYXRpb25Sb3cuXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gY3JlYXRpb25Sb3dWaXNpYmlsaXR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSBjcmVhdGlvblJvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENyZWF0aW9uUm93RW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRpb25Sb3dWaXNpYmlsaXR5OiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj5cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IHJlc3RyaWN0aW9uc0luc2VydGFibGUgPSBpc1BhdGhJbnNlcnRhYmxlKGNvbnZlcnRlckNvbnRleHQuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCgpLCB7XG5cdFx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbjogdHJ1ZSxcblx0XHRhdXRob3JpemVVbnJlc29sdmFibGU6IHRydWUsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+IHtcblx0XHRcdGlmIChwYXRoLmluZGV4T2YoXCIvXCIpID09PSAwKSB7XG5cdFx0XHRcdHBhdGggPSBzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIG5hdmlnYXRpb25QYXRocyk7XG5cdFx0XHRcdHJldHVybiBwYXRoO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKS5uYXZpZ2F0aW9uUHJvcGVydGllcztcblx0XHRcdGlmIChuYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdFx0XHRjb25zdCBsYXN0TmF2ID0gbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoIC0gMV07XG5cdFx0XHRcdGNvbnN0IHBhcnRuZXIgPSBpc05hdmlnYXRpb25Qcm9wZXJ0eShsYXN0TmF2KSAmJiBsYXN0TmF2LnBhcnRuZXI7XG5cdFx0XHRcdGlmIChwYXJ0bmVyKSB7XG5cdFx0XHRcdFx0cGF0aCA9IGAke3BhcnRuZXJ9LyR7cGF0aH1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcGF0aDtcblx0XHR9XG5cdH0pO1xuXHRjb25zdCBpc0luc2VydGFibGUgPVxuXHRcdHJlc3RyaWN0aW9uc0luc2VydGFibGUuX3R5cGUgPT09IFwiVW5yZXNvbHZhYmxlXCJcblx0XHRcdD8gaXNQYXRoSW5zZXJ0YWJsZShjb252ZXJ0ZXJDb250ZXh0LmdldERhdGFNb2RlbE9iamVjdFBhdGgoKSwge1xuXHRcdFx0XHRcdHBhdGhWaXNpdG9yOiAocGF0aDogc3RyaW5nKSA9PiBzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZXJDb250ZXh0LmdldENvbnZlcnRlZFR5cGVzKCksIFtdKVxuXHRcdFx0ICB9KVxuXHRcdFx0OiByZXN0cmljdGlvbnNJbnNlcnRhYmxlO1xuXG5cdHJldHVybiBhbmQoXG5cdFx0Y3JlYXRpb25Sb3dWaXNpYmlsaXR5LFxuXHRcdGlzSW5zZXJ0YWJsZSxcblx0XHRvcihcblx0XHRcdCFzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnRhYmxlTWFuaWZlc3RDb25maWd1cmF0aW9uLmRpc2FibGVBZGRSb3dCdXR0b25Gb3JFbXB0eURhdGEsXG5cdFx0XHRmb3JtYXRSZXN1bHQoW3BhdGhJbk1vZGVsKFwiY3JlYXRpb25Sb3dGaWVsZFZhbGlkaXR5XCIsIFwiaW50ZXJuYWxcIildLCB0YWJsZUZvcm1hdHRlcnMudmFsaWRhdGVDcmVhdGlvblJvd0ZpZWxkcylcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnQ3JlYXRlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gY3JlYXRlVmlzaWJpbGl0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgJ0NyZWF0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q3JlYXRlRW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0Y3JlYXRlVmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRsZXQgY29uZGl0aW9uO1xuXHRpZiAoc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jcmVhdGlvbk1vZGUgPT09IENyZWF0aW9uTW9kZS5JbmxpbmVDcmVhdGlvblJvd3MpIHtcblx0XHQvLyBmb3IgSW5saW5lIGNyZWF0aW9uIHJvd3MgY3JlYXRlIGNhbiBiZSBoaWRkZW4gdmlhIG1hbmlmZXN0IGFuZCB0aGlzIHNob3VsZCBub3QgaW1wYWN0IGl0cyBlbmFibGVtZW50XG5cdFx0Y29uZGl0aW9uID0gbm90KHN0YW5kYXJkQWN0aW9uc0NvbnRleHQuaGlkZGVuQW5ub3RhdGlvbi5jcmVhdGUpO1xuXHR9IGVsc2Uge1xuXHRcdGNvbmRpdGlvbiA9IGNyZWF0ZVZpc2liaWxpdHk7XG5cdH1cblx0Y29uc3QgaXNJbnNlcnRhYmxlID0gc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5yZXN0cmljdGlvbnMuaXNJbnNlcnRhYmxlLmV4cHJlc3Npb247XG5cdGNvbnN0IENvbGxlY3Rpb25UeXBlID0gY29udmVydGVyQ29udGV4dC5yZXNvbHZlQWJzb2x1dGVQYXRoPEVudGl0eVNldD4oc3RhbmRhcmRBY3Rpb25zQ29udGV4dC5jb2xsZWN0aW9uUGF0aCkudGFyZ2V0O1xuXHRyZXR1cm4gYW5kKFxuXHRcdGNvbmRpdGlvbixcblx0XHRvcihcblx0XHRcdGlzRW50aXR5U2V0KENvbGxlY3Rpb25UeXBlKSxcblx0XHRcdGFuZChpc0luc2VydGFibGUsIG9yKGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgIT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlLCBVSS5Jc0VkaXRhYmxlKSlcblx0XHQpXG5cdCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnRGVsZXRlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEBwYXJhbSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0XG4gKiBAcGFyYW0gZGVsZXRlVmlzaWJpbGl0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgJ0RlbGV0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVsZXRlRW5hYmxlbWVudChcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0c3RhbmRhcmRBY3Rpb25zQ29udGV4dDogU3RhbmRhcmRBY3Rpb25zQ29udGV4dCxcblx0ZGVsZXRlVmlzaWJpbGl0eTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBkZWxldGFibGVDb250ZXh0cyA9IHBhdGhJbk1vZGVsKFwiZGVsZXRhYmxlQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgdW5TYXZlZENvbnRleHRzID0gcGF0aEluTW9kZWwoXCJ1blNhdmVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKTtcblx0Y29uc3QgZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSA9IHBhdGhJbk1vZGVsKFwiZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZVwiLCBcImludGVybmFsXCIpO1xuXHRjb25zdCBkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlID0gcGF0aEluTW9kZWwoXCJkcmFmdHNXaXRoTm9uRGVsZXRhYmxlQWN0aXZlXCIsIFwiaW50ZXJuYWxcIik7XG5cblx0cmV0dXJuIGFuZChcblx0XHRkZWxldGVWaXNpYmlsaXR5LFxuXHRcdGlmRWxzZShcblx0XHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCkgPT09IFRlbXBsYXRlVHlwZS5PYmplY3RQYWdlLFxuXHRcdFx0b3IoXG5cdFx0XHRcdGFuZChub3RFcXVhbChkZWxldGFibGVDb250ZXh0cywgdW5kZWZpbmVkKSwgZ3JlYXRlclRoYW4obGVuZ3RoKGRlbGV0YWJsZUNvbnRleHRzKSwgMCkpLFxuXHRcdFx0XHRhbmQobm90RXF1YWwoZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSwgdW5kZWZpbmVkKSwgZ3JlYXRlclRoYW4obGVuZ3RoKGRyYWZ0c1dpdGhEZWxldGFibGVBY3RpdmUpLCAwKSlcblx0XHRcdCksXG5cdFx0XHRvcihcblx0XHRcdFx0YW5kKG5vdEVxdWFsKGRlbGV0YWJsZUNvbnRleHRzLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgoZGVsZXRhYmxlQ29udGV4dHMpLCAwKSksXG5cdFx0XHRcdGFuZChub3RFcXVhbChkcmFmdHNXaXRoRGVsZXRhYmxlQWN0aXZlLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgoZHJhZnRzV2l0aERlbGV0YWJsZUFjdGl2ZSksIDApKSxcblx0XHRcdFx0Ly8gb24gTFIsIGFsc28gZW5hYmxlIGRlbGV0ZSBidXR0b24gdG8gY2FuY2VsIGRyYWZ0c1xuXHRcdFx0XHRhbmQobm90RXF1YWwoZHJhZnRzV2l0aE5vbkRlbGV0YWJsZUFjdGl2ZSwgdW5kZWZpbmVkKSwgZ3JlYXRlclRoYW4obGVuZ3RoKGRyYWZ0c1dpdGhOb25EZWxldGFibGVBY3RpdmUpLCAwKSksXG5cdFx0XHRcdC8vIGRlbGV0YWJsZSBjb250ZXh0cyB3aXRoIHVuc2F2ZWQgY2hhbmdlcyBhcmUgY291bnRlZCBzZXBhcmF0ZWx5IChMUiBvbmx5KVxuXHRcdFx0XHRhbmQobm90RXF1YWwodW5TYXZlZENvbnRleHRzLCB1bmRlZmluZWQpLCBncmVhdGVyVGhhbihsZW5ndGgodW5TYXZlZENvbnRleHRzKSwgMCkpXG5cdFx0XHQpXG5cdFx0KVxuXHQpO1xufVxuXG4vKipcbiAqIEdldHMgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlICdlbmFibGVkJyBwcm9wZXJ0eSBvZiB0aGUgJ1Bhc3RlJyBhY3Rpb24uXG4gKlxuICogQHBhcmFtIHBhc3RlVmlzaWJpbGl0eVxuICogQHBhcmFtIGNyZWF0ZUVuYWJsZW1lbnRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlICdQYXN0ZScgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFzdGVFbmFibGVtZW50KFxuXHRwYXN0ZVZpc2liaWxpdHk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPixcblx0Y3JlYXRlRW5hYmxlbWVudDogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+XG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gYW5kKHBhc3RlVmlzaWJpbGl0eSwgY3JlYXRlRW5hYmxlbWVudCk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyBleHByZXNzaW9uIGZvciB0aGUgJ2VuYWJsZWQnIHByb3BlcnR5IG9mIHRoZSAnTWFzc0VkaXQnIGFjdGlvbi5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHN0YW5kYXJkQWN0aW9uc0NvbnRleHRcbiAqIEBwYXJhbSBtYXNzRWRpdFZpc2liaWxpdHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIHRoZSAnZW5hYmxlZCcgcHJvcGVydHkgb2YgdGhlICdNYXNzRWRpdCcgYWN0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFzc0VkaXRFbmFibGVtZW50KFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0OiBTdGFuZGFyZEFjdGlvbnNDb250ZXh0LFxuXHRtYXNzRWRpdFZpc2liaWxpdHk6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPlxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgcGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc1VwZGF0YWJsZS5leHByZXNzaW9uO1xuXHRjb25zdCBpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5ID1cblx0XHQhaXNDb25zdGFudChwYXRoVXBkYXRhYmxlRXhwcmVzc2lvbikgJiZcblx0XHRzdGFuZGFyZEFjdGlvbnNDb250ZXh0LnJlc3RyaWN0aW9ucy5pc1VwZGF0YWJsZS5uYXZpZ2F0aW9uRXhwcmVzc2lvbi5fdHlwZSA9PT0gXCJVbnJlc29sdmFibGVcIjtcblx0Y29uc3QgbnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzID0gZ3JlYXRlck9yRXF1YWwocGF0aEluTW9kZWwoXCJudW1iZXJPZlNlbGVjdGVkQ29udGV4dHNcIiwgXCJpbnRlcm5hbFwiKSwgMSk7XG5cdGNvbnN0IG51bWJlck9mVXBkYXRhYmxlQ29udGV4dHMgPSBncmVhdGVyT3JFcXVhbChsZW5ndGgocGF0aEluTW9kZWwoXCJ1cGRhdGFibGVDb250ZXh0c1wiLCBcImludGVybmFsXCIpKSwgMSk7XG5cdGNvbnN0IGJJc0RyYWZ0U3VwcG9ydGVkID0gTW9kZWxIZWxwZXIuaXNPYmplY3RQYXRoRHJhZnRTdXBwb3J0ZWQoY29udmVydGVyQ29udGV4dC5nZXREYXRhTW9kZWxPYmplY3RQYXRoKCkpO1xuXHRjb25zdCBiRGlzcGxheU1vZGUgPSBpc0luRGlzcGxheU1vZGUoY29udmVydGVyQ29udGV4dCk7XG5cblx0Ly8gbnVtYmVyT2ZVcGRhdGFibGVDb250ZXh0cyBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgYmluZGluZyBpbiBjYXNlXG5cdC8vIDEuIFVwZGF0ZSBpcyBkZXBlbmRlbnQgb24gY3VycmVudCBlbnRpdHkgcHJvcGVydHkgKGlzT25seUR5bmFtaWNPbkN1cnJlbnRFbnRpdHkgaXMgdHJ1ZSkuXG5cdC8vIDIuIFRoZSB0YWJsZSBpcyByZWFkIG9ubHkgYW5kIGRyYWZ0IGVuYWJsZWQobGlrZSBMUiksIGluIHRoaXMgY2FzZSBvbmx5IGFjdGl2ZSBjb250ZXh0cyBjYW4gYmUgbWFzcyBlZGl0ZWQuXG5cdC8vICAgIFNvLCB1cGRhdGUgZGVwZW5kcyBvbiAnSXNBY3RpdmVFbnRpdHknIHZhbHVlIHdoaWNoIG5lZWRzIHRvIGJlIGNoZWNrZWQgcnVudGltZS5cblx0Y29uc3QgcnVudGltZUJpbmRpbmcgPSBpZkVsc2UoXG5cdFx0b3IoYW5kKGJEaXNwbGF5TW9kZSwgYklzRHJhZnRTdXBwb3J0ZWQpLCBpc09ubHlEeW5hbWljT25DdXJyZW50RW50aXR5KSxcblx0XHRhbmQobnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzLCBudW1iZXJPZlVwZGF0YWJsZUNvbnRleHRzKSxcblx0XHRhbmQobnVtYmVyT2ZTZWxlY3RlZENvbnRleHRzKVxuXHQpO1xuXG5cdHJldHVybiBhbmQobWFzc0VkaXRWaXNpYmlsaXR5LCBpZkVsc2UoaXNPbmx5RHluYW1pY09uQ3VycmVudEVudGl0eSwgcnVudGltZUJpbmRpbmcsIGFuZChydW50aW1lQmluZGluZywgcGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pKSk7XG59XG5cbi8qKlxuICogVGVsbHMgaWYgdGhlIHRhYmxlIGluIHRlbXBsYXRlIGlzIGluIGRpc3BsYXkgbW9kZS5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHBhcmFtIHZpZXdDb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHRhYmxlIGlzIGluIGRpc3BsYXkgbW9kZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbkRpc3BsYXlNb2RlKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQsIHZpZXdDb25maWd1cmF0aW9uPzogVmlld1BhdGhDb25maWd1cmF0aW9uKTogYm9vbGVhbiB7XG5cdGNvbnN0IHRlbXBsYXRlVHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0VGVtcGxhdGVUeXBlKCk7XG5cdGlmIChcblx0XHR0ZW1wbGF0ZVR5cGUgPT09IFRlbXBsYXRlVHlwZS5MaXN0UmVwb3J0IHx8XG5cdFx0dGVtcGxhdGVUeXBlID09PSBUZW1wbGF0ZVR5cGUuQW5hbHl0aWNhbExpc3RQYWdlIHx8XG5cdFx0KHZpZXdDb25maWd1cmF0aW9uICYmIGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuaGFzTXVsdGlwbGVWaXN1YWxpemF0aW9ucyh2aWV3Q29uZmlndXJhdGlvbikpXG5cdCkge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdC8vIHVwZGF0YWJsZSB3aWxsIGJlIGhhbmRsZWQgYXQgdGhlIHByb3BlcnR5IGxldmVsXG5cdHJldHVybiBmYWxzZTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztNQStCS0Esd0JBQXdCO0VBQUEsV0FBeEJBLHdCQUF3QjtJQUF4QkEsd0JBQXdCO0lBQXhCQSx3QkFBd0I7SUFBeEJBLHdCQUF3QjtFQUFBLEdBQXhCQSx3QkFBd0IsS0FBeEJBLHdCQUF3QjtFQW9DN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0MsOEJBQThCLENBQzdDQyxnQkFBa0MsRUFDbENDLFlBQTBCLEVBQzFCQywwQkFBcUQsRUFDckRDLGlCQUF5QyxFQUNoQjtJQUN6QixPQUFPO01BQ05DLGNBQWMsRUFBRUMsbUJBQW1CLENBQUNMLGdCQUFnQixDQUFDTSxzQkFBc0IsRUFBRSxDQUFDO01BQzlFQyxnQkFBZ0IsRUFBRTtRQUNqQkMsTUFBTSxFQUFFQyx1QkFBdUIsQ0FBQ1QsZ0JBQWdCLEVBQUVGLHdCQUF3QixDQUFDWSxZQUFZLENBQUM7UUFDeEZDLE1BQU0sRUFBRUYsdUJBQXVCLENBQUNULGdCQUFnQixFQUFFRix3QkFBd0IsQ0FBQ2MsWUFBWSxDQUFDO1FBQ3hGQyxNQUFNLEVBQUVKLHVCQUF1QixDQUFDVCxnQkFBZ0IsRUFBRUYsd0JBQXdCLENBQUNnQixZQUFZO01BQ3hGLENBQUM7TUFDRGIsWUFBWSxFQUFFQSxZQUFZO01BQzFCYyx3QkFBd0IsRUFBRUEsd0JBQXdCLENBQUNmLGdCQUFnQixDQUFDO01BQ3BFZ0IsZ0NBQWdDLEVBQUViLGlCQUFpQixHQUNoREgsZ0JBQWdCLENBQUNpQixrQkFBa0IsRUFBRSxDQUFDQyx5QkFBeUIsQ0FBQ2YsaUJB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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/formatters/TableFormatter","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/templating/DataModelPathHelper","../../../helpers/BindingHelper","../../../ManifestSettings"],function(e,t,n,i,a,o){"use strict";var
|
|
5
|
+
sap.ui.define(["sap/fe/core/formatters/TableFormatter","sap/fe/core/helpers/BindingToolkit","sap/fe/core/helpers/ModelHelper","sap/fe/core/helpers/TypeGuards","sap/fe/core/templating/DataModelPathHelper","../../../helpers/BindingHelper","../../../ManifestSettings"],function(e,t,n,i,a,o,r){"use strict";var s={};var l=r.TemplateType;var d=r.CreationMode;var c=o.UI;var u=o.singletonPathVisitor;var p=a.isPathUpdatable;var f=a.isPathInsertable;var v=a.isPathDeletable;var g=a.getTargetObjectPath;var b=i.isNavigationProperty;var h=i.isEntitySet;var y=t.pathInModel;var T=t.or;var C=t.notEqual;var M=t.not;var m=t.length;var P=t.isPathInModelExpression;var E=t.isConstant;var D=t.ifElse;var A=t.greaterThan;var S=t.greaterOrEqual;var O=t.getExpressionFromAnnotation;var x=t.formatResult;var I=t.equal;var R=t.constant;var w=t.compileExpression;var H=t.and;var U;(function(e){e["CreateHidden"]="CreateHidden";e["DeleteHidden"]="DeleteHidden";e["UpdateHidden"]="UpdateHidden"})(U||(U={}));function j(e,t,n,i){return{collectionPath:g(e.getDataModelObjectPath()),hiddenAnnotation:{create:L(e,U.CreateHidden),delete:L(e,U.DeleteHidden),update:L(e,U.UpdateHidden)},creationMode:t,isDraftOrStickySupported:V(e),isViewWithMultipleVisualizations:i?e.getManifestWrapper().hasMultipleVisualizations(i):false,newAction:k(e),tableManifestConfiguration:n,restrictions:z(e)}}s.generateStandardActionsContext=j;function V(e){var t,i,a;const o=e.getDataModelObjectPath();const r=n.isObjectPathDraftSupported(o);const s=(t=o.startingEntitySet)!==null&&t!==void 0&&(i=t.annotations)!==null&&i!==void 0&&(a=i.Session)!==null&&a!==void 0&&a.StickySessionSupported?true:false;return r||s}s.isDraftOrStickySupported=V;function k(e){var t,n,i,a;const o=e.getEntitySet();const r=h(o)?((t=o.annotations.Common)===null||t===void 0?void 0:(n=t.DraftRoot)===null||n===void 0?void 0:n.NewAction)??((i=o.annotations.Session)===null||i===void 0?void 0:(a=i.StickySessionSupported)===null||a===void 0?void 0:a.NewAction):undefined;const s=r===null||r===void 0?void 0:r.toString();if(s){var l,d,c,u;let t=e===null||e===void 0?void 0:(l=e.getEntityType().actions[s])===null||l===void 0?void 0:(d=l.annotations)===null||d===void 0?void 0:(c=d.Core)===null||c===void 0?void 0:(u=c.OperationAvailable)===null||u===void 0?void 0:u.valueOf();t=t!==undefined?t:true;return{name:s,available:O(t)}}return undefined}s.getNewAction=k;function L(e,t){var n;let i=arguments.length>2&&arguments[2]!==undefined?arguments[2]:true;const a=e.getEntitySet();const o=e.getDataModelObjectPath();const r=o.navigationProperties.length>0&&i?[o.navigationProperties[o.navigationProperties.length-1].name]:[];const s=(a===null||a===void 0?void 0:(n=a.annotations.UI)===null||n===void 0?void 0:n[t])||false;return a?O(s,r,undefined,t=>u(t,e.getConvertedTypes(),r)):R(false)}s.isActionAnnotatedHidden=L;function z(e){const t=e.getDataModelObjectPath();const n=[{key:"isInsertable",function:f},{key:"isUpdatable",function:p},{key:"isDeletable",function:v}];const i={};n.forEach(function(n){const a=n["function"];i[n.key]={expression:a.apply(null,[t,{pathVisitor:(t,n)=>u(t,e.getConvertedTypes(),n)}]),navigationExpression:a.apply(null,[t,{ignoreTargetCollection:true,authorizeUnresolvable:true,pathVisitor:(t,n)=>u(t,e.getConvertedTypes(),n)}])}});return i}s.getRestrictions=z;function F(e,t){return t||e.creationMode===d.External}s.getInsertUpdateActionsTemplating=F;function N(e,t){const n=J(e,t);return{isTemplated:w(_(t,n)),visible:w(n),enabled:w(Z(e,t,n))}}s.getStandardActionCreate=N;function W(e,t){const n=K(e,t);return{isTemplated:w(G(n)),visible:w(n),enabled:w(ee(e,t,n))}}s.getStandardActionDelete=W;function q(e,t){const n=J(e,t,true);return{isTemplated:w(_(t,n,true)),visible:w(n),enabled:w(Y(e,t,n))}}s.getCreationRow=q;function B(e,t,n){const i=J(e,t);const a=Z(e,t,i);const o=Q(e,t,i,n);return{visible:w(o),enabled:w(te(o,a))}}s.getStandardActionPaste=B;function $(e,t){const n=X(e,t);return{isTemplated:w(G(n)),visible:w(n),enabled:w(ne(e,t,n))}}s.getStandardActionMassEdit=$;function _(e,t){let n=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;return H(T(H(n,e.creationMode===d.CreationRow),H(!n,e.creationMode!==d.CreationRow)),T(M(E(t)),t))}s.getCreateTemplating=_;function G(e){return T(M(E(e)),e)}s.getDefaultTemplating=G;function J(e,t){var n,i;let a=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;const o=t.restrictions.isInsertable.expression;const r=a?L(e,U.CreateHidden,false):t.hiddenAnnotation.create;const s=t.newAction;return D(t.creationMode===d.External,H(M(r),T(e.getTemplateType()===l.ListReport,c.IsEditable)),D(T(H(E(s===null||s===void 0?void 0:s.available),I(s===null||s===void 0?void 0:s.available,false)),H(E(o),I(o,false),!s),H(E(r),I(r,true)),H(t.creationMode===d.InlineCreationRows,((n=t.tableManifestConfiguration)===null||n===void 0?void 0:n.type)==="ResponsiveTable",D((t===null||t===void 0?void 0:(i=t.tableManifestConfiguration)===null||i===void 0?void 0:i.inlineCreationRowsHiddenInEditMode)===false,true,c.IsCreateMode))),false,D(e.getTemplateType()===l.ListReport,T(M(P(r)),M(r)),H(M(r),c.IsEditable))))}s.getCreateVisibility=J;function K(e,t){const n=t.hiddenAnnotation.delete;const i=t.restrictions.isDeletable.expression;return D(e.getTemplateType()===l.AnalyticalListPage,false,D(H(E(i),I(i,false)),false,D(H(E(n),I(n,R(true))),false,D(e.getTemplateType()!==l.ListReport,H(M(n),c.IsEditable),M(H(P(n),n))))))}s.getDeleteVisibility=K;function Q(e,t,n,i){return H(C(t.tableManifestConfiguration.enablePaste,false),n,i,[l.ListReport,l.AnalyticalListPage].indexOf(e.getTemplateType())===-1,t.restrictions.isInsertable.expression)}s.getPasteVisibility=Q;function X(e,t){var n;const i=t.hiddenAnnotation.update,a=t.restrictions.isUpdatable.expression,o=((n=t.tableManifestConfiguration)===null||n===void 0?void 0:n.enableMassEdit)||false;const r=e.getTemplateType()===l.ObjectPage?c.IsEditable:e.getTemplateType()===l.ListReport;return H(M(H(E(a),I(a,false))),o,r,M(i))}s.getMassEditVisibility=X;function Y(t,n,i){const a=f(t.getDataModelObjectPath(),{ignoreTargetCollection:true,authorizeUnresolvable:true,pathVisitor:(e,n)=>{if(e.indexOf("/")===0){e=u(e,t.getConvertedTypes(),n);return e}const i=t.getDataModelObjectPath().navigationProperties;if(i){const t=i[i.length-1];const n=b(t)&&t.partner;if(n){e=`${n}/${e}`}}return e}});const o=a._type==="Unresolvable"?f(t.getDataModelObjectPath(),{pathVisitor:e=>u(e,t.getConvertedTypes(),[])}):a;return H(i,o,T(!n.tableManifestConfiguration.disableAddRowButtonForEmptyData,x([y("creationRowFieldValidity","internal")],e.validateCreationRowFields)))}s.getCreationRowEnablement=Y;function Z(e,t,n){let i;if(t.creationMode===d.InlineCreationRows){i=M(t.hiddenAnnotation.create)}else{i=n}const a=t.restrictions.isInsertable.expression;const o=e.resolveAbsolutePath(t.collectionPath).target;return H(i,T(h(o),H(a,T(e.getTemplateType()!==l.ObjectPage,c.IsEditable))))}s.getCreateEnablement=Z;function ee(e,t,n){const i=y("deletableContexts","internal");const a=y("unSavedContexts","internal");const o=y("draftsWithDeletableActive","internal");const r=y("draftsWithNonDeletableActive","internal");return H(n,D(e.getTemplateType()===l.ObjectPage,T(H(C(i,undefined),A(m(i),0)),H(C(o,undefined),A(m(o),0))),T(H(C(i,undefined),A(m(i),0)),H(C(o,undefined),A(m(o),0)),H(C(r,undefined),A(m(r),0)),H(C(a,undefined),A(m(a),0)))))}s.getDeleteEnablement=ee;function te(e,t){return H(e,t)}s.getPasteEnablement=te;function ne(e,t,i){const a=t.restrictions.isUpdatable.expression;const o=!E(a)&&t.restrictions.isUpdatable.navigationExpression._type==="Unresolvable";const r=S(y("numberOfSelectedContexts","internal"),1);const s=S(m(y("updatableContexts","internal")),1);const l=n.isObjectPathDraftSupported(e.getDataModelObjectPath());const d=ie(e);const c=D(T(H(d,l),o),H(r,s),H(r));return H(i,D(o,c,H(c,a)))}s.getMassEditEnablement=ne;function ie(e,t){const n=e.getTemplateType();if(n===l.ListReport||n===l.AnalyticalListPage||t&&e.getManifestWrapper().hasMultipleVisualizations(t)){return true}return false}s.isInDisplayMode=ie;return s},false);
|
|
6
6
|
//# sourceMappingURL=StandardActions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardActions.js","names":["sap","ui","define","tableFormatters","BindingToolkit","ModelHelper","DataModelPathHelper","BindingHelper","ManifestSettings","_exports","TemplateType","CreationMode","UI","singletonPathVisitor","isPathUpdatable","isPathInsertable","isPathDeletable","getTargetObjectPath","pathInModel","or","notEqual","not","length","isPathInModelExpression","isConstant","ifElse","greaterThan","greaterOrEqual","getExpressionFromAnnotation","formatResult","equal","constant","compileExpression","and","AnnotationHiddenProperty","generateStandardActionsContext","converterContext","creationMode","tableManifestConfiguration","viewConfiguration","collectionPath","getDataModelObjectPath","hiddenAnnotation","create","isActionAnnotatedHidden","CreateHidden","delete","DeleteHidden","update","UpdateHidden","isDraftOrStickySupported","isViewWithMultipleVisualizations","getManifestWrapper","hasMultipleVisualizations","newAction","getNewAction","restrictions","getRestrictions","_dataModelObjectPath$","_dataModelObjectPath$2","_dataModelObjectPath$3","dataModelObjectPath","bIsDraftSupported","isObjectPathDraftSupported","bIsStickySessionSupported","startingEntitySet","annotations","Session","StickySessionSupported","_annotations","_annotations$Common","_annotations$Common$D","_annotations2","_annotations2$Session","_annotations2$Session2","currentEntitySet","getEntitySet","isSingleton","Common","DraftRoot","NewAction","undefined","newActionName","toString","_converterContext$get","_converterContext$get2","_converterContext$get3","availableProperty","getEntityType","actions","Core","OperationAvailable","name","available","sAnnotationTerm","_currentEntitySet$ann","bWithNavigationPath","arguments","visitedNavigationPaths","navigationProperties","actionAnnotationValue","path","getConvertedTypes","restrictionsDef","key","function","result","forEach","def","defFunction","expression","apply","pathVisitor","navigationPaths","navigationExpression","ignoreTargetCollection","authorizeUnresolvable","getInsertUpdateActionsTemplating","standardActionsContext","isDraftOrSticky","isCreateAlwaysHidden","External","getStandardActionCreate","createVisibility","getCreateVisibility","isTemplated","getCreateTemplating","visible","enabled","getCreateEnablement","getStandardActionDelete","deleteVisibility","getDeleteVisibility","getDefaultTemplating","getDeleteEnablement","getCreationRow","creationRowVisibility","getCreationRowEnablement","getStandardActionPaste","isInsertUpdateActionsTemplated","createEnablement","pasteVisibility","getPasteVisibility","getPasteEnablement","getStandardActionMassEdit","massEditVisibility","getMassEditVisibility","getMassEditEnablement","isForCreationRow","CreationRow","actionVisibility","_standardActionsConte","_standardActionsConte2","isInsertable","isCreateHidden","getTemplateType","ListReport","IsEditable","InlineCreationRows","type","inlineCreationRowsHiddenInEditMode","IsCreateMode","isDeleteHidden","pathDeletableExpression","isDeletable","AnalyticalListPage","enablePaste","indexOf","_standardActionsConte3","isUpdateHidden","pathUpdatableExpression","isUpdatable","bMassEditEnabledInManifest","enableMassEdit","templateBindingExpression","ObjectPage","restrictionsInsertable","lastNav","partner","_type","disableAddRowButtonForEmptyData","validateCreationRowFields","_converterContext$res","CollectionType","resolveAbsolutePath","target","deletableContexts","unSavedContexts","draftsWithDeletableActive","draftsWithNonDeletableActive","isOnlyDynamicOnCurrentEntity","numberOfSelectedContexts","numberOfUpdatableContexts","bDisplayMode","isInDisplayMode","runtimeBinding","templateType"],"sources":["StandardActions-dbg.js"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StandardActions.js","names":["sap","ui","define","tableFormatters","BindingToolkit","ModelHelper","TypeGuards","DataModelPathHelper","BindingHelper","ManifestSettings","_exports","TemplateType","CreationMode","UI","singletonPathVisitor","isPathUpdatable","isPathInsertable","isPathDeletable","getTargetObjectPath","isNavigationProperty","isEntitySet","pathInModel","or","notEqual","not","length","isPathInModelExpression","isConstant","ifElse","greaterThan","greaterOrEqual","getExpressionFromAnnotation","formatResult","equal","constant","compileExpression","and","AnnotationHiddenProperty","generateStandardActionsContext","converterContext","creationMode","tableManifestConfiguration","viewConfiguration","collectionPath","getDataModelObjectPath","hiddenAnnotation","create","isActionAnnotatedHidden","CreateHidden","delete","DeleteHidden","update","UpdateHidden","isDraftOrStickySupported","isViewWithMultipleVisualizations","getManifestWrapper","hasMultipleVisualizations","newAction","getNewAction","restrictions","getRestrictions","_dataModelObjectPath$","_dataModelObjectPath$2","_dataModelObjectPath$3","dataModelObjectPath","bIsDraftSupported","isObjectPathDraftSupported","bIsStickySessionSupported","startingEntitySet","annotations","Session","StickySessionSupported","_currentEntitySet$ann","_currentEntitySet$ann2","_currentEntitySet$ann3","_currentEntitySet$ann4","currentEntitySet","getEntitySet","Common","DraftRoot","NewAction","undefined","newActionName","toString","_converterContext$get","_converterContext$get2","_converterContext$get3","_converterContext$get4","availableProperty","getEntityType","actions","Core","OperationAvailable","valueOf","name","available","sAnnotationTerm","_currentEntitySet$ann5","bWithNavigationPath","arguments","visitedNavigationPaths","navigationProperties","actionAnnotationValue","path","getConvertedTypes","restrictionsDef","key","function","result","forEach","def","defFunction","expression","apply","pathVisitor","navigationPaths","navigationExpression","ignoreTargetCollection","authorizeUnresolvable","getInsertUpdateActionsTemplating","standardActionsContext","isDraftOrSticky","External","getStandardActionCreate","createVisibility","getCreateVisibility","isTemplated","getCreateTemplating","visible","enabled","getCreateEnablement","getStandardActionDelete","deleteVisibility","getDeleteVisibility","getDefaultTemplating","getDeleteEnablement","getCreationRow","creationRowVisibility","getCreationRowEnablement","getStandardActionPaste","isInsertUpdateActionsTemplated","createEnablement","pasteVisibility","getPasteVisibility","getPasteEnablement","getStandardActionMassEdit","massEditVisibility","getMassEditVisibility","getMassEditEnablement","isForCreationRow","CreationRow","actionVisibility","_standardActionsConte","_standardActionsConte2","isInsertable","isCreateHidden","getTemplateType","ListReport","IsEditable","InlineCreationRows","type","inlineCreationRowsHiddenInEditMode","IsCreateMode","isDeleteHidden","pathDeletableExpression","isDeletable","AnalyticalListPage","enablePaste","indexOf","_standardActionsConte3","isUpdateHidden","pathUpdatableExpression","isUpdatable","bMassEditEnabledInManifest","enableMassEdit","templateBindingExpression","ObjectPage","restrictionsInsertable","lastNav","partner","_type","disableAddRowButtonForEmptyData","validateCreationRowFields","condition","CollectionType","resolveAbsolutePath","target","deletableContexts","unSavedContexts","draftsWithDeletableActive","draftsWithNonDeletableActive","isOnlyDynamicOnCurrentEntity","numberOfSelectedContexts","numberOfUpdatableContexts","bDisplayMode","isInDisplayMode","runtimeBinding","templateType"],"sources":["StandardActions-dbg.js"],"mappings":"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"}
|