@sapui5/sap.fe.core 1.111.1 → 1.112.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 +4 -4
- 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 +11 -11
- package/src/sap/fe/core/AppComponent-dbg.js +27 -5
- 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 +58 -3
- 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 +152 -365
- 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 +201 -478
- package/src/sap/fe/core/ExtensionAPI-dbg.js +2 -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 +9 -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 +163 -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 +169 -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 +147 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor-dbg.js +905 -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} +290 -362
- 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 +181 -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 +890 -220
- 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 +974 -239
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +24 -34
- 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 +71 -61
- 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 +1 -1
- package/src/sap/fe/core/controllerextensions/PageReady.ts +24 -0
- 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 +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +2 -3
- 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/TransactionHelper-dbg.js +45 -31
- 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 +52 -42
- package/src/sap/fe/core/controllerextensions/editFlow/draft-dbg.js +44 -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 +43 -63
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal-dbg.js +77 -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 +114 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade-dbg.js +1505 -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 +1985 -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 -11
- 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 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling-dbg.js +43 -41
- 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 +44 -47
- 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 +12 -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 +32 -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 +1 -1
- package/src/sap/fe/core/converters/ConverterContext.ts +2 -1
- 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 +17 -1
- 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 +16 -0
- package/src/sap/fe/core/converters/MetaModelConverter-dbg.js +61 -49
- 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 +65 -51
- 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 +65 -16
- 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 +62 -18
- package/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +1010 -957
- 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 +8 -8
- 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 +28 -26
- 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 +1 -1
- package/src/sap/fe/core/converters/controls/Common/Form.ts +3 -3
- package/src/sap/fe/core/converters/controls/Common/KPI-dbg.js +6 -6
- 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 +15 -15
- package/src/sap/fe/core/converters/controls/Common/Table-dbg.js +97 -69
- 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 +161 -137
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions-dbg.js +3 -3
- 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 +10 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar-dbg.js +48 -44
- 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 +130 -86
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters-dbg.js +34 -26
- 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 +62 -45
- 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 +34 -13
- 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 +54 -20
- package/src/sap/fe/core/converters/helpers/Aggregation-dbg.js +3 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.js.map +1 -1
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +8 -0
- 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 +9 -8
- 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 +8 -7
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction-dbg.js +8 -7
- 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 +9 -6
- package/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +25 -33
- 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 +35 -35
- package/src/sap/fe/core/converters/templates/ObjectPageConverter-dbg.js +11 -4
- 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 +7 -1
- 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 +2 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.js.map +1 -1
- package/src/sap/fe/core/formatters/TableFormatter.ts +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter-dbg.js +5 -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 +6 -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 +6 -6
- package/src/sap/fe/core/helpers/BindingToolkit.js.map +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.ts +8 -8
- 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 +20 -18
- 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 +22 -23
- package/src/sap/fe/core/helpers/MessageStrip-dbg.js +4 -5
- package/src/sap/fe/core/helpers/MessageStrip.js +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.js.map +1 -1
- package/src/sap/fe/core/helpers/MessageStrip.ts +4 -4
- package/src/sap/fe/core/helpers/MetaModelFunction-dbg.js +354 -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 +408 -0
- package/src/sap/fe/core/helpers/ModelHelper-dbg.js +13 -13
- package/src/sap/fe/core/helpers/ModelHelper.js.map +1 -1
- package/src/sap/fe/core/helpers/ModelHelper.ts +13 -13
- 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 +26 -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 +19 -0
- package/src/sap/fe/core/helpers/SemanticDateOperators-dbg.js +93 -18
- 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 +70 -17
- 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/Synchronization-dbg.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.ts +2 -0
- package/src/sap/fe/core/helpers/TypeGuards-dbg.js +5 -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 +12 -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 +127 -125
- 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/messagebundle.properties +33 -0
- package/src/sap/fe/core/messagebundle_ar.properties +12 -10
- package/src/sap/fe/core/messagebundle_bg.properties +11 -9
- package/src/sap/fe/core/messagebundle_ca.properties +11 -9
- package/src/sap/fe/core/messagebundle_cs.properties +11 -9
- package/src/sap/fe/core/messagebundle_cy.properties +11 -9
- package/src/sap/fe/core/messagebundle_da.properties +11 -9
- package/src/sap/fe/core/messagebundle_de.properties +3 -1
- package/src/sap/fe/core/messagebundle_el.properties +11 -9
- package/src/sap/fe/core/messagebundle_en.properties +3 -1
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -0
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -3
- package/src/sap/fe/core/messagebundle_es.properties +11 -9
- package/src/sap/fe/core/messagebundle_es_MX.properties +11 -9
- package/src/sap/fe/core/messagebundle_et.properties +11 -9
- package/src/sap/fe/core/messagebundle_fi.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr.properties +11 -9
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +11 -9
- package/src/sap/fe/core/messagebundle_hu.properties +11 -9
- package/src/sap/fe/core/messagebundle_id.properties +3 -1
- package/src/sap/fe/core/messagebundle_it.properties +11 -9
- package/src/sap/fe/core/messagebundle_iw.properties +11 -9
- package/src/sap/fe/core/messagebundle_ja.properties +11 -9
- package/src/sap/fe/core/messagebundle_kk.properties +11 -9
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +11 -9
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +12 -10
- package/src/sap/fe/core/messagebundle_nl.properties +12 -10
- package/src/sap/fe/core/messagebundle_no.properties +11 -9
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +11 -9
- package/src/sap/fe/core/messagebundle_pt_PT.properties +11 -9
- package/src/sap/fe/core/messagebundle_ro.properties +3 -1
- package/src/sap/fe/core/messagebundle_ru.properties +3 -1
- package/src/sap/fe/core/messagebundle_sh.properties +11 -9
- package/src/sap/fe/core/messagebundle_sk.properties +11 -9
- package/src/sap/fe/core/messagebundle_sl.properties +11 -9
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +11 -9
- package/src/sap/fe/core/messagebundle_tr.properties +11 -9
- package/src/sap/fe/core/messagebundle_uk.properties +11 -9
- package/src/sap/fe/core/messagebundle_vi.properties +12 -10
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- 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 +4 -3
- 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 +15 -5
- 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 +3 -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 +29 -3
- package/src/sap/fe/core/services/ShellServicesFactory-dbg.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +14 -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 +502 -333
- package/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +18 -5
- 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 +41 -12
- 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/DataModelPathHelper-dbg.js +185 -86
- 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 +190 -82
- package/src/sap/fe/core/templating/DisplayModeFormatter-dbg.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper-dbg.js +2 -3
- 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 +1 -3
- 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/PropertyHelper-dbg.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters-dbg.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.ts +4 -0
- 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/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
|
@@ -495,4 +495,4 @@ sap.ui.define(["sap/fe/core/converters/helpers/BindingHelper", "sap/fe/core/conv
|
|
|
495
495
|
_exports.getRequiredExpressionForConnectedDataField = getRequiredExpressionForConnectedDataField;
|
|
496
496
|
return _exports;
|
|
497
497
|
}, false);
|
|
498
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREaXNwbGF5TW9kZSIsIm9EYXRhTW9kZWxPYmplY3RQYXRoIiwiRGlzcGxheU1vZGVGb3JtYXR0ZXIiLCJ0YXJnZXRPYmplY3QiLCJnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YUZpZWxkQ29udmVydGVkIiwiaXNFZGl0YWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsImdldEVkaXRhYmxlRXhwcmVzc2lvbiIsImJBc09iamVjdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJpZkVsc2UiLCJpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwicmVsYXRpdmVQYXRoIiwiZ2V0UmVsYXRpdmVQYXRocyIsImlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24iLCJpc1BhdGhVcGRhdGFibGUiLCJwcm9wZXJ0eVBhdGgiLCJwYXRoVmlzaXRvciIsInBhdGgiLCJuYXZpZ2F0aW9uUGF0aHMiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImNvbnZlcnRlZFR5cGVzIiwiZWRpdGFibGVFeHByZXNzaW9uIiwib3IiLCJub3QiLCJpc0NvbXB1dGVkIiwiaXNLZXkiLCJpc0ltbXV0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImFuZCIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZvcm1hdHRlciIsIm9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYWN0aXZpdHlFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJrZXlzIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXNFeHByZXNzaW9ucyIsImZvckVhY2giLCJrZXkiLCJrZXlFeHByZXNzaW9uIiwibmFtZSIsInB1c2giLCJmb3JtYXRSZXN1bHQiLCJnZXRFbmFibGVkRXhwcmVzc2lvbkFzT2JqZWN0IiwiZ2V0RW5hYmxlZEV4cHJlc3Npb24iLCJkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbiIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiZW5hYmxlZEV4cHJlc3Npb24iLCJnZXRFZGl0TW9kZSIsIm1lYXN1cmVSZWFkT25seSIsImFzT2JqZWN0IiwiZGF0YUZpZWxkQ29udmVydGVkIiwiJFR5cGUiLCJwcm9wZXJ0eSIsImFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwicmVzdWx0RXhwcmVzc2lvbiIsImlzVW5pdFJlYWRPbmx5IiwiaXNSZWFkT25seUV4cHJlc3Npb24iLCJpc0NvbnN0YW50IiwicmVhZE9ubHlFeHByZXNzaW9uIiwiZWRpdE1vZGVFeHByZXNzaW9uIiwiaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQiLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsImN1cnJlbmN5IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwibWVhc3VyZSIsIlVuaXQiLCJpc1RydXRoeSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIklzVG90YWwiLCJpZlVuaXRFZGl0YWJsZSIsInNFZGl0YWJsZVZhbHVlIiwic05vbkVkaXRhYmxlVmFsdWUiLCJnZXRGaWVsZERpc3BsYXkiLCJzVGFyZ2V0RGlzcGxheU1vZGUiLCJvQ29tcHV0ZWRFZGl0TW9kZSIsImhhc1ZhbHVlSGVscCIsImVxdWFsIiwiZ2V0VHlwZUNvbmZpZyIsImRhdGFUeXBlIiwib1RhcmdldE1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwidHlwZSIsInVuZGVmaW5lZCIsInByb3BlcnR5VHlwZUNvbmZpZyIsImNvbnN0cmFpbnRzIiwiZm9ybWF0T3B0aW9ucyIsImlzUHJvcGVydHkiLCJzY2FsZSIsIiRTY2FsZSIsInByZWNpc2lvbiIsIiRQcmVjaXNpb24iLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJtaW5pbXVtIiwiaXNOYU4iLCJWYWxpZGF0aW9uIiwiTWluaW11bSIsIm1heGltdW0iLCJNYXhpbXVtIiwiaXNEaWdpdFNlcXVlbmNlIiwiQ29tbW9uIiwiSXNEaWdpdFNlcXVlbmNlIiwiVjQiLCIkVjQiLCJwYXJzZUFzU3RyaW5nIiwiaW5kZXhPZiIsImVtcHR5U3RyaW5nIiwicGFyc2VLZWVwc0VtcHR5U3RyaW5nIiwiZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiaWdub3JlVW5pdENvbnN0cmFpbnQiLCJ1bml0IiwicmVsYXRpdmVMb2NhdGlvbiIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0b1N0cmluZyIsInNob3dNZWFzdXJlIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aFBlcmNlbnRhZ2UiLCJjb21wbGV4VHlwZSIsInVuaXRCaW5kaW5nRXhwcmVzc2lvbiIsImFkZFR5cGVJbmZvcm1hdGlvbiIsImdldEJpbmRpbmdGb3JVbml0T3JDdXJyZW5jeSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJzaG93TnVtYmVyIiwiZ2V0QmluZGluZ1dpdGhUaW1lem9uZSIsImhpZGVUaW1lem9uZUZvckVtcHR5VmFsdWVzIiwiZGF0ZUZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsIlRpbWV6b25lIiwic2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZSIsInNob3dEYXRlIiwic2hvd1RpbWV6b25lIiwiZ2V0QWxpZ25tZW50RXhwcmVzc2lvbiIsInNBbGlnbkRpc3BsYXkiLCJzQWxpZ25FZGl0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIm9Db250ZXh0Iiwib0ludGVyZmFjZSIsImNvbnRleHQiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInJlcXVpcmVzSUNvbnRleHQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaXNNdWx0aVZhbHVlRmllbGQiLCJvRGF0YU1vZGVsUGF0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibGVuZ3RoIiwiaGFzT25lVG9NYW55TmF2aWdhdGlvbiIsImZpbmRJbmRleCIsIm9OYXYiLCJfdHlwZSIsImlzQ29sbGVjdGlvbiIsImNvbnRleHRMb2NhdGlvbiIsIm9Db250ZXh0TmF2IiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QiLCJmb3JjZUVkaXRNb2RlIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwib1JlcXVpcmVkUHJvcGVydGllcyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyIsImRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbiIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiZWRpdE1vZGUiLCJpbmNsdWRlcyIsIklzQ3JlYXRlTW9kZSIsIm5vdEVxdWFsIiwicmV0dXJuRXhwcmVzc2lvbiIsImdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCIsImRhdGFGaWVsZE9iamVjdFBhdGgiLCJkYXRhIiwiRGF0YSIsIk9iamVjdCIsImRhdGFGaWVsZHMiLCJpc1JlcXVpcmVkRXhwcmVzc2lvbnMiLCJkYXRhRmllbGQiLCJWYWx1ZSIsIlRhcmdldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUlGb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBzaW5nbGV0b25QYXRoVmlzaXRvciwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0LCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZGRUeXBlSW5mb3JtYXRpb24sXG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRFRE1fVFlQRV9NQVBQSU5HLFxuXHRlcXVhbCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0aXNUcnV0aHksXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoVXBkYXRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuXHRpc0Rpc2FibGVkRXhwcmVzc2lvbixcblx0aXNOb25FZGl0YWJsZUV4cHJlc3Npb24sXG5cdGlzUmVhZE9ubHlFeHByZXNzaW9uLFxuXHRpc1JlcXVpcmVkRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGlzQ29tcHV0ZWQsXG5cdGlzSW1tdXRhYmxlLFxuXHRpc0tleSxcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2QgdXNlZCBieSB0aGUgY29udmVydGVyIHRvIHVzZSB0aGVtIGluIHRoZSB0ZW1wbGF0aW5nIHRocm91Z2ggdGhlIFVJRm9ybWF0dGVycy5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gRGlzcGxheU1vZGVGb3JtYXR0ZXIuRGlzcGxheU1vZGU7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcbmV4cG9ydCB0eXBlIE1ldGFNb2RlbENvbnRleHQgPSB7XG5cdCRraW5kOiBzdHJpbmc7XG5cdCRUeXBlOiBzdHJpbmc7XG5cdCROdWxsYWJsZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlID0ge1xuXHRjb250ZXh0OiBDb250ZXh0O1xuXHRhcmd1bWVudHM/OiBhbnlbXTtcblx0JCR2YWx1ZUFzUHJvbWlzZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlQ29uc3RyYWludHMgPSB7XG5cdHNjYWxlPzogbnVtYmVyO1xuXHRwcmVjaXNpb24/OiBudW1iZXI7XG5cdG1heExlbmd0aD86IG51bWJlcjtcblx0bnVsbGFibGU/OiBib29sZWFuO1xuXHRtaW5pbXVtPzogc3RyaW5nO1xuXHRtYXhpbXVtPzogc3RyaW5nO1xuXHRpc0RpZ2l0U2VxdWVuY2U/OiBib29sZWFuO1xuXHRWND86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlZm9ybWF0T3B0aW9ucyA9IHtcblx0cGFyc2VBc1N0cmluZz86IGJvb2xlYW47XG5cdGVtcHR5U3RyaW5nPzogc3RyaW5nO1xuXHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgY29uZmlnVHlwZSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRjb25zdHJhaW50czogY29uZmlnVHlwZUNvbnN0cmFpbnRzO1xuXHRmb3JtYXRPcHRpb25zOiBjb25maWdUeXBlZm9ybWF0T3B0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERpc3BsYXlNb2RlIHtcblx0cmV0dXJuIERpc3BsYXlNb2RlRm9ybWF0dGVyLmdldERpc3BsYXlNb2RlKG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgb0RhdGFNb2RlbE9iamVjdFBhdGgpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkOiBhbnkgPSBudWxsLFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldEVkaXRhYmxlRXhwcmVzc2lvbihcblx0XHRvUHJvcGVydHlQYXRoLFxuXHRcdG9EYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0b0RhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0dHJ1ZSxcblx0XHRpc0VkaXRhYmxlXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IHR5cGUgZGF0ZUZvcm1hdE9wdGlvbnMgPSB7XG5cdHNob3dEYXRlOiBzdHJpbmc7XG5cdHNob3dUaW1lOiBzdHJpbmc7XG5cdHNob3dUaW1lem9uZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGV4cHJlc3Npb24gdG8gZ2VuZXJhdGUgYW4gXCJlZGl0YWJsZVwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIG9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBwYXRoIHRvIHRoaXMgcHJvcGVydHkgb2JqZWN0XG4gKiBAcGFyYW0gYkFzT2JqZWN0IFdoZXRoZXIgb3Igbm90IHRoaXMgc2hvdWxkIGJlIHJldHVybmVkIGFzIGFuIG9iamVjdCBvciBhIGJpbmRpbmcgc3RyaW5nXG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvcGVydHkgaXMgZWRpdGFibGUgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0b0RhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpc0VkaXRhYmxlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBVSS5Jc0VkaXRhYmxlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihmYWxzZSk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZEVkaXRhYmxlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgaXNFZGl0YWJsZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMob0RhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBFZGl0YWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBmaWVsZCBjb250cm9sIGV4cHJlc3Npb25cblx0Ly8gSWYgdGhlIEZpZWxkIGNvbnRyb2wgaXMgc3RhdGljYWxseSBpbiBSZWFkT25seSBvciBJbmFwcGxpY2FibGUgKGRpc2FibGVkKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEga2V5IC0+IG5vdCBlZGl0YWJsZSBleGNlcHQgaW4gY3JlYXRpb24gaWYgbm90IGNvbXB1dGVkXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBjb21wdXRlZCAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1cGRhdGFibGUgLT4gbm90IGVkaXRhYmxlXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBpbW11dGFibGUgLT4gbm90IGVkaXRhYmxlIGV4Y2VwdCBpbiBjcmVhdGlvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBhIHBhdGggcmVzb2x2aW5nIHRvIFJlYWRPbmx5IG9yIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpICg8PSAxKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gRWxzZSwgdG8gYmUgZWRpdGFibGUgeW91IG5lZWRcblx0Ly8gaW1tdXRhYmxlIGFuZCBrZXkgd2hpbGUgaW4gdGhlIGNyZWF0aW9uIHJvd1xuXHQvLyB1aS9pc0VkaXRhYmxlXG5cdGNvbnN0IGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBpc1BhdGhVcGRhdGFibGUob0RhdGFNb2RlbE9iamVjdFBhdGgsIHtcblx0XHRwcm9wZXJ0eVBhdGg6IG9Qcm9wZXJ0eVBhdGgsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBvRGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcywgbmF2aWdhdGlvblBhdGhzKVxuXHR9KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdG9yKFxuXHRcdFx0bm90KGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pLFxuXHRcdFx0aXNDb21wdXRlZChvUHJvcGVydHkpLFxuXHRcdFx0aXNLZXkob1Byb3BlcnR5KSxcblx0XHRcdGlzSW1tdXRhYmxlKG9Qcm9wZXJ0eSksXG5cdFx0XHRpc05vbkVkaXRhYmxlRXhwcmVzc2lvbihvUHJvcGVydHksIHJlbGF0aXZlUGF0aClcblx0XHQpLFxuXHRcdGlmRWxzZShvcihpc0NvbXB1dGVkKG9Qcm9wZXJ0eSksIGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKSksIGZhbHNlLCBVSS5Jc1RyYW5zaWVudEJpbmRpbmcpLFxuXHRcdGlzRWRpdGFibGVcblx0KTtcblx0aWYgKGJBc09iamVjdCkge1xuXHRcdHJldHVybiBhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9ybWF0dGVyOiBhbnlcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3Qgb2JqZWN0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGFjdGl2aXR5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGAvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzJHtvYmplY3RQYXRofWAsIFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IGtleXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlPy5rZXlzO1xuXHRjb25zdCBrZXlzRXhwcmVzc2lvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+W10gPSBbXTtcblx0a2V5cz8uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0Y29uc3Qga2V5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGtleS5uYW1lKTtcblx0XHRrZXlzRXhwcmVzc2lvbnMucHVzaChrZXlFeHByZXNzaW9uKTtcblx0fSk7XG5cdHJldHVybiBmb3JtYXRSZXN1bHQoW2FjdGl2aXR5RXhwcmVzc2lvbiwgLi4ua2V5c0V4cHJlc3Npb25zXSwgZm9ybWF0dGVyKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RW5hYmxlZEV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBnZXRFbmFibGVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCB0cnVlLCBvRGF0YU1vZGVsT2JqZWN0UGF0aCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZW5hYmxlZFwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIE9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIGJBc09iamVjdCBXaGV0aGVyIG9yIG5vdCB0aGlzIHNob3VsZCBiZSByZXR1cm5lZCBhcyBhbiBvYmplY3Qgb3IgYSBiaW5kaW5nIHN0cmluZ1xuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGRldGVybWluZSBpZiBhIHByb3BlcnR5IGlzIGVuYWJsZWQgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFbmFibGVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRiQXNPYmplY3QgPSBmYWxzZSxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0cnVlKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAob0RhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRyZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKG9EYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRsZXQgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9IGNvbnN0YW50KHRydWUpO1xuXHRpZiAob0RhdGFGaWVsZENvbnZlcnRlZCAhPT0gbnVsbCkge1xuXHRcdGRhdGFGaWVsZEVuYWJsZWRFeHByZXNzaW9uID0gaWZFbHNlKGlzRGlzYWJsZWRFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdC8vIEVuYWJsZW1lbnQgZGVwZW5kcyBvbiB0aGUgZmllbGQgY29udHJvbCBleHByZXNzaW9uXG5cdC8vIElmIHRoZSBGaWVsZCBjb250cm9sIGlzIHN0YXRpY2FsbHkgaW4gSW5hcHBsaWNhYmxlIChkaXNhYmxlZCkgLT4gbm90IGVuYWJsZWRcblx0Y29uc3QgZW5hYmxlZEV4cHJlc3Npb24gPSBpZkVsc2UoaXNEaXNhYmxlZEV4cHJlc3Npb24ob1Byb3BlcnR5LCByZWxhdGl2ZVBhdGgpLCBmYWxzZSwgdHJ1ZSk7XG5cdGlmIChiQXNPYmplY3QpIHtcblx0XHRyZXR1cm4gYW5kKGVuYWJsZWRFeHByZXNzaW9uLCBkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChlbmFibGVkRXhwcmVzc2lvbiwgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb24pKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZWRpdE1vZGVcIiBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgbGlzdCBvZiBkYXRhIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgaW52b2x2ZWQgdG8gcmVhY2ggdGhhdCBwcm9wZXJ0eVxuICogQHBhcmFtIG1lYXN1cmVSZWFkT25seSBXaGV0aGVyIHdlIHNob3VsZCBzZXQgVW9NIC8gY3VycmVuY3kgZmllbGQgbW9kZSB0byByZWFkIG9ubHlcbiAqIEBwYXJhbSBhc09iamVjdCBXaGV0aGVyIHdlIHNob3VsZCByZXR1cm4gdGhpcyBhcyBhbiBleHByZXNzaW9uIG9yIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0gZGF0YUZpZWxkQ29udmVydGVkIFRoZSBkYXRhRmllbGQgb2JqZWN0XG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBwcm9wZXJ0eSBlZGl0IG1vZGUsIGNvbXBsaWFudCB3aXRoIHRoZSBNREMgRmllbGQgZGVmaW5pdGlvbiBvZiBlZGl0TW9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRNb2RlID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0bWVhc3VyZVJlYWRPbmx5OiBib29sZWFuID0gZmFsc2UsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2UsXG5cdGRhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmICghcHJvcGVydHlQYXRoIHx8IHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIgfHwgZGF0YUZpZWxkQ29udmVydGVkPy4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0cmV0dXJuIFwiRGlzcGxheVwiO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgJiYgcHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChwcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGVuYWJsZWQgPT4gRGlzYWJsZWRcblx0Ly8gaWYgdGhlIHByb3BlcnR5IGlzIGVuYWJsZWQgJiYgbm90IGVkaXRhYmxlID0+IFJlYWRPbmx5XG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBlbmFibGVkICYmIGVkaXRhYmxlID0+IEVkaXRhYmxlXG5cdC8vIElmIHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQgdW5pdCwgYW5kIGl0IGhhcyBhIGZpZWxkIGNvbnRyb2wgYWxzbyB1c2UgY29uc2lkZXIgdGhlIGZvbGxvd2luZ1xuXHQvLyBpZiB0aGUgdW5pdCBmaWVsZCBjb250cm9sIGlzIHJlYWRvbmx5IC0+IEVkaXRhYmxlUmVhZE9ubHlcblx0Ly8gb3RoZXJ3aXNlIC0+IEVkaXRhYmxlXG5cdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IGdldEVkaXRhYmxlRXhwcmVzc2lvbkFzT2JqZWN0KHByb3BlcnR5UGF0aCwgZGF0YUZpZWxkQ29udmVydGVkLCBkYXRhTW9kZWxPYmplY3RQYXRoLCBpc0VkaXRhYmxlKTtcblxuXHRjb25zdCBlbmFibGVkRXhwcmVzc2lvbiA9IGdldEVuYWJsZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGRDb252ZXJ0ZWQsIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBhc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KHByb3BlcnR5KTtcblx0Y29uc3QgdW5pdFByb3BlcnR5ID0gYXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdGxldCByZXN1bHRFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGNvbnN0YW50KFwiRWRpdGFibGVcIik7XG5cdGlmICh1bml0UHJvcGVydHkpIHtcblx0XHRjb25zdCBpc1VuaXRSZWFkT25seSA9IGlzUmVhZE9ubHlFeHByZXNzaW9uKHVuaXRQcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0XHRyZXN1bHRFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoaXNVbml0UmVhZE9ubHksIGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSwgYW5kKGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSksIG5vdChVSS5Jc1RyYW5zaWVudEJpbmRpbmcpKSwgbWVhc3VyZVJlYWRPbmx5KSxcblx0XHRcdGlmRWxzZSghaXNDb25zdGFudChpc1VuaXRSZWFkT25seSkgJiYgaXNVbml0UmVhZE9ubHksIFwiRWRpdGFibGVSZWFkT25seVwiLCBcIkVkaXRhYmxlRGlzcGxheVwiKSxcblx0XHRcdFwiRWRpdGFibGVcIlxuXHRcdCk7XG5cdH1cblx0Y29uc3QgcmVhZE9ubHlFeHByZXNzaW9uID0gb3IoaXNSZWFkT25seUV4cHJlc3Npb24ocHJvcGVydHksIHJlbGF0aXZlUGF0aCksIGlzUmVhZE9ubHlFeHByZXNzaW9uKGRhdGFGaWVsZENvbnZlcnRlZCkpO1xuXG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBmcm9tIGEgbm9uLXVwZGF0YWJsZSBlbnRpdHkgPT4gUmVhZCBvbmx5IG1vZGUsIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgaXMgaWdub3JlZFxuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgZnJvbSBhbiB1cGRhdGFibGUgZW50aXR5ID0+IHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgZXhwcmVzc2lvblxuXHRjb25zdCBlZGl0TW9kZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0ZW5hYmxlZEV4cHJlc3Npb24sXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdFx0cmVzdWx0RXhwcmVzc2lvbixcblx0XHRcdGlmRWxzZShhbmQoIWlzQ29uc3RhbnQocmVhZE9ubHlFeHByZXNzaW9uKSAmJiByZWFkT25seUV4cHJlc3Npb24sIGlzRWRpdGFibGUpLCBcIlJlYWRPbmx5XCIsIFwiRGlzcGxheVwiKVxuXHRcdCksXG5cdFx0aWZFbHNlKGlzRWRpdGFibGUsIFwiRGlzYWJsZWRcIiwgXCJEaXNwbGF5XCIpXG5cdCk7XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBlZGl0TW9kZUV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGVkaXRNb2RlRXhwcmVzc2lvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRjb25zdCBjdXJyZW5jeSA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0Y29uc3QgbWVhc3VyZSA9IGN1cnJlbmN5ID8gY3VycmVuY3kgOiBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0aWYgKG1lYXN1cmUpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ob3IoaXNUcnV0aHkoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG1lYXN1cmUpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KSwgbm90KFVJLklzVG90YWwpKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRydWUpKTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGlmVW5pdEVkaXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdHNFZGl0YWJsZVZhbHVlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyxcblx0c05vbkVkaXRhYmxlVmFsdWU6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc05vbkVkaXRhYmxlVmFsdWUpO1xuXHR9XG5cdGNvbnN0IGlzVW5pdFJlYWRPbmx5ID0gaXNSZWFkT25seUV4cHJlc3Npb24odW5pdFByb3BlcnR5KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKFxuXHRcdG9yKCFpc0NvbnN0YW50KGlzVW5pdFJlYWRPbmx5KSwgbm90KGlzVW5pdFJlYWRPbmx5KSksXG5cdFx0bm90KGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSksXG5cdFx0bm90KGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSkpXG5cdCk7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZWRpdGFibGVFeHByZXNzaW9uLCBzRWRpdGFibGVWYWx1ZSwgc05vbkVkaXRhYmxlVmFsdWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZERpc3BsYXkgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0c1RhcmdldERpc3BsYXlNb2RlOiBzdHJpbmcsXG5cdG9Db21wdXRlZEVkaXRNb2RlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBvUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblxuXHRyZXR1cm4gaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSlcblx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKHNUYXJnZXREaXNwbGF5TW9kZSlcblx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJFZGl0YWJsZVwiKSwgXCJWYWx1ZVwiLCBzVGFyZ2V0RGlzcGxheU1vZGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlQ29uZmlnID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBkYXRhVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcblx0Y29uc3Qgb1RhcmdldE1hcHBpbmcgPSBFRE1fVFlQRV9NQVBQSU5HWyhvUHJvcGVydHkgYXMgUHJvcGVydHkpPy50eXBlXSB8fCAoZGF0YVR5cGUgPyBFRE1fVFlQRV9NQVBQSU5HW2RhdGFUeXBlXSA6IHVuZGVmaW5lZCk7XG5cdGNvbnN0IHByb3BlcnR5VHlwZUNvbmZpZzogY29uZmlnVHlwZSA9IHtcblx0XHR0eXBlOiBvVGFyZ2V0TWFwcGluZy50eXBlLFxuXHRcdGNvbnN0cmFpbnRzOiB7fSxcblx0XHRmb3JtYXRPcHRpb25zOiB7fVxuXHR9O1xuXHRpZiAoaXNQcm9wZXJ0eShvUHJvcGVydHkpKSB7XG5cdFx0cHJvcGVydHlUeXBlQ29uZmlnLmNvbnN0cmFpbnRzID0ge1xuXHRcdFx0c2NhbGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kU2NhbGUgPyBvUHJvcGVydHkuc2NhbGUgOiB1bmRlZmluZWQsXG5cdFx0XHRwcmVjaXNpb246IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kUHJlY2lzaW9uID8gb1Byb3BlcnR5LnByZWNpc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heExlbmd0aDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRNYXhMZW5ndGggPyBvUHJvcGVydHkubWF4TGVuZ3RoIDogdW5kZWZpbmVkLFxuXHRcdFx0bnVsbGFibGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kTnVsbGFibGUgPyBvUHJvcGVydHkubnVsbGFibGUgOiB1bmRlZmluZWQsXG5cdFx0XHRtaW5pbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRtYXhpbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRpc0RpZ2l0U2VxdWVuY2U6XG5cdFx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZy50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiICYmXG5cdFx0XHRcdG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiXSAmJlxuXHRcdFx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNEaWdpdFNlcXVlbmNlXG5cdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRWNDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRWNCA/IHRydWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHR9XG5cdHByb3BlcnR5VHlwZUNvbmZpZy5mb3JtYXRPcHRpb25zID0ge1xuXHRcdHBhcnNlQXNTdHJpbmc6XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnRcIikgPT09IDAgfHxcblx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZz8udHlwZT8uaW5kZXhPZihcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiKSA9PT0gMFxuXHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdGVtcHR5U3RyaW5nOlxuXHRcdFx0cHJvcGVydHlUeXBlQ29uZmlnPy50eXBlPy5pbmRleE9mKFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50XCIpID09PSAwIHx8XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIikgPT09IDBcblx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdHBhcnNlS2VlcHNFbXB0eVN0cmluZzogcHJvcGVydHlUeXBlQ29uZmlnLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCIgPyB0cnVlIDogdW5kZWZpbmVkXG5cdH07XG5cdHJldHVybiBwcm9wZXJ0eVR5cGVDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGlnbm9yZVVuaXRDb25zdHJhaW50PzogYm9vbGVhbixcblx0Zm9ybWF0T3B0aW9ucz86IGFueVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiKSB7XG5cdFx0aWYgKGZvcm1hdE9wdGlvbnM/LnNob3dNZWFzdXJlID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdFx0fVxuXHRcdHJldHVybiBmb3JtYXRSZXN1bHQoW3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aFBlcmNlbnRhZ2UpO1xuXHR9XG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gdW5pdCA/IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiIDogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiO1xuXHR1bml0ID0gdW5pdCA/IHVuaXQgOiAob1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IGFzIGFueSk7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh1bml0IGFzIGFueSkuJHRhcmdldFxuXHRcdD8gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihcblx0XHRcdFx0KHVuaXQgYXMgYW55KS4kdGFyZ2V0LFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odW5pdCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGlmICh1bml0Py50b1N0cmluZygpID09PSBcIiVcIikge1xuXHRcdHJldHVybiBjb25zdGFudChcIiVcIik7XG5cdH1cblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cblx0Y29uc3QgY29tcGxleFR5cGUgPSB1bml0ID8gXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIgOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IChvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgYXMgYW55KTtcblx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uID0gKHVuaXQgYXMgYW55KS4kdGFyZ2V0XG5cdFx0PyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKFxuXHRcdFx0XHQodW5pdCBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCAgKVxuXHRcdDogKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIHRydWUpO1xuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCB7XG5cdFx0cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlLFxuXHRcdGVtcHR5U3RyaW5nOiBcIlwiLFxuXHRcdHNob3dOdW1iZXI6IGZhbHNlXG5cdH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRpbWV6b25lID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0aWdub3JlVW5pdENvbnN0cmFpbnQgPSBmYWxzZSxcblx0aGlkZVRpbWV6b25lRm9yRW1wdHlWYWx1ZXMgPSBmYWxzZSxcblx0ZGF0ZUZvcm1hdE9wdGlvbnM/OiBkYXRlRm9ybWF0T3B0aW9uc1xuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGNvbnN0IHRpbWV6b25lID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gXCJzYXAuZmUuY29yZS50eXBlLkRhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXRcblx0XHQ/IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24oXG5cdFx0XHRcdCh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih0aW1lem9uZSwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRpbWV6b25lLCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdGxldCBmb3JtYXRPcHRpb25zID0ge307XG5cdGlmIChoaWRlVGltZXpvbmVGb3JFbXB0eVZhbHVlcykge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlczogZmFsc2Vcblx0XHR9O1xuXHR9XG5cblx0aWYgKGRhdGVGb3JtYXRPcHRpb25zPy5zaG93VGltZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWU6IGRhdGVGb3JtYXRPcHRpb25zLnNob3dUaW1lID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHRydWUgfSB9O1xuXHR9XG5cdGlmIChkYXRlRm9ybWF0T3B0aW9ucz8uc2hvd0RhdGUpIHtcblx0XHRmb3JtYXRPcHRpb25zID0geyAuLi5mb3JtYXRPcHRpb25zLCAuLi57IHNob3dEYXRlOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93RGF0ZSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB0cnVlIH0gfTtcblx0fVxuXHRpZiAoZGF0ZUZvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWV6b25lOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93VGltZXpvbmUgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdHJ1ZSB9IH07XG5cdH1cblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGlnbm1lbnRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvQ29tcHV0ZWRFZGl0TW9kZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdHNBbGlnbkRpc3BsYXk6IHN0cmluZyA9IFwiQmVnaW5cIixcblx0c0FsaWduRWRpdDogc3RyaW5nID0gXCJCZWdpblwiXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJEaXNwbGF5XCIpLCBzQWxpZ25EaXNwbGF5LCBzQWxpZ25FZGl0KSk7XG59O1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGNvbnZlcnRlckNvbnRleHQgZnJvbSB0aGUgbWV0YW1vZGVsIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBvcmlnaW5hbCBtZXRhbW9kZWwgY29udGV4dFxuICogQHBhcmFtIG9JbnRlcmZhY2UgVGhlIGN1cnJlbnQgdGVtcGxhdGluZyBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgQ29udmVydGVyQ29udGV4dCByZXByZXNlbnRpbmcgdGhhdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnZlcnRlckNvbnRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IG9iamVjdCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gY29udmVydE1ldGFNb2RlbENvbnRleHQob0ludGVyZmFjZS5jb250ZXh0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn07XG5nZXRDb252ZXJ0ZXJDb250ZXh0LnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRhdGEgbW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBpbnZvbHZlZCBmcm9tIHRoZSBtZXRhbW9kZWwgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIG9yaWdpbmFsIE9EYXRhTWV0YU1vZGVsIGNvbnRleHRcbiAqIEBwYXJhbSBvSW50ZXJmYWNlIFRoZSBjdXJyZW50IHRlbXBsYXRpbmcgY29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZW50aXR5c2V0cyBhbmQgbmF2cHJvcGVydGllcyB0aGF0IGFyZSBpbnZvbHZlZCB0byBnZXQgdG8gYSBzcGVjaWZpYyBvYmplY3QgaW4gdGhlIG1ldGFtb2RlbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9JbnRlcmZhY2UuY29udGV4dCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aC5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHJlZmVyZW5jZWQgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGggVGhlIGRhdGEgbW9kZWwgcGF0aCB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvblxuICovXG5leHBvcnQgY29uc3QgaXNNdWx0aVZhbHVlRmllbGQgPSBmdW5jdGlvbiAob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBib29sZWFuIHtcblx0aWYgKG9EYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRjb25zdCBoYXNPbmVUb01hbnlOYXZpZ2F0aW9uID1cblx0XHRcdG9EYXRhTW9kZWxQYXRoPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoKG9OYXYpID0+IHtcblx0XHRcdFx0aWYgKG9OYXYuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgb05hdi5pc0NvbGxlY3Rpb24pIHtcblx0XHRcdFx0XHRpZiAob0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvL3dlIGNoZWNrIHRoZSBvbmUgdG8gbWFueSBuYXYgaXMgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgY29udGV4dFxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0b0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoXG5cdFx0XHRcdFx0XHRcdFx0KG9Db250ZXh0TmF2KSA9PiBvQ29udGV4dE5hdi5uYW1lID09PSBvTmF2Lm5hbWVcblx0XHRcdFx0XHRcdFx0KSA9PT0gLTFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pID4gLTE7XG5cdFx0aWYgKGhhc09uZVRvTWFueU5hdmlnYXRpb24pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkFzT2JqZWN0ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGRDb252ZXJ0ZWQ/OiBhbnksXG5cdGZvcmNlRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldFJlcXVpcmVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCBmb3JjZUVkaXRNb2RlLCB0cnVlKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRmb3JjZUVkaXRNb2RlOiBib29sZWFuID0gZmFsc2UsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRvUmVxdWlyZWRQcm9wZXJ0aWVzOiBhbnkgPSB7fSxcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMgPSBvUmVxdWlyZWRQcm9wZXJ0aWVzLnJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnM7XG5cdGNvbnN0IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zID0gb1JlcXVpcmVkUHJvcGVydGllcy5yZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zO1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQoZmFsc2UpKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkUmVxdWlyZWRFeHByZXNzaW9uID0gaXNSZXF1aXJlZEV4cHJlc3Npb24ob0RhdGFGaWVsZENvbnZlcnRlZCk7XG5cdH1cblx0bGV0IHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQoZmFsc2UpO1xuXHRsZXQgcmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBjb25zdGFudChmYWxzZSk7XG5cblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHQvLyBFbmFibGVtZW50IGRlcGVuZHMgb24gdGhlIGZpZWxkIGNvbnRyb2wgZXhwcmVzc2lvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBzdGF0aWNhbGx5IGluIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpIC0+IG5vdCBlbmFibGVkXG5cdGNvbnN0IHJlcXVpcmVkRXhwcmVzc2lvbiA9IGlzUmVxdWlyZWRFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0Y29uc3QgZWRpdE1vZGUgPSBmb3JjZUVkaXRNb2RlIHx8IFVJLklzRWRpdGFibGU7XG5cdGlmIChhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucz8uaW5jbHVkZXMoKG9Qcm9wZXJ0eVBhdGggYXMgYW55KS5uYW1lKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbiA9IGFuZChjb25zdGFudCh0cnVlKSwgVUkuSXNDcmVhdGVNb2RlKTtcblx0fVxuXHRpZiAoYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnM/LmluY2x1ZGVzKChvUHJvcGVydHlQYXRoIGFzIGFueSkubmFtZSkpIHtcblx0XHRyZXF1aXJlZFByb3BlcnR5RnJvbVVwZGF0ZVJlc3RyaWN0aW9uc0V4cHJlc3Npb24gPSBhbmQoY29uc3RhbnQodHJ1ZSksIG5vdEVxdWFsKFVJLklzQ3JlYXRlTW9kZSwgdHJ1ZSkpO1xuXHR9XG5cdGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBvcihcblx0XHRhbmQob3IocmVxdWlyZWRFeHByZXNzaW9uLCBkYXRhRmllbGRSZXF1aXJlZEV4cHJlc3Npb24pLCBlZGl0TW9kZSksXG5cdFx0cmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uLFxuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tVXBkYXRlUmVzdHJpY3Rpb25zRXhwcmVzc2lvblxuXHQpO1xuXHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIHJldHVybkV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCA9IGZ1bmN0aW9uIChcblx0ZGF0YUZpZWxkT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBkYXRhID0gZGF0YUZpZWxkT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5EYXRhO1xuXHRjb25zdCBrZXlzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXMoZGF0YSk7XG5cdGNvbnN0IGRhdGFGaWVsZHMgPSBbXTtcblx0bGV0IHByb3BlcnR5UGF0aDtcblx0Y29uc3QgaXNSZXF1aXJlZEV4cHJlc3Npb25zOiAoQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pW10gfCB1bmRlZmluZWQgPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdGlmIChkYXRhW2tleV1bXCIkVHlwZVwiXSAmJiBkYXRhW2tleV1bXCIkVHlwZVwiXS5pbmRleE9mKFwiRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdGRhdGFGaWVsZHMucHVzaChkYXRhW2tleV0pO1xuXHRcdH1cblx0fVxuXHRmb3IgKGNvbnN0IGRhdGFGaWVsZCBvZiBkYXRhRmllbGRzKSB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YUZpZWxkLlZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoID0gZGF0YUZpZWxkLlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhRmllbGQuVGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aCA9IGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHR9XG5cdFx0aXNSZXF1aXJlZEV4cHJlc3Npb25zLnB1c2goZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGQsIGZhbHNlKSk7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG9yKC4uLihpc1JlcXVpcmVkRXhwcmVzc2lvbnMgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10pKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQXlGTyxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsb0JBQXlDLEVBQWU7SUFDL0YsT0FBT0Msb0JBQW9CLENBQUNGLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNFLFlBQVksRUFBRUYsb0JBQW9CLENBQUM7RUFDcEcsQ0FBQztFQUFDO0VBQ0ssTUFBTUcsNkJBQTZCLEdBQUcsVUFDNUNDLGFBQXVDLEVBSUg7SUFBQSxJQUhwQ0MsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNNLFVBQTZDLHVFQUFHQyxFQUFFLENBQUNDLFVBQVU7SUFFN0QsT0FBT0MscUJBQXFCLENBQzNCTCxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkwsb0JBQW9CLEVBQ3BCLElBQUksRUFDSk0sVUFBVSxDQUNWO0VBQ0YsQ0FBQztFQUFDO0VBUUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNRyxxQkFBcUIsR0FBRyxVQUNwQ0wsYUFBdUMsRUFLZ0M7SUFBQSxJQUp2RUMsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNVLFNBQWtCLHVFQUFHLEtBQUs7SUFBQSxJQUMxQkosVUFBNkMsdUVBQUdDLEVBQUUsQ0FBQ0MsVUFBVTtJQUU3RCxJQUFJLENBQUNKLGFBQWEsSUFBSSxPQUFPQSxhQUFhLEtBQUssUUFBUSxF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
|
|
498
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXREaXNwbGF5TW9kZSIsIm9EYXRhTW9kZWxPYmplY3RQYXRoIiwiRGlzcGxheU1vZGVGb3JtYXR0ZXIiLCJ0YXJnZXRPYmplY3QiLCJnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCIsIm9Qcm9wZXJ0eVBhdGgiLCJvRGF0YUZpZWxkQ29udmVydGVkIiwiaXNFZGl0YWJsZSIsIlVJIiwiSXNFZGl0YWJsZSIsImdldEVkaXRhYmxlRXhwcmVzc2lvbiIsImJBc09iamVjdCIsImNvbXBpbGVFeHByZXNzaW9uIiwiZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uIiwiY29uc3RhbnQiLCJpZkVsc2UiLCJpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiIsIm9Qcm9wZXJ0eSIsImlzUGF0aEV4cHJlc3Npb24iLCIkdGFyZ2V0IiwicmVsYXRpdmVQYXRoIiwiZ2V0UmVsYXRpdmVQYXRocyIsImlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24iLCJpc1BhdGhVcGRhdGFibGUiLCJwcm9wZXJ0eVBhdGgiLCJwYXRoVmlzaXRvciIsInBhdGgiLCJuYXZpZ2F0aW9uUGF0aHMiLCJzaW5nbGV0b25QYXRoVmlzaXRvciIsImNvbnZlcnRlZFR5cGVzIiwiZWRpdGFibGVFeHByZXNzaW9uIiwib3IiLCJub3QiLCJpc0NvbXB1dGVkIiwiaXNLZXkiLCJpc0ltbXV0YWJsZSIsIklzVHJhbnNpZW50QmluZGluZyIsImFuZCIsImdldENvbGxhYm9yYXRpb25FeHByZXNzaW9uIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsImZvcm1hdHRlciIsIm9iamVjdFBhdGgiLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYWN0aXZpdHlFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJrZXlzIiwidGFyZ2V0RW50aXR5VHlwZSIsImtleXNFeHByZXNzaW9ucyIsImZvckVhY2giLCJrZXkiLCJrZXlFeHByZXNzaW9uIiwibmFtZSIsInB1c2giLCJmb3JtYXRSZXN1bHQiLCJnZXRFbmFibGVkRXhwcmVzc2lvbkFzT2JqZWN0IiwiZ2V0RW5hYmxlZEV4cHJlc3Npb24iLCJkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbiIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiZW5hYmxlZEV4cHJlc3Npb24iLCJnZXRFZGl0TW9kZSIsIm1lYXN1cmVSZWFkT25seSIsImFzT2JqZWN0IiwiZGF0YUZpZWxkQ29udmVydGVkIiwiJFR5cGUiLCJwcm9wZXJ0eSIsImFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5IiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkiLCJ1bml0UHJvcGVydHkiLCJnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5IiwicmVzdWx0RXhwcmVzc2lvbiIsImlzVW5pdFJlYWRPbmx5IiwiaXNSZWFkT25seUV4cHJlc3Npb24iLCJpc0NvbnN0YW50IiwicmVhZE9ubHlFeHByZXNzaW9uIiwiZWRpdE1vZGVFeHByZXNzaW9uIiwiaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQiLCJvUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwib1Byb3BlcnR5RGVmaW5pdGlvbiIsImN1cnJlbmN5IiwiYW5ub3RhdGlvbnMiLCJNZWFzdXJlcyIsIklTT0N1cnJlbmN5IiwibWVhc3VyZSIsIlVuaXQiLCJpc1RydXRoeSIsImdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiIsIklzVG90YWwiLCJpZlVuaXRFZGl0YWJsZSIsInNFZGl0YWJsZVZhbHVlIiwic05vbkVkaXRhYmxlVmFsdWUiLCJnZXRGaWVsZERpc3BsYXkiLCJzVGFyZ2V0RGlzcGxheU1vZGUiLCJvQ29tcHV0ZWRFZGl0TW9kZSIsImhhc1ZhbHVlSGVscCIsImVxdWFsIiwiZ2V0VHlwZUNvbmZpZyIsImRhdGFUeXBlIiwib1RhcmdldE1hcHBpbmciLCJFRE1fVFlQRV9NQVBQSU5HIiwidHlwZSIsInVuZGVmaW5lZCIsInByb3BlcnR5VHlwZUNvbmZpZyIsImNvbnN0cmFpbnRzIiwiZm9ybWF0T3B0aW9ucyIsImlzUHJvcGVydHkiLCJzY2FsZSIsIiRTY2FsZSIsInByZWNpc2lvbiIsIiRQcmVjaXNpb24iLCJtYXhMZW5ndGgiLCIkTWF4TGVuZ3RoIiwibnVsbGFibGUiLCIkTnVsbGFibGUiLCJtaW5pbXVtIiwiaXNOYU4iLCJWYWxpZGF0aW9uIiwiTWluaW11bSIsIm1heGltdW0iLCJNYXhpbXVtIiwiaXNEaWdpdFNlcXVlbmNlIiwiQ29tbW9uIiwiSXNEaWdpdFNlcXVlbmNlIiwiVjQiLCIkVjQiLCJwYXJzZUFzU3RyaW5nIiwiaW5kZXhPZiIsImVtcHR5U3RyaW5nIiwicGFyc2VLZWVwc0VtcHR5U3RyaW5nIiwiZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uIiwiaWdub3JlVW5pdENvbnN0cmFpbnQiLCJ1bml0IiwicmVsYXRpdmVMb2NhdGlvbiIsImZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24iLCJ0b1N0cmluZyIsInNob3dNZWFzdXJlIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aFBlcmNlbnRhZ2UiLCJjb21wbGV4VHlwZSIsInVuaXRCaW5kaW5nRXhwcmVzc2lvbiIsImFkZFR5cGVJbmZvcm1hdGlvbiIsImdldEJpbmRpbmdGb3JVbml0T3JDdXJyZW5jeSIsImdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJzaG93TnVtYmVyIiwiZ2V0QmluZGluZ1dpdGhUaW1lem9uZSIsImhpZGVUaW1lem9uZUZvckVtcHR5VmFsdWVzIiwiZGF0ZUZvcm1hdE9wdGlvbnMiLCJ0aW1lem9uZSIsIlRpbWV6b25lIiwic2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZSIsInNob3dEYXRlIiwic2hvd1RpbWV6b25lIiwiZ2V0QWxpZ25tZW50RXhwcmVzc2lvbiIsInNBbGlnbkRpc3BsYXkiLCJzQWxpZ25FZGl0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIm9Db250ZXh0Iiwib0ludGVyZmFjZSIsImNvbnRleHQiLCJjb252ZXJ0TWV0YU1vZGVsQ29udGV4dCIsInJlcXVpcmVzSUNvbnRleHQiLCJnZXREYXRhTW9kZWxPYmplY3RQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiaXNNdWx0aVZhbHVlRmllbGQiLCJvRGF0YU1vZGVsUGF0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibGVuZ3RoIiwiaGFzT25lVG9NYW55TmF2aWdhdGlvbiIsImZpbmRJbmRleCIsIm9OYXYiLCJfdHlwZSIsImlzQ29sbGVjdGlvbiIsImNvbnRleHRMb2NhdGlvbiIsIm9Db250ZXh0TmF2IiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QiLCJmb3JjZUVkaXRNb2RlIiwiZ2V0UmVxdWlyZWRFeHByZXNzaW9uIiwib1JlcXVpcmVkUHJvcGVydGllcyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucyIsImFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zIiwicmVxdWlyZWRQcm9wZXJ0aWVzRnJvbVVwZGF0ZVJlc3RyaWN0aW9ucyIsImRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbiIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uIiwicmVxdWlyZWRFeHByZXNzaW9uIiwiZWRpdE1vZGUiLCJpbmNsdWRlcyIsIklzQ3JlYXRlTW9kZSIsIm5vdEVxdWFsIiwicmV0dXJuRXhwcmVzc2lvbiIsImdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCIsImRhdGFGaWVsZE9iamVjdFBhdGgiLCJkYXRhIiwiRGF0YSIsIk9iamVjdCIsImRhdGFGaWVsZHMiLCJpc1JlcXVpcmVkRXhwcmVzc2lvbnMiLCJkYXRhRmllbGQiLCJWYWx1ZSIsIlRhcmdldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiVUlGb3JtYXR0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF0aEFubm90YXRpb25FeHByZXNzaW9uLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBzaW5nbGV0b25QYXRoVmlzaXRvciwgVUkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRNZXRhTW9kZWxDb250ZXh0LCBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB2YWx1ZUZvcm1hdHRlcnMgZnJvbSBcInNhcC9mZS9jb3JlL2Zvcm1hdHRlcnMvVmFsdWVGb3JtYXR0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhZGRUeXBlSW5mb3JtYXRpb24sXG5cdGFuZCxcblx0Y29tcGlsZUV4cHJlc3Npb24sXG5cdGNvbnN0YW50LFxuXHRFRE1fVFlQRV9NQVBQSU5HLFxuXHRlcXVhbCxcblx0Zm9ybWF0UmVzdWx0LFxuXHRmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uLFxuXHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sXG5cdGlmRWxzZSxcblx0aXNDb25zdGFudCxcblx0aXNUcnV0aHksXG5cdG5vdCxcblx0bm90RXF1YWwsXG5cdG9yLFxuXHRwYXRoSW5Nb2RlbFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHtcblx0Z2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCxcblx0Z2V0UmVsYXRpdmVQYXRocyxcblx0Z2V0VGFyZ2V0T2JqZWN0UGF0aCxcblx0aXNQYXRoVXBkYXRhYmxlXG59IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCAqIGFzIERpc3BsYXlNb2RlRm9ybWF0dGVyIGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQge1xuXHRpc0Rpc2FibGVkRXhwcmVzc2lvbixcblx0aXNOb25FZGl0YWJsZUV4cHJlc3Npb24sXG5cdGlzUmVhZE9ubHlFeHByZXNzaW9uLFxuXHRpc1JlcXVpcmVkRXhwcmVzc2lvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9GaWVsZENvbnRyb2xIZWxwZXJcIjtcbmltcG9ydCB7XG5cdGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5LFxuXHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5LFxuXHRoYXNWYWx1ZUhlbHAsXG5cdGlzQ29tcHV0ZWQsXG5cdGlzSW1tdXRhYmxlLFxuXHRpc0tleSxcblx0aXNQYXRoRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eVxufSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuLy8gSW1wb3J0LWV4cG9ydCBtZXRob2QgdXNlZCBieSB0aGUgY29udmVydGVyIHRvIHVzZSB0aGVtIGluIHRoZSB0ZW1wbGF0aW5nIHRocm91Z2ggdGhlIFVJRm9ybWF0dGVycy5cbmV4cG9ydCB0eXBlIERpc3BsYXlNb2RlID0gRGlzcGxheU1vZGVGb3JtYXR0ZXIuRGlzcGxheU1vZGU7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5T3JQYXRoPFA+ID0gc3RyaW5nIHwgUCB8IFBhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbjxQPjtcbmV4cG9ydCB0eXBlIE1ldGFNb2RlbENvbnRleHQgPSB7XG5cdCRraW5kOiBzdHJpbmc7XG5cdCRUeXBlOiBzdHJpbmc7XG5cdCROdWxsYWJsZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEludGVyZmFjZSByZXByZXNlbnRpbmcgdGhlIHN0cnVjdHVyZSByZXR1cm5lZCBieSB0aGUgT0RhdGFNZXRhTW9kZWwgd2hlbiB1c2luZyB0aGUgQEAgb3BlcmF0b3IgaW4gWE1MIHRlbXBsYXRlcy5cbiAqL1xuZXhwb3J0IHR5cGUgQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlID0ge1xuXHRjb250ZXh0OiBDb250ZXh0O1xuXHRhcmd1bWVudHM/OiBhbnlbXTtcblx0JCR2YWx1ZUFzUHJvbWlzZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlQ29uc3RyYWludHMgPSB7XG5cdHNjYWxlPzogbnVtYmVyO1xuXHRwcmVjaXNpb24/OiBudW1iZXI7XG5cdG1heExlbmd0aD86IG51bWJlcjtcblx0bnVsbGFibGU/OiBib29sZWFuO1xuXHRtaW5pbXVtPzogc3RyaW5nO1xuXHRtYXhpbXVtPzogc3RyaW5nO1xuXHRpc0RpZ2l0U2VxdWVuY2U/OiBib29sZWFuO1xuXHRWND86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBjb25maWdUeXBlZm9ybWF0T3B0aW9ucyA9IHtcblx0cGFyc2VBc1N0cmluZz86IGJvb2xlYW47XG5cdGVtcHR5U3RyaW5nPzogc3RyaW5nO1xuXHRwYXJzZUtlZXBzRW1wdHlTdHJpbmc/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgY29uZmlnVHlwZSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRjb25zdHJhaW50czogY29uZmlnVHlwZUNvbnN0cmFpbnRzO1xuXHRmb3JtYXRPcHRpb25zOiBjb25maWdUeXBlZm9ybWF0T3B0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREaXNwbGF5TW9kZSA9IGZ1bmN0aW9uIChvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCk6IERpc3BsYXlNb2RlIHtcblx0cmV0dXJuIERpc3BsYXlNb2RlRm9ybWF0dGVyLmdldERpc3BsYXlNb2RlKG9EYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCwgb0RhdGFNb2RlbE9iamVjdFBhdGgpO1xufTtcbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkOiBhbnkgPSBudWxsLFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldEVkaXRhYmxlRXhwcmVzc2lvbihcblx0XHRvUHJvcGVydHlQYXRoLFxuXHRcdG9EYXRhRmllbGRDb252ZXJ0ZWQsXG5cdFx0b0RhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0dHJ1ZSxcblx0XHRpc0VkaXRhYmxlXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcblxuZXhwb3J0IHR5cGUgZGF0ZUZvcm1hdE9wdGlvbnMgPSB7XG5cdHNob3dEYXRlOiBzdHJpbmc7XG5cdHNob3dUaW1lOiBzdHJpbmc7XG5cdHNob3dUaW1lem9uZTogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGV4cHJlc3Npb24gdG8gZ2VuZXJhdGUgYW4gXCJlZGl0YWJsZVwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIG9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBwYXRoIHRvIHRoaXMgcHJvcGVydHkgb2JqZWN0XG4gKiBAcGFyYW0gYkFzT2JqZWN0IFdoZXRoZXIgb3Igbm90IHRoaXMgc2hvdWxkIGJlIHJldHVybmVkIGFzIGFuIG9iamVjdCBvciBhIGJpbmRpbmcgc3RyaW5nXG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgcHJvcGVydHkgaXMgZWRpdGFibGUgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0b0RhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRpc0VkaXRhYmxlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBVSS5Jc0VkaXRhYmxlXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihmYWxzZSk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZEVkaXRhYmxlRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkRWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgaXNFZGl0YWJsZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdGNvbnN0IHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMob0RhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBFZGl0YWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBmaWVsZCBjb250cm9sIGV4cHJlc3Npb25cblx0Ly8gSWYgdGhlIEZpZWxkIGNvbnRyb2wgaXMgc3RhdGljYWxseSBpbiBSZWFkT25seSBvciBJbmFwcGxpY2FibGUgKGRpc2FibGVkKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIGEga2V5IC0+IG5vdCBlZGl0YWJsZSBleGNlcHQgaW4gY3JlYXRpb24gaWYgbm90IGNvbXB1dGVkXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBjb21wdXRlZCAtPiBub3QgZWRpdGFibGVcblx0Ly8gSWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1cGRhdGFibGUgLT4gbm90IGVkaXRhYmxlXG5cdC8vIElmIHRoZSBwcm9wZXJ0eSBpcyBpbW11dGFibGUgLT4gbm90IGVkaXRhYmxlIGV4Y2VwdCBpbiBjcmVhdGlvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBhIHBhdGggcmVzb2x2aW5nIHRvIFJlYWRPbmx5IG9yIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpICg8PSAxKSAtPiBub3QgZWRpdGFibGVcblx0Ly8gRWxzZSwgdG8gYmUgZWRpdGFibGUgeW91IG5lZWRcblx0Ly8gaW1tdXRhYmxlIGFuZCBrZXkgd2hpbGUgaW4gdGhlIGNyZWF0aW9uIHJvd1xuXHQvLyB1aS9pc0VkaXRhYmxlXG5cdGNvbnN0IGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24gPSBpc1BhdGhVcGRhdGFibGUob0RhdGFNb2RlbE9iamVjdFBhdGgsIHtcblx0XHRwcm9wZXJ0eVBhdGg6IG9Qcm9wZXJ0eVBhdGgsXG5cdFx0cGF0aFZpc2l0b3I6IChwYXRoOiBzdHJpbmcsIG5hdmlnYXRpb25QYXRoczogc3RyaW5nW10pID0+XG5cdFx0XHRzaW5nbGV0b25QYXRoVmlzaXRvcihwYXRoLCBvRGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlcywgbmF2aWdhdGlvblBhdGhzKVxuXHR9KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdG9yKFxuXHRcdFx0bm90KGlzUGF0aFVwZGF0YWJsZUV4cHJlc3Npb24pLFxuXHRcdFx0aXNDb21wdXRlZChvUHJvcGVydHkpLFxuXHRcdFx0aXNLZXkob1Byb3BlcnR5KSxcblx0XHRcdGlzSW1tdXRhYmxlKG9Qcm9wZXJ0eSksXG5cdFx0XHRpc05vbkVkaXRhYmxlRXhwcmVzc2lvbihvUHJvcGVydHksIHJlbGF0aXZlUGF0aClcblx0XHQpLFxuXHRcdGlmRWxzZShvcihpc0NvbXB1dGVkKG9Qcm9wZXJ0eSksIGlzTm9uRWRpdGFibGVFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKSksIGZhbHNlLCBVSS5Jc1RyYW5zaWVudEJpbmRpbmcpLFxuXHRcdGlzRWRpdGFibGVcblx0KTtcblx0aWYgKGJBc09iamVjdCkge1xuXHRcdHJldHVybiBhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pO1xuXHR9XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihhbmQoZWRpdGFibGVFeHByZXNzaW9uLCBkYXRhRmllbGRFZGl0YWJsZUV4cHJlc3Npb24pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb2xsYWJvcmF0aW9uRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9ybWF0dGVyOiBhbnlcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+IHtcblx0Y29uc3Qgb2JqZWN0UGF0aCA9IGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGNvbnN0IGFjdGl2aXR5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGAvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzJHtvYmplY3RQYXRofWAsIFwiaW50ZXJuYWxcIik7XG5cdGNvbnN0IGtleXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoPy50YXJnZXRFbnRpdHlUeXBlPy5rZXlzO1xuXHRjb25zdCBrZXlzRXhwcmVzc2lvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxhbnk+W10gPSBbXTtcblx0a2V5cz8uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdFx0Y29uc3Qga2V5RXhwcmVzc2lvbiA9IHBhdGhJbk1vZGVsKGtleS5uYW1lKTtcblx0XHRrZXlzRXhwcmVzc2lvbnMucHVzaChrZXlFeHByZXNzaW9uKTtcblx0fSk7XG5cdHJldHVybiBmb3JtYXRSZXN1bHQoW2FjdGl2aXR5RXhwcmVzc2lvbiwgLi4ua2V5c0V4cHJlc3Npb25zXSwgZm9ybWF0dGVyKTtcbn07XG5leHBvcnQgY29uc3QgZ2V0RW5hYmxlZEV4cHJlc3Npb25Bc09iamVjdCA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRvRGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBnZXRFbmFibGVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCB0cnVlLCBvRGF0YU1vZGVsT2JqZWN0UGF0aCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+O1xufTtcbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZW5hYmxlZFwiIEJvb2xlYW4gdmFsdWUuXG4gKlxuICogQHBhcmFtIG9Qcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gb0RhdGFGaWVsZENvbnZlcnRlZCBUaGUgRGF0YUZpZWxkQ29udmVydGVkIE9iamVjdCB0byByZWFkIHRoZSBmaWVsZENvbnRyb2wgYW5ub3RhdGlvblxuICogQHBhcmFtIGJBc09iamVjdCBXaGV0aGVyIG9yIG5vdCB0aGlzIHNob3VsZCBiZSByZXR1cm5lZCBhcyBhbiBvYmplY3Qgb3IgYSBiaW5kaW5nIHN0cmluZ1xuICogQHBhcmFtIG9EYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHRvIGRldGVybWluZSBpZiBhIHByb3BlcnR5IGlzIGVuYWJsZWQgb3Igbm90XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFbmFibGVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRiQXNPYmplY3QgPSBmYWxzZSxcblx0b0RhdGFNb2RlbE9iamVjdFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghb1Byb3BlcnR5UGF0aCB8fCB0eXBlb2Ygb1Byb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHJldHVybiBjb21waWxlRXhwcmVzc2lvbih0cnVlKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAob0RhdGFNb2RlbE9iamVjdFBhdGgpIHtcblx0XHRyZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKG9EYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRsZXQgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb246IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9IGNvbnN0YW50KHRydWUpO1xuXHRpZiAob0RhdGFGaWVsZENvbnZlcnRlZCAhPT0gbnVsbCkge1xuXHRcdGRhdGFGaWVsZEVuYWJsZWRFeHByZXNzaW9uID0gaWZFbHNlKGlzRGlzYWJsZWRFeHByZXNzaW9uKG9EYXRhRmllbGRDb252ZXJ0ZWQpLCBmYWxzZSwgdHJ1ZSk7XG5cdH1cblxuXHRjb25zdCBvUHJvcGVydHk6IFByb3BlcnR5ID0gKGlzUGF0aEV4cHJlc3Npb24ob1Byb3BlcnR5UGF0aCkgJiYgb1Byb3BlcnR5UGF0aC4kdGFyZ2V0KSB8fCAob1Byb3BlcnR5UGF0aCBhcyBQcm9wZXJ0eSk7XG5cdC8vIEVuYWJsZW1lbnQgZGVwZW5kcyBvbiB0aGUgZmllbGQgY29udHJvbCBleHByZXNzaW9uXG5cdC8vIElmIHRoZSBGaWVsZCBjb250cm9sIGlzIHN0YXRpY2FsbHkgaW4gSW5hcHBsaWNhYmxlIChkaXNhYmxlZCkgLT4gbm90IGVuYWJsZWRcblx0Y29uc3QgZW5hYmxlZEV4cHJlc3Npb24gPSBpZkVsc2UoaXNEaXNhYmxlZEV4cHJlc3Npb24ob1Byb3BlcnR5LCByZWxhdGl2ZVBhdGgpLCBmYWxzZSwgdHJ1ZSk7XG5cdGlmIChiQXNPYmplY3QpIHtcblx0XHRyZXR1cm4gYW5kKGVuYWJsZWRFeHByZXNzaW9uLCBkYXRhRmllbGRFbmFibGVkRXhwcmVzc2lvbik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGFuZChlbmFibGVkRXhwcmVzc2lvbiwgZGF0YUZpZWxkRW5hYmxlZEV4cHJlc3Npb24pKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBleHByZXNzaW9uIHRvIGdlbmVyYXRlIGFuIFwiZWRpdE1vZGVcIiBlbnVtIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwcm9wZXJ0eVBhdGggVGhlIGlucHV0IHByb3BlcnR5XG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgbGlzdCBvZiBkYXRhIG1vZGVsIG9iamVjdHMgdGhhdCBhcmUgaW52b2x2ZWQgdG8gcmVhY2ggdGhhdCBwcm9wZXJ0eVxuICogQHBhcmFtIG1lYXN1cmVSZWFkT25seSBXaGV0aGVyIHdlIHNob3VsZCBzZXQgVW9NIC8gY3VycmVuY3kgZmllbGQgbW9kZSB0byByZWFkIG9ubHlcbiAqIEBwYXJhbSBhc09iamVjdCBXaGV0aGVyIHdlIHNob3VsZCByZXR1cm4gdGhpcyBhcyBhbiBleHByZXNzaW9uIG9yIGFzIGEgc3RyaW5nXG4gKiBAcGFyYW0gZGF0YUZpZWxkQ29udmVydGVkIFRoZSBkYXRhRmllbGQgb2JqZWN0XG4gKiBAcGFyYW0gaXNFZGl0YWJsZSBXaGV0aGVyIG9yIG5vdCBVSS5Jc0VkaXRhYmxlIGJlIGNvbnNpZGVyZWQuXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBwcm9wZXJ0eSBlZGl0IG1vZGUsIGNvbXBsaWFudCB3aXRoIHRoZSBNREMgRmllbGQgZGVmaW5pdGlvbiBvZiBlZGl0TW9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEVkaXRNb2RlID0gZnVuY3Rpb24gKFxuXHRwcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0bWVhc3VyZVJlYWRPbmx5OiBib29sZWFuID0gZmFsc2UsXG5cdGFzT2JqZWN0OiBib29sZWFuID0gZmFsc2UsXG5cdGRhdGFGaWVsZENvbnZlcnRlZDogYW55ID0gbnVsbCxcblx0aXNFZGl0YWJsZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gVUkuSXNFZGl0YWJsZVxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB7XG5cdGlmICghcHJvcGVydHlQYXRoIHx8IHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIgfHwgZGF0YUZpZWxkQ29udmVydGVkPy4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoKSB7XG5cdFx0cmV0dXJuIFwiRGlzcGxheVwiO1xuXHR9XG5cdGNvbnN0IHByb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgJiYgcHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChwcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCByZWxhdGl2ZVBhdGggPSBnZXRSZWxhdGl2ZVBhdGhzKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGVuYWJsZWQgPT4gRGlzYWJsZWRcblx0Ly8gaWYgdGhlIHByb3BlcnR5IGlzIGVuYWJsZWQgJiYgbm90IGVkaXRhYmxlID0+IFJlYWRPbmx5XG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBlbmFibGVkICYmIGVkaXRhYmxlID0+IEVkaXRhYmxlXG5cdC8vIElmIHRoZXJlIGlzIGFuIGFzc29jaWF0ZWQgdW5pdCwgYW5kIGl0IGhhcyBhIGZpZWxkIGNvbnRyb2wgYWxzbyB1c2UgY29uc2lkZXIgdGhlIGZvbGxvd2luZ1xuXHQvLyBpZiB0aGUgdW5pdCBmaWVsZCBjb250cm9sIGlzIHJlYWRvbmx5IC0+IEVkaXRhYmxlUmVhZE9ubHlcblx0Ly8gb3RoZXJ3aXNlIC0+IEVkaXRhYmxlXG5cdGNvbnN0IGVkaXRhYmxlRXhwcmVzc2lvbiA9IGdldEVkaXRhYmxlRXhwcmVzc2lvbkFzT2JqZWN0KHByb3BlcnR5UGF0aCwgZGF0YUZpZWxkQ29udmVydGVkLCBkYXRhTW9kZWxPYmplY3RQYXRoLCBpc0VkaXRhYmxlKTtcblxuXHRjb25zdCBlbmFibGVkRXhwcmVzc2lvbiA9IGdldEVuYWJsZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGRDb252ZXJ0ZWQsIGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRjb25zdCBhc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eSA9IGdldEFzc29jaWF0ZWRDdXJyZW5jeVByb3BlcnR5KHByb3BlcnR5KTtcblx0Y29uc3QgdW5pdFByb3BlcnR5ID0gYXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHkgfHwgZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eShwcm9wZXJ0eSk7XG5cdGxldCByZXN1bHRFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiA9IGNvbnN0YW50KFwiRWRpdGFibGVcIik7XG5cdGlmICh1bml0UHJvcGVydHkpIHtcblx0XHRjb25zdCBpc1VuaXRSZWFkT25seSA9IGlzUmVhZE9ubHlFeHByZXNzaW9uKHVuaXRQcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0XHRyZXN1bHRFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoaXNVbml0UmVhZE9ubHksIGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSwgYW5kKGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSksIG5vdChVSS5Jc1RyYW5zaWVudEJpbmRpbmcpKSwgbWVhc3VyZVJlYWRPbmx5KSxcblx0XHRcdGlmRWxzZSghaXNDb25zdGFudChpc1VuaXRSZWFkT25seSkgJiYgaXNVbml0UmVhZE9ubHksIFwiRWRpdGFibGVSZWFkT25seVwiLCBcIkVkaXRhYmxlRGlzcGxheVwiKSxcblx0XHRcdFwiRWRpdGFibGVcIlxuXHRcdCk7XG5cdH1cblx0Y29uc3QgcmVhZE9ubHlFeHByZXNzaW9uID0gb3IoaXNSZWFkT25seUV4cHJlc3Npb24ocHJvcGVydHksIHJlbGF0aXZlUGF0aCksIGlzUmVhZE9ubHlFeHByZXNzaW9uKGRhdGFGaWVsZENvbnZlcnRlZCkpO1xuXG5cdC8vIGlmIHRoZSBwcm9wZXJ0eSBpcyBmcm9tIGEgbm9uLXVwZGF0YWJsZSBlbnRpdHkgPT4gUmVhZCBvbmx5IG1vZGUsIHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgaXMgaWdub3JlZFxuXHQvLyBpZiB0aGUgcHJvcGVydHkgaXMgZnJvbSBhbiB1cGRhdGFibGUgZW50aXR5ID0+IHByZXZpb3VzbHkgY2FsY3VsYXRlZCBlZGl0IE1vZGUgZXhwcmVzc2lvblxuXHRjb25zdCBlZGl0TW9kZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0ZW5hYmxlZEV4cHJlc3Npb24sXG5cdFx0aWZFbHNlKFxuXHRcdFx0ZWRpdGFibGVFeHByZXNzaW9uLFxuXHRcdFx0cmVzdWx0RXhwcmVzc2lvbixcblx0XHRcdGlmRWxzZShhbmQoIWlzQ29uc3RhbnQocmVhZE9ubHlFeHByZXNzaW9uKSAmJiByZWFkT25seUV4cHJlc3Npb24sIGlzRWRpdGFibGUpLCBcIlJlYWRPbmx5XCIsIFwiRGlzcGxheVwiKVxuXHRcdCksXG5cdFx0aWZFbHNlKGlzRWRpdGFibGUsIFwiRGlzYWJsZWRcIiwgXCJEaXNwbGF5XCIpXG5cdCk7XG5cdGlmIChhc09iamVjdCkge1xuXHRcdHJldHVybiBlZGl0TW9kZUV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGVkaXRNb2RlRXhwcmVzc2lvbik7XG59O1xuXG5leHBvcnQgY29uc3QgaGFzVmFsaWRBbmFseXRpY2FsQ3VycmVuY3lPclVuaXQgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXHRjb25zdCBjdXJyZW5jeSA9IG9Qcm9wZXJ0eURlZmluaXRpb24uYW5ub3RhdGlvbnM/Lk1lYXN1cmVzPy5JU09DdXJyZW5jeTtcblx0Y29uc3QgbWVhc3VyZSA9IGN1cnJlbmN5ID8gY3VycmVuY3kgOiBvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uVW5pdDtcblx0aWYgKG1lYXN1cmUpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24ob3IoaXNUcnV0aHkoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG1lYXN1cmUpIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KSwgbm90KFVJLklzVG90YWwpKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGNvbnN0YW50KHRydWUpKTtcblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGlmVW5pdEVkaXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdHNFZGl0YWJsZVZhbHVlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPiB8IHN0cmluZyxcblx0c05vbkVkaXRhYmxlVmFsdWU6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB7XG5cdGNvbnN0IG9Qcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHRjb25zdCB1bml0UHJvcGVydHkgPSBnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eShvUHJvcGVydHkpIHx8IGdldEFzc29jaWF0ZWRVbml0UHJvcGVydHkob1Byb3BlcnR5KTtcblx0aWYgKCF1bml0UHJvcGVydHkpIHtcblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oc05vbkVkaXRhYmxlVmFsdWUpO1xuXHR9XG5cdGNvbnN0IGlzVW5pdFJlYWRPbmx5ID0gaXNSZWFkT25seUV4cHJlc3Npb24odW5pdFByb3BlcnR5KTtcblx0Y29uc3QgZWRpdGFibGVFeHByZXNzaW9uID0gYW5kKFxuXHRcdG9yKCFpc0NvbnN0YW50KGlzVW5pdFJlYWRPbmx5KSwgbm90KGlzVW5pdFJlYWRPbmx5KSksXG5cdFx0bm90KGlzQ29tcHV0ZWQodW5pdFByb3BlcnR5KSksXG5cdFx0bm90KGlzSW1tdXRhYmxlKHVuaXRQcm9wZXJ0eSkpXG5cdCk7XG5cdHJldHVybiBjb21waWxlRXhwcmVzc2lvbihpZkVsc2UoZWRpdGFibGVFeHByZXNzaW9uLCBzRWRpdGFibGVWYWx1ZSwgc05vbkVkaXRhYmxlVmFsdWUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZERpc3BsYXkgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eVBhdGg6IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0c1RhcmdldERpc3BsYXlNb2RlOiBzdHJpbmcsXG5cdG9Db21wdXRlZEVkaXRNb2RlOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBvUHJvcGVydHkgPSAoaXNQYXRoRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoKSAmJiBvUHJvcGVydHlQYXRoLiR0YXJnZXQpIHx8IChvUHJvcGVydHlQYXRoIGFzIFByb3BlcnR5KTtcblxuXHRyZXR1cm4gaGFzVmFsdWVIZWxwKG9Qcm9wZXJ0eSlcblx0XHQ/IGNvbXBpbGVFeHByZXNzaW9uKHNUYXJnZXREaXNwbGF5TW9kZSlcblx0XHQ6IGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJFZGl0YWJsZVwiKSwgXCJWYWx1ZVwiLCBzVGFyZ2V0RGlzcGxheU1vZGUpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlQ29uZmlnID0gZnVuY3Rpb24gKG9Qcm9wZXJ0eTogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzLCBkYXRhVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogYW55IHtcblx0Y29uc3Qgb1RhcmdldE1hcHBpbmcgPSBFRE1fVFlQRV9NQVBQSU5HWyhvUHJvcGVydHkgYXMgUHJvcGVydHkpPy50eXBlXSB8fCAoZGF0YVR5cGUgPyBFRE1fVFlQRV9NQVBQSU5HW2RhdGFUeXBlXSA6IHVuZGVmaW5lZCk7XG5cdGNvbnN0IHByb3BlcnR5VHlwZUNvbmZpZzogY29uZmlnVHlwZSA9IHtcblx0XHR0eXBlOiBvVGFyZ2V0TWFwcGluZy50eXBlLFxuXHRcdGNvbnN0cmFpbnRzOiB7fSxcblx0XHRmb3JtYXRPcHRpb25zOiB7fVxuXHR9O1xuXHRpZiAoaXNQcm9wZXJ0eShvUHJvcGVydHkpKSB7XG5cdFx0cHJvcGVydHlUeXBlQ29uZmlnLmNvbnN0cmFpbnRzID0ge1xuXHRcdFx0c2NhbGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kU2NhbGUgPyBvUHJvcGVydHkuc2NhbGUgOiB1bmRlZmluZWQsXG5cdFx0XHRwcmVjaXNpb246IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kUHJlY2lzaW9uID8gb1Byb3BlcnR5LnByZWNpc2lvbiA6IHVuZGVmaW5lZCxcblx0XHRcdG1heExlbmd0aDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRNYXhMZW5ndGggPyBvUHJvcGVydHkubWF4TGVuZ3RoIDogdW5kZWZpbmVkLFxuXHRcdFx0bnVsbGFibGU6IG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy4kTnVsbGFibGUgPyBvUHJvcGVydHkubnVsbGFibGUgOiB1bmRlZmluZWQsXG5cdFx0XHRtaW5pbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1pbmltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWluaW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRtYXhpbXVtOlxuXHRcdFx0XHRvVGFyZ2V0TWFwcGluZy5jb25zdHJhaW50cz8uW1wiQE9yZy5PRGF0YS5WYWxpZGF0aW9uLlYxLk1heGltdW0vJERlY2ltYWxcIl0gJiZcblx0XHRcdFx0IWlzTmFOKG9Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bSlcblx0XHRcdFx0XHQ/IGAke29Qcm9wZXJ0eS5hbm5vdGF0aW9ucz8uVmFsaWRhdGlvbj8uTWF4aW11bX1gXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRpc0RpZ2l0U2VxdWVuY2U6XG5cdFx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZy50eXBlID09PSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiICYmXG5cdFx0XHRcdG9UYXJnZXRNYXBwaW5nLmNvbnN0cmFpbnRzPy5bXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLklzRGlnaXRTZXF1ZW5jZVwiXSAmJlxuXHRcdFx0XHRvUHJvcGVydHkuYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNEaWdpdFNlcXVlbmNlXG5cdFx0XHRcdFx0PyB0cnVlXG5cdFx0XHRcdFx0OiB1bmRlZmluZWQsXG5cdFx0XHRWNDogb1RhcmdldE1hcHBpbmcuY29uc3RyYWludHM/LiRWNCA/IHRydWUgOiB1bmRlZmluZWRcblx0XHR9O1xuXHR9XG5cdHByb3BlcnR5VHlwZUNvbmZpZy5mb3JtYXRPcHRpb25zID0ge1xuXHRcdHBhcnNlQXNTdHJpbmc6XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5JbnRcIikgPT09IDAgfHxcblx0XHRcdHByb3BlcnR5VHlwZUNvbmZpZz8udHlwZT8uaW5kZXhPZihcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRvdWJsZVwiKSA9PT0gMFxuXHRcdFx0XHQ/IGZhbHNlXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdGVtcHR5U3RyaW5nOlxuXHRcdFx0cHJvcGVydHlUeXBlQ29uZmlnPy50eXBlPy5pbmRleE9mKFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuSW50XCIpID09PSAwIHx8XG5cdFx0XHRwcm9wZXJ0eVR5cGVDb25maWc/LnR5cGU/LmluZGV4T2YoXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Eb3VibGVcIikgPT09IDBcblx0XHRcdFx0PyBcIlwiXG5cdFx0XHRcdDogdW5kZWZpbmVkLFxuXHRcdHBhcnNlS2VlcHNFbXB0eVN0cmluZzogcHJvcGVydHlUeXBlQ29uZmlnLnR5cGUgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCIgPyB0cnVlIDogdW5kZWZpbmVkXG5cdH07XG5cdHJldHVybiBwcm9wZXJ0eVR5cGVDb25maWc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmluZGluZ1dpdGhVbml0T3JDdXJyZW5jeSA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5RGF0YU1vZGVsUGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0cHJvcGVydHlCaW5kaW5nRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdGlnbm9yZVVuaXRDb25zdHJhaW50PzogYm9vbGVhbixcblx0Zm9ybWF0T3B0aW9ucz86IGFueVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBnZXRSZWxhdGl2ZVBhdGhzKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpO1xuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uID0gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihvUHJvcGVydHlEZWZpbml0aW9uLCBwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uKTtcblx0aWYgKHVuaXQ/LnRvU3RyaW5nKCkgPT09IFwiJVwiKSB7XG5cdFx0aWYgKGZvcm1hdE9wdGlvbnM/LnNob3dNZWFzdXJlID09PSBmYWxzZSkge1xuXHRcdFx0cmV0dXJuIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb247XG5cdFx0fVxuXHRcdHJldHVybiBmb3JtYXRSZXN1bHQoW3Byb3BlcnR5QmluZGluZ0V4cHJlc3Npb25dLCB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aFBlcmNlbnRhZ2UpO1xuXHR9XG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gdW5pdCA/IFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuVW5pdFwiIDogXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5DdXJyZW5jeVwiO1xuXHR1bml0ID0gdW5pdCA/IHVuaXQgOiAob1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LklTT0N1cnJlbmN5IGFzIGFueSk7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh1bml0IGFzIGFueSkuJHRhcmdldFxuXHRcdD8gZm9ybWF0V2l0aFR5cGVJbmZvcm1hdGlvbihcblx0XHRcdFx0KHVuaXQgYXMgYW55KS4kdGFyZ2V0LFxuXHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24odW5pdCwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHVuaXQsIHJlbGF0aXZlTG9jYXRpb24pIGFzIEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+KTtcblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nRm9yVW5pdE9yQ3VycmVuY3kgPSBmdW5jdGlvbiAoXG5cdG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHwgc3RyaW5nIHtcblx0Y29uc3Qgb1Byb3BlcnR5RGVmaW5pdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5O1xuXG5cdGxldCB1bml0ID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uTWVhc3VyZXM/LlVuaXQ7XG5cdGlmICh1bml0Py50b1N0cmluZygpID09PSBcIiVcIikge1xuXHRcdHJldHVybiBjb25zdGFudChcIiVcIik7XG5cdH1cblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cblx0Y29uc3QgY29tcGxleFR5cGUgPSB1bml0ID8gXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCIgOiBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI7XG5cdHVuaXQgPSB1bml0ID8gdW5pdCA6IChvUHJvcGVydHlEZWZpbml0aW9uLmFubm90YXRpb25zPy5NZWFzdXJlcz8uSVNPQ3VycmVuY3kgYXMgYW55KTtcblx0Y29uc3QgdW5pdEJpbmRpbmdFeHByZXNzaW9uID0gKHVuaXQgYXMgYW55KS4kdGFyZ2V0XG5cdFx0PyBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKFxuXHRcdFx0XHQodW5pdCBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPlxuXHRcdCAgKVxuXHRcdDogKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih1bml0LCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cblx0bGV0IHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBwYXRoSW5Nb2RlbChcblx0XHRnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgpXG5cdCkgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz47XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24sIHRydWUpO1xuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCB7XG5cdFx0cGFyc2VLZWVwc0VtcHR5U3RyaW5nOiB0cnVlLFxuXHRcdGVtcHR5U3RyaW5nOiBcIlwiLFxuXHRcdHNob3dOdW1iZXI6IGZhbHNlXG5cdH0pO1xufTtcbmV4cG9ydCBjb25zdCBnZXRCaW5kaW5nV2l0aFRpbWV6b25lID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPixcblx0aWdub3JlVW5pdENvbnN0cmFpbnQgPSBmYWxzZSxcblx0aGlkZVRpbWV6b25lRm9yRW1wdHlWYWx1ZXMgPSBmYWxzZSxcblx0ZGF0ZUZvcm1hdE9wdGlvbnM/OiBkYXRlRm9ybWF0T3B0aW9uc1xuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4ge1xuXHRjb25zdCBvUHJvcGVydHlEZWZpbml0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHk7XG5cdGNvbnN0IHRpbWV6b25lID0gb1Byb3BlcnR5RGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5UaW1lem9uZTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMob1Byb3BlcnR5RGF0YU1vZGVsUGF0aCk7XG5cdHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24gPSBmb3JtYXRXaXRoVHlwZUluZm9ybWF0aW9uKG9Qcm9wZXJ0eURlZmluaXRpb24sIHByb3BlcnR5QmluZGluZ0V4cHJlc3Npb24pO1xuXG5cdGNvbnN0IGNvbXBsZXhUeXBlID0gXCJzYXAuZmUuY29yZS50eXBlLkRhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cdGNvbnN0IHVuaXRCaW5kaW5nRXhwcmVzc2lvbiA9ICh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXRcblx0XHQ/IGZvcm1hdFdpdGhUeXBlSW5mb3JtYXRpb24oXG5cdFx0XHRcdCh0aW1lem9uZSBhcyBhbnkpLiR0YXJnZXQsXG5cdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbih0aW1lem9uZSwgcmVsYXRpdmVMb2NhdGlvbikgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdFx0XHRcdGlnbm9yZVVuaXRDb25zdHJhaW50XG5cdFx0ICApXG5cdFx0OiAoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHRpbWV6b25lLCByZWxhdGl2ZUxvY2F0aW9uKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nPik7XG5cdGxldCBmb3JtYXRPcHRpb25zID0ge307XG5cdGlmIChoaWRlVGltZXpvbmVGb3JFbXB0eVZhbHVlcykge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7XG5cdFx0XHRzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlczogZmFsc2Vcblx0XHR9O1xuXHR9XG5cblx0aWYgKGRhdGVGb3JtYXRPcHRpb25zPy5zaG93VGltZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWU6IGRhdGVGb3JtYXRPcHRpb25zLnNob3dUaW1lID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHRydWUgfSB9O1xuXHR9XG5cdGlmIChkYXRlRm9ybWF0T3B0aW9ucz8uc2hvd0RhdGUpIHtcblx0XHRmb3JtYXRPcHRpb25zID0geyAuLi5mb3JtYXRPcHRpb25zLCAuLi57IHNob3dEYXRlOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93RGF0ZSA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB0cnVlIH0gfTtcblx0fVxuXHRpZiAoZGF0ZUZvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZSkge1xuXHRcdGZvcm1hdE9wdGlvbnMgPSB7IC4uLmZvcm1hdE9wdGlvbnMsIC4uLnsgc2hvd1RpbWV6b25lOiBkYXRlRm9ybWF0T3B0aW9ucy5zaG93VGltZXpvbmUgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdHJ1ZSB9IH07XG5cdH1cblxuXHRyZXR1cm4gYWRkVHlwZUluZm9ybWF0aW9uKFtwcm9wZXJ0eUJpbmRpbmdFeHByZXNzaW9uLCB1bml0QmluZGluZ0V4cHJlc3Npb25dLCBjb21wbGV4VHlwZSwgdW5kZWZpbmVkLCBmb3JtYXRPcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBbGlnbm1lbnRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvQ29tcHV0ZWRFZGl0TW9kZTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHN0cmluZz4sXG5cdHNBbGlnbkRpc3BsYXk6IHN0cmluZyA9IFwiQmVnaW5cIixcblx0c0FsaWduRWRpdDogc3RyaW5nID0gXCJCZWdpblwiXG4pOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmc+IHtcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKGlmRWxzZShlcXVhbChvQ29tcHV0ZWRFZGl0TW9kZSwgXCJEaXNwbGF5XCIpLCBzQWxpZ25EaXNwbGF5LCBzQWxpZ25FZGl0KSk7XG59O1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGNvbnZlcnRlckNvbnRleHQgZnJvbSB0aGUgbWV0YW1vZGVsIGNvbnRleHQuXG4gKlxuICogQHBhcmFtIG9Db250ZXh0IFRoZSBvcmlnaW5hbCBtZXRhbW9kZWwgY29udGV4dFxuICogQHBhcmFtIG9JbnRlcmZhY2UgVGhlIGN1cnJlbnQgdGVtcGxhdGluZyBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgQ29udmVydGVyQ29udGV4dCByZXByZXNlbnRpbmcgdGhhdCBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnZlcnRlckNvbnRleHQgPSBmdW5jdGlvbiAob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IG9iamVjdCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gY29udmVydE1ldGFNb2RlbENvbnRleHQob0ludGVyZmFjZS5jb250ZXh0KTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn07XG5nZXRDb252ZXJ0ZXJDb250ZXh0LnJlcXVpcmVzSUNvbnRleHQgPSB0cnVlO1xuXG4vKipcbiAqIEZvcm1hdHRlciBoZWxwZXIgdG8gcmV0cmlldmUgdGhlIGRhdGEgbW9kZWwgb2JqZWN0cyB0aGF0IGFyZSBpbnZvbHZlZCBmcm9tIHRoZSBtZXRhbW9kZWwgY29udGV4dC5cbiAqXG4gKiBAcGFyYW0gb0NvbnRleHQgVGhlIG9yaWdpbmFsIE9EYXRhTWV0YU1vZGVsIGNvbnRleHRcbiAqIEBwYXJhbSBvSW50ZXJmYWNlIFRoZSBjdXJyZW50IHRlbXBsYXRpbmcgY29udGV4dFxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZW50aXR5c2V0cyBhbmQgbmF2cHJvcGVydGllcyB0aGF0IGFyZSBpbnZvbHZlZCB0byBnZXQgdG8gYSBzcGVjaWZpYyBvYmplY3QgaW4gdGhlIG1ldGFtb2RlbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IG51bGwge1xuXHRpZiAob0ludGVyZmFjZSAmJiBvSW50ZXJmYWNlLmNvbnRleHQpIHtcblx0XHRyZXR1cm4gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKG9JbnRlcmZhY2UuY29udGV4dCk7XG5cdH1cblx0cmV0dXJuIG51bGw7XG59O1xuZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aC5yZXF1aXJlc0lDb250ZXh0ID0gdHJ1ZTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHJlZmVyZW5jZWQgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0gb0RhdGFNb2RlbFBhdGggVGhlIGRhdGEgbW9kZWwgcGF0aCB0byBjaGVja1xuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgcGFydCBvZiBhIDEuLm4gbmF2aWdhdGlvblxuICovXG5leHBvcnQgY29uc3QgaXNNdWx0aVZhbHVlRmllbGQgPSBmdW5jdGlvbiAob0RhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBib29sZWFuIHtcblx0aWYgKG9EYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGgpIHtcblx0XHRjb25zdCBoYXNPbmVUb01hbnlOYXZpZ2F0aW9uID1cblx0XHRcdG9EYXRhTW9kZWxQYXRoPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoKG9OYXYpID0+IHtcblx0XHRcdFx0aWYgKG9OYXYuX3R5cGUgPT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiYgb05hdi5pc0NvbGxlY3Rpb24pIHtcblx0XHRcdFx0XHRpZiAob0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcz8ubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHQvL3dlIGNoZWNrIHRoZSBvbmUgdG8gbWFueSBuYXYgaXMgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgY29udGV4dFxuXHRcdFx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRcdFx0b0RhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kSW5kZXgoXG5cdFx0XHRcdFx0XHRcdFx0KG9Db250ZXh0TmF2KSA9PiBvQ29udGV4dE5hdi5uYW1lID09PSBvTmF2Lm5hbWVcblx0XHRcdFx0XHRcdFx0KSA9PT0gLTFcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pID4gLTE7XG5cdFx0aWYgKGhhc09uZVRvTWFueU5hdmlnYXRpb24pIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkFzT2JqZWN0ID0gZnVuY3Rpb24gKFxuXHRvUHJvcGVydHlQYXRoOiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdG9EYXRhRmllbGRDb252ZXJ0ZWQ/OiBhbnksXG5cdGZvcmNlRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGdldFJlcXVpcmVkRXhwcmVzc2lvbihvUHJvcGVydHlQYXRoLCBvRGF0YUZpZWxkQ29udmVydGVkLCBmb3JjZUVkaXRNb2RlLCB0cnVlKSBhcyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj47XG59O1xuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1Byb3BlcnR5UGF0aDogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRvRGF0YUZpZWxkQ29udmVydGVkPzogYW55LFxuXHRmb3JjZUVkaXRNb2RlOiBib29sZWFuID0gZmFsc2UsXG5cdGJBc09iamVjdDogYm9vbGVhbiA9IGZhbHNlLFxuXHRvUmVxdWlyZWRQcm9wZXJ0aWVzOiBhbnkgPSB7fSxcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGhcbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3QgYVJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnMgPSBvUmVxdWlyZWRQcm9wZXJ0aWVzLnJlcXVpcmVkUHJvcGVydGllc0Zyb21JbnNlcnRSZXN0cmljdGlvbnM7XG5cdGNvbnN0IGFSZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zID0gb1JlcXVpcmVkUHJvcGVydGllcy5yZXF1aXJlZFByb3BlcnRpZXNGcm9tVXBkYXRlUmVzdHJpY3Rpb25zO1xuXHRpZiAoIW9Qcm9wZXJ0eVBhdGggfHwgdHlwZW9mIG9Qcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0XHRyZXR1cm4gY29uc3RhbnQoZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oY29uc3RhbnQoZmFsc2UpKTtcblx0fVxuXHRsZXQgcmVsYXRpdmVQYXRoO1xuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aCkge1xuXHRcdHJlbGF0aXZlUGF0aCA9IGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdH1cblx0bGV0IGRhdGFGaWVsZFJlcXVpcmVkRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQodHJ1ZSk7XG5cdGlmIChvRGF0YUZpZWxkQ29udmVydGVkICE9PSBudWxsKSB7XG5cdFx0ZGF0YUZpZWxkUmVxdWlyZWRFeHByZXNzaW9uID0gaXNSZXF1aXJlZEV4cHJlc3Npb24ob0RhdGFGaWVsZENvbnZlcnRlZCk7XG5cdH1cblx0bGV0IHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbjogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0gY29uc3RhbnQoZmFsc2UpO1xuXHRsZXQgcmVxdWlyZWRQcm9wZXJ0eUZyb21VcGRhdGVSZXN0cmljdGlvbnNFeHByZXNzaW9uOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gPSBjb25zdGFudChmYWxzZSk7XG5cblx0Y29uc3Qgb1Byb3BlcnR5OiBQcm9wZXJ0eSA9IChpc1BhdGhFeHByZXNzaW9uKG9Qcm9wZXJ0eVBhdGgpICYmIG9Qcm9wZXJ0eVBhdGguJHRhcmdldCkgfHwgKG9Qcm9wZXJ0eVBhdGggYXMgUHJvcGVydHkpO1xuXHQvLyBFbmFibGVtZW50IGRlcGVuZHMgb24gdGhlIGZpZWxkIGNvbnRyb2wgZXhwcmVzc2lvblxuXHQvLyBJZiB0aGUgRmllbGQgY29udHJvbCBpcyBzdGF0aWNhbGx5IGluIEluYXBwbGljYWJsZSAoZGlzYWJsZWQpIC0+IG5vdCBlbmFibGVkXG5cdGNvbnN0IHJlcXVpcmVkRXhwcmVzc2lvbiA9IGlzUmVxdWlyZWRFeHByZXNzaW9uKG9Qcm9wZXJ0eSwgcmVsYXRpdmVQYXRoKTtcblx0Y29uc3QgZWRpdE1vZGUgPSBmb3JjZUVkaXRNb2RlIHx8IFVJLklzRWRpdGFibGU7XG5cdGlmIChhUmVxdWlyZWRQcm9wZXJ0aWVzRnJvbUluc2VydFJlc3RyaWN0aW9ucz8uaW5jbHVkZXMoKG9Qcm9wZXJ0eVBhdGggYXMgYW55KS5uYW1lKSkge1xuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tSW5zZXJ0UmVzdHJpY3Rpb25zRXhwcmVzc2lvbiA9IGFuZChjb25zdGFudCh0cnVlKSwgVUkuSXNDcmVhdGVNb2RlKTtcblx0fVxuXHRpZiAoYVJlcXVpcmVkUHJvcGVydGllc0Zyb21VcGRhdGVSZXN0cmljdGlvbnM/LmluY2x1ZGVzKChvUHJvcGVydHlQYXRoIGFzIGFueSkubmFtZSkpIHtcblx0XHRyZXF1aXJlZFByb3BlcnR5RnJvbVVwZGF0ZVJlc3RyaWN0aW9uc0V4cHJlc3Npb24gPSBhbmQoY29uc3RhbnQodHJ1ZSksIG5vdEVxdWFsKFVJLklzQ3JlYXRlTW9kZSwgdHJ1ZSkpO1xuXHR9XG5cdGNvbnN0IHJldHVybkV4cHJlc3Npb24gPSBvcihcblx0XHRhbmQob3IocmVxdWlyZWRFeHByZXNzaW9uLCBkYXRhRmllbGRSZXF1aXJlZEV4cHJlc3Npb24pLCBlZGl0TW9kZSksXG5cdFx0cmVxdWlyZWRQcm9wZXJ0eUZyb21JbnNlcnRSZXN0cmljdGlvbnNFeHByZXNzaW9uLFxuXHRcdHJlcXVpcmVkUHJvcGVydHlGcm9tVXBkYXRlUmVzdHJpY3Rpb25zRXhwcmVzc2lvblxuXHQpO1xuXHRpZiAoYkFzT2JqZWN0KSB7XG5cdFx0cmV0dXJuIHJldHVybkV4cHJlc3Npb247XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKHJldHVybkV4cHJlc3Npb24pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlcXVpcmVkRXhwcmVzc2lvbkZvckNvbm5lY3RlZERhdGFGaWVsZCA9IGZ1bmN0aW9uIChcblx0ZGF0YUZpZWxkT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aFxuKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRjb25zdCBkYXRhID0gZGF0YUZpZWxkT2JqZWN0UGF0aD8udGFyZ2V0T2JqZWN0Py4kdGFyZ2V0Py5EYXRhO1xuXHRjb25zdCBrZXlzOiBBcnJheTxzdHJpbmc+ID0gT2JqZWN0LmtleXMoZGF0YSk7XG5cdGNvbnN0IGRhdGFGaWVsZHMgPSBbXTtcblx0bGV0IHByb3BlcnR5UGF0aDtcblx0Y29uc3QgaXNSZXF1aXJlZEV4cHJlc3Npb25zOiAoQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfCBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4pW10gfCB1bmRlZmluZWQgPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuXHRcdGlmIChkYXRhW2tleV1bXCIkVHlwZVwiXSAmJiBkYXRhW2tleV1bXCIkVHlwZVwiXS5pbmRleE9mKFwiRGF0YUZpZWxkXCIpID4gLTEpIHtcblx0XHRcdGRhdGFGaWVsZHMucHVzaChkYXRhW2tleV0pO1xuXHRcdH1cblx0fVxuXHRmb3IgKGNvbnN0IGRhdGFGaWVsZCBvZiBkYXRhRmllbGRzKSB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGg6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhVcmw6XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhJbnRlbnRCYXNlZE5hdmlnYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZFdpdGhBY3Rpb246XG5cdFx0XHRcdGlmICh0eXBlb2YgZGF0YUZpZWxkLlZhbHVlID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0cHJvcGVydHlQYXRoID0gZGF0YUZpZWxkLlZhbHVlLiR0YXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckFubm90YXRpb246XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQpIHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZCB8fFxuXHRcdFx0XHRcdFx0ZGF0YUZpZWxkLlRhcmdldC4kdGFyZ2V0LiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5EYXRhUG9pbnRUeXBlXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRpZiAodHlwZW9mIGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldC5WYWx1ZSA9PT0gXCJvYmplY3RcIikge1xuXHRcdFx0XHRcdFx0XHRwcm9wZXJ0eVBhdGggPSBkYXRhRmllbGQuVGFyZ2V0LiR0YXJnZXQuVmFsdWUuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKHR5cGVvZiBkYXRhRmllbGQuVGFyZ2V0ID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0XHRcdHByb3BlcnR5UGF0aCA9IGRhdGFGaWVsZC5UYXJnZXQuJHRhcmdldDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHR9XG5cdFx0aXNSZXF1aXJlZEV4cHJlc3Npb25zLnB1c2goZ2V0UmVxdWlyZWRFeHByZXNzaW9uQXNPYmplY3QocHJvcGVydHlQYXRoLCBkYXRhRmllbGQsIGZhbHNlKSk7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKG9yKC4uLihpc1JlcXVpcmVkRXhwcmVzc2lvbnMgYXMgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+W10pKSk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZGTyxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsb0JBQXlDLEVBQWU7SUFDL0YsT0FBT0Msb0JBQW9CLENBQUNGLGNBQWMsQ0FBQ0Msb0JBQW9CLENBQUNFLFlBQVksRUFBRUYsb0JBQW9CLENBQUM7RUFDcEcsQ0FBQztFQUFDO0VBQ0ssTUFBTUcsNkJBQTZCLEdBQUcsVUFDNUNDLGFBQXVDLEVBSUg7SUFBQSxJQUhwQ0MsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMvQkwsb0JBQXlDO0lBQUEsSUFDekNNLFVBQTZDLHVFQUFHQyxFQUFFLENBQUNDLFVBQVU7SUFFN0QsT0FBT0MscUJBQXFCLENBQzNCTCxhQUFhLEVBQ2JDLG1CQUFtQixFQUNuQkwsb0JBQW9CLEVBQ3BCLElBQUksRUFDSk0sVUFBVSxDQUNWO0VBQ0YsQ0FBQztFQUFDO0VBUUY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNRyxxQkFBcUIsR0FBRyxVQUNwQ0wsYUFBdUMsRUFLZ0M7SUFBQSxJQUp2RUMsbUJBQXdCLHVFQUFHLElBQUk7SUFBQSxJQUMv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
|
|
@@ -58,6 +58,10 @@ export type MetaModelContext = {
|
|
|
58
58
|
$Type: string;
|
|
59
59
|
$Nullable?: boolean;
|
|
60
60
|
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Interface representing the structure returned by the ODataMetaModel when using the @@ operator in XML templates.
|
|
64
|
+
*/
|
|
61
65
|
export type ComputedAnnotationInterface = {
|
|
62
66
|
context: Context;
|
|
63
67
|
arguments?: any[];
|
|
@@ -32,4 +32,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/model/odata/type/Date
|
|
|
32
32
|
}(_DateTimeWithTimezone)) || _class);
|
|
33
33
|
return DateTimeWithTimezone;
|
|
34
34
|
}, false);
|
|
35
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEYXRlVGltZVdpdGhUaW1lem9uZSIsImRlZmluZVVJNUNsYXNzIiwib0Zvcm1hdE9wdGlvbnMiLCJvQ29uc3RyYWludHMiLCJiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXMiLCJzaG93VGltZXpvbmVGb3JFbXB0eVZhbHVlcyIsImZvcm1hdFZhbHVlIiwiYVZhbHVlcyIsInNUYXJnZXRUeXBlIiwib1RpbWVzdGFtcCIsInVuZGVmaW5lZCIsIl9EYXRlVGltZVdpdGhUaW1lem9uZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0ZVRpbWVXaXRoVGltZXpvbmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBfRGF0ZVRpbWVXaXRoVGltZXpvbmUgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lV2l0aFRpbWV6b25lXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLnR5cGUuRGF0ZVRpbWVXaXRoVGltZXpvbmVcIilcbmNsYXNzIERhdGVUaW1lV2l0aFRpbWV6b25lIGV4dGVuZHMgX0RhdGVUaW1lV2l0aFRpbWV6b25lIHtcblx0cHJpdmF0ZSBiU2hvd1RpbWV6b25lRm9yRW1wdHlWYWx1ZXM6IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3Iob0Zvcm1hdE9wdGlvbnM/OiBhbnksIG9Db25zdHJhaW50cz86IGFueSkge1xuXHRcdHN1cGVyKG9Gb3JtYXRPcHRpb25zLCBvQ29uc3RyYWludHMpO1xuXHRcdHRoaXMuYlNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzID0gb0Zvcm1hdE9wdGlvbnM/LnNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzID8/IHRydWU7XG5cdH1cblxuXHRmb3JtYXRWYWx1ZShhVmFsdWVzOiBhbnlbXSwgc1RhcmdldFR5cGU6IHN0cmluZykge1xuXHRcdGNvbnN0IG9UaW1lc3RhbXAgPSBhVmFsdWVzICYmIGFWYWx1ZXNbMF07XG5cdFx0aWYgKFxuXHRcdFx0b1RpbWVzdGFtcCA9PT0gdW5kZWZpbmVkIHx8IC8vIGRhdGEgaXMgbm90IHlldCBhdmFpbGFibGVcblx0XHRcdC8vIGlmIHRpbWUgem9uZSBpcyBub3Qgc2hvd24gZmFsc3kgdGltZXN0YW1wcyBjYW5ub3QgYmUgZm9ybWF0dGVkIC0+IHJldHVybiBudWxsXG5cdFx0XHQoIW9UaW1lc3RhbXAgJiYgIXRoaXMuYlNob3dUaW1lem9uZUZvckVtcHR5VmFsdWVzKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHJldHVybiBzdXBlci5mb3JtYXRWYWx1ZShhVmFsdWVzLCBzVGFyZ2V0VHlwZSk7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IERhdGVUaW1lV2l0aFRpbWV6b25lO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztNQUlNQSxvQkFBb0IsV0FEekJDLGNBQWMsQ0FBQyx1Q0FBdUMsQ0FBQztJQUFBO0lBSXZELDhCQUFZQyxjQUFvQixFQUFFQyxZQUFrQixFQUFFO01BQUE7TUFDckQsMENBQU1ELGNBQWMsRUFBRUMsWUFBWSxDQUFDO01BQ25DLE1BQUtDLDJCQUEyQixHQUFHLENBQUFGLGNBQWMsYUFBZEEsY0FBYyx1QkFBZEEsY0FBYyxDQUFFRywwQkFBMEIsS0FBSSxJQUFJO01BQUM7SUFDdkY7SUFBQztJQUFBLE9BRURDLFdBQVcsR0FBWCxxQkFBWUMsT0FBYyxFQUFFQyxXQUFtQixFQUFFO01BQ2hELE1BQU1DLFVBQVUsR0FBR0YsT0FBTyxJQUFJQSxPQUFPLENBQUMsQ0FBQyxDQUFDO01BQ3hDLElBQ0NFLFVBQVUsS0FBS0MsU0FBUztNQUFJO01BQzVCO01BQ0MsQ0FBQ0QsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDTCwyQkFBNEIsRUFDakQ7UUFDRCxPQUFPLElBQUk7TUFDWjtNQUNBLHdDQUFhRSxXQUFXLFlBQUNDLE9BQU8sRUFBRUMsV0FBVztJQUM5QyxDQUFDO0lBQUE7RUFBQSxFQWxCaUNHLHFCQUFxQjtFQUFBLE9Bb0J6Q1gsb0JBQW9CO0FBQUEifQ==
|
|
@@ -4,10 +4,12 @@ import _DateTimeWithTimezone from "sap/ui/model/odata/type/DateTimeWithTimezone"
|
|
|
4
4
|
@defineUI5Class("sap.fe.core.type.DateTimeWithTimezone")
|
|
5
5
|
class DateTimeWithTimezone extends _DateTimeWithTimezone {
|
|
6
6
|
private bShowTimezoneForEmptyValues: boolean;
|
|
7
|
+
|
|
7
8
|
constructor(oFormatOptions?: any, oConstraints?: any) {
|
|
8
9
|
super(oFormatOptions, oConstraints);
|
|
9
10
|
this.bShowTimezoneForEmptyValues = oFormatOptions?.showTimezoneForEmptyValues ?? true;
|
|
10
11
|
}
|
|
12
|
+
|
|
11
13
|
formatValue(aValues: any[], sTargetType: string) {
|
|
12
14
|
const oTimestamp = aValues && aValues[0];
|
|
13
15
|
if (
|
|
@@ -16,7 +16,7 @@ sap.ui.define(["sap/fe/core/formatters/FiscalFormat", "sap/fe/core/helpers/Class
|
|
|
16
16
|
* @param formatOptions Format options
|
|
17
17
|
* @param formatOptions.fiscalType String with a fiscal annotation type
|
|
18
18
|
* @param constraints Constraints
|
|
19
|
-
* @
|
|
19
|
+
* @since 1.110.0
|
|
20
20
|
* @experimental
|
|
21
21
|
* @extends sap.ui.model.odata.type.String
|
|
22
22
|
* @alias {sap.fe.core.type.FiscalDate} The implementation of the fiscal date
|
|
@@ -171,4 +171,4 @@ sap.ui.define(["sap/fe/core/formatters/FiscalFormat", "sap/fe/core/helpers/Class
|
|
|
171
171
|
}, _class2)) || _class);
|
|
172
172
|
return FiscalDate;
|
|
173
173
|
}, false);
|
|
174
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaXNjYWxEYXRlIiwiZGVmaW5lVUk1Q2xhc3MiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJmaXNjYWxUeXBlIiwibWF4TGVuZ3RoIiwiYW5ub3RhdGlvblR5cGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0cyIsImZvcm1hdHRlciIsIkZpc2NhbEZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImNhbGVuZGFyVHlwZSIsIkNhbGVuZGFyVHlwZSIsIkdyZWdvcmlhbiIsImdldFBhdHRlcm4iLCJmb3JtYXRWYWx1ZSIsInZhbHVlIiwidGFyZ2V0VHlwZSIsInBhcnNlVmFsdWUiLCJzb3VyY2VUeXBlIiwicGFyc2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZXJyb3IiLCJ2YWxpZGF0ZSIsIlZhbGlkYXRlRXhjZXB0aW9uIiwiZ2V0RXJyb3JNZXNzYWdlIiwic1ZhbHVlIiwiZnVsbFllYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJ0b1N0cmluZyIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0IiwiZ2V0TmFtZSIsImdldEZvcm1hdHRlciIsIk9EYXRhU3RyaW5nVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlzY2FsRGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IEZpc2NhbEZvcm1hdCBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GaXNjYWxGb3JtYXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ2FsZW5kYXJUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9DYWxlbmRhclR5cGVcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgT0RhdGFTdHJpbmdUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9TdHJpbmdcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5cbi8qKlxuICogRGVmaW5lIHRoZSBVSTUgY2xhc3MgZm9yIGEgdHlwZSBvZiBmaXNjYWwgZGF0ZS5cbiAqXG4gKiBAY2xhc3MgVGhlIGRhdGEgdHlwZSBGaXNjYWwgRGF0ZSBzdXBwb3J0cyB0aGUgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBvZiBmaXNjYWwgZGF0ZXMgdGhhdCBmb2xsb3cgdGhlIHBhdHRlcm4gJ3lNJ1xuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgRm9ybWF0IG9wdGlvbnNcbiAqIEBwYXJhbSBmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgU3RyaW5nIHdpdGggYSBmaXNjYWwgYW5ub3RhdGlvbiB0eXBlXG4gKiBAcGFyYW0gY29uc3RyYWludHMgQ29uc3RyYWludHNcbiAqIEB2ZXJzaW9uICR7dmVyc2lvbn1cbiAqIEBleHBlcmltZW50YWxcbiAqIEBleHRlbmRzIHNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1xuICogQGFsaWFzIHtzYXAuZmUuY29yZS50eXBlLkZpc2NhbERhdGV9IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZmlzY2FsIGRhdGVcbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUudHlwZS5GaXNjYWxEYXRlXCIpXG5jbGFzcyBGaXNjYWxEYXRlIGV4dGVuZHMgT0RhdGFTdHJpbmdUeXBlIHtcblx0cHJpdmF0ZSBhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkO1xuXHRwcml2YXRlIGZ1bGxZZWFyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBzdGF0aWMgZGF0ZUZvcm1hdHMgPSB7XG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJdOiBcIllZWVlcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUGVyaW9kXTogXCJQUFBcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclBlcmlvZF06IFwiWVlZWVBQUFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxRdWFydGVyXTogXCJRXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJRdWFydGVyXTogXCJZWVlZUVwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxXZWVrXTogXCJXV1wiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyV2Vla106IFwiWVlZWVdXXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0RheU9mRmlzY2FsWWVhcl06IFwiZFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyVmFyaWFudF06IFwiXCJcblx0fTtcblxuXHRwcml2YXRlIGZvcm1hdHRlcjogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKGZvcm1hdE9wdGlvbnM6IGFueSwgY29uc3RyYWludHM6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdChmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2QgfHxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucy5maXNjYWxUeXBlID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlciB8fFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJXZWVrKSAmJlxuXHRcdFx0Y29uc3RyYWludHM/Lm1heExlbmd0aFxuXHRcdCkge1xuXHRcdFx0Ly8gV2UgaW5jcmVhc2UgbWF4TGVuZ3RoIGZvciArMSBmb3IgYW55IGZpc2NhbCB0eXBlIHRoYXQgaGF2ZSBkZWxpbWl0ZXIgaW4gbG9jYWxlIGZvcm1hdC5cblx0XHRcdC8vIEl0J3MgbmVjZXNzYXJ5IGZvciB2YWxpZGF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LlxuXHRcdFx0Ly8gQWxzbyBmb3IgdmFsaWRhdGlvbiB0byBmdW5jdGlvbiBwcm9wZXJseSB1c2VyIGFsc28gc2hvdWxkIHNwZWNpZnkgY29uc3RyYWludHMuaXNEaWdpdFNlcXVlbmNlID0gdHJ1ZVxuXHRcdFx0Ly8gaXNEaWdpdFNlcXVlbmNlIGFuZCBtYXhMZW5ndGggY29tYmluYXRpb24gZW5zdXJlcyB0aGF0IG1pc3NpbmcgY2hhcmFjdGVycyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGxlYWRpbmcgemVyb3Ncblx0XHRcdC8vIHRoYXQgd2lsbCBlbnN1cmUgdXNlciB3aWxsIHJlY2VpdmUgY29ycmVjdCB2YWxpZGF0aW9uIHJlc3VsdHMuXG5cdFx0XHRjb25zdHJhaW50cy5tYXhMZW5ndGggPSBjb25zdHJhaW50cy5tYXhMZW5ndGggKyAxO1xuXHRcdH1cblx0XHRzdXBlcihmb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cyk7XG5cdFx0dGhpcy5hbm5vdGF0aW9uVHlwZSA9IGZvcm1hdE9wdGlvbnMuZmlzY2FsVHlwZTtcblx0XHRjb25zdCBmb3JtYXQgPSBGaXNjYWxEYXRlLmRhdGVGb3JtYXRzW3RoaXMuYW5ub3RhdGlvblR5cGUgYXMga2V5b2YgdHlwZW9mIEZpc2NhbERhdGUuZGF0ZUZvcm1hdHNdO1xuXHRcdGlmIChmb3JtYXQpIHtcblx0XHRcdHRoaXMuZm9ybWF0dGVyID0gRmlzY2FsRm9ybWF0LmdldERhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdGZvcm1hdCxcblx0XHRcdFx0Y2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuR3JlZ29yaWFuXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHBhdHRlcm4gZm9yIGZpc2NhbCBkYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBmaXNjYWwgZGF0ZSBwYXR0ZXJuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmZvcm1hdHRlcj8uZ2V0UGF0dGVybigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBmaXNjYWwgdHlwZS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWRcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBvdXRwdXQgdmFsdWU7IDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaXMgYWx3YXlzIGZvcm1hdHRlZCB0byA8Y29kZT5udWxsPC9jb2RlPlxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCB0YXJnZXRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXIgPyB0aGlzLmZvcm1hdHRlci5mb3JtYXQoc3VwZXIuZm9ybWF0VmFsdWUodmFsdWUsIHRhcmdldFR5cGUpKSA6IHN1cGVyLmZvcm1hdFZhbHVlKHZhbHVlLCB0YXJnZXRUeXBlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgdGhlIGdpdmVuIHZhbHVlLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBvZiB0aGUgZmlzY2FsIHR5cGUsIHRvIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIHBhcnNlZFxuXHQgKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlXG5cdCAqIEBvdmVycmlkZVxuXHQgKi9cblx0cHVibGljIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIHNvdXJjZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybWF0dGVyID8gdGhpcy5mb3JtYXR0ZXIucGFyc2Uoc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSkpIDogc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSk7XG5cdH1cblxuXHQvKipcblx0ICogQGluaGVyaXREb2Ncblx0ICovXG5cdHB1YmxpYyB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0c3VwZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICghdGhpcy5mb3JtYXR0ZXIpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuZm9ybWF0dGVyLnZhbGlkYXRlKHZhbHVlKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24odGhpcy5nZXRFcnJvck1lc3NhZ2UodGhpcy5hbm5vdGF0aW9uVHlwZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghdGhpcy5mb3JtYXR0ZXIgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmZvcm1hdHRlci52YWxpZGF0ZSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbih0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLmFubm90YXRpb25UeXBlKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hdGNoaW5nIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIHR5cGUgYmFzZWQgb24gdGhlIGZpc2NhbCBhbm5vdGF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGZpc2NhbCBhbm5vdGF0aW9uIHR5cGVcblx0ICogQHJldHVybnMgVGhlIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGdldEVycm9yTWVzc2FnZShhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRsZXQgc1ZhbHVlID0gXCJcIjtcblx0XHR0aGlzLmZ1bGxZZWFyID0gdGhpcy5mdWxsWWVhciB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuXHRcdHN3aXRjaCAoYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFBlcmlvZDpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMDFcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2Q6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gXCIxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhciArIFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsV2Vlazpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcldlZWs6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNEYXlPZkZpc2NhbFllYXI6XG5cdFx0XHRcdHNWYWx1ZSA9IFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclZhcmlhbnQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiRklTQ0FMX1ZBTElEQVRJT05fRkFJTFNcIiwgW3RoaXMuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpbmhlcml0RG9jXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlciB0aGF0IGlzIGFzc2lnbmVkIHRvIHRoaXMgcGFydGljdWxhciBGaXNjYWxEYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBhc3NpZ25lZCBpbnN0YW5jZSBvZiBGaXNjYWxGb3JtYXRcblx0ICovXG5cdHB1YmxpYyBnZXRGb3JtYXR0ZXIoKTogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXI7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IEZpc2NhbERhdGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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
|
|
174
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaXNjYWxEYXRlIiwiZGVmaW5lVUk1Q2xhc3MiLCJmb3JtYXRPcHRpb25zIiwiY29uc3RyYWludHMiLCJmaXNjYWxUeXBlIiwibWF4TGVuZ3RoIiwiYW5ub3RhdGlvblR5cGUiLCJmb3JtYXQiLCJkYXRlRm9ybWF0cyIsImZvcm1hdHRlciIsIkZpc2NhbEZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImNhbGVuZGFyVHlwZSIsIkNhbGVuZGFyVHlwZSIsIkdyZWdvcmlhbiIsImdldFBhdHRlcm4iLCJmb3JtYXRWYWx1ZSIsInZhbHVlIiwidGFyZ2V0VHlwZSIsInBhcnNlVmFsdWUiLCJzb3VyY2VUeXBlIiwicGFyc2UiLCJ2YWxpZGF0ZVZhbHVlIiwiZXJyb3IiLCJ2YWxpZGF0ZSIsIlZhbGlkYXRlRXhjZXB0aW9uIiwiZ2V0RXJyb3JNZXNzYWdlIiwic1ZhbHVlIiwiZnVsbFllYXIiLCJEYXRlIiwiZ2V0RnVsbFllYXIiLCJ0b1N0cmluZyIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJnZXRUZXh0IiwiZ2V0TmFtZSIsImdldEZvcm1hdHRlciIsIk9EYXRhU3RyaW5nVHlwZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlzY2FsRGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IEZpc2NhbEZvcm1hdCBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9GaXNjYWxGb3JtYXRcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ2FsZW5kYXJUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9DYWxlbmRhclR5cGVcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgT0RhdGFTdHJpbmdUeXBlIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdHlwZS9TdHJpbmdcIjtcbmltcG9ydCBWYWxpZGF0ZUV4Y2VwdGlvbiBmcm9tIFwic2FwL3VpL21vZGVsL1ZhbGlkYXRlRXhjZXB0aW9uXCI7XG5cbi8qKlxuICogRGVmaW5lIHRoZSBVSTUgY2xhc3MgZm9yIGEgdHlwZSBvZiBmaXNjYWwgZGF0ZS5cbiAqXG4gKiBAY2xhc3MgVGhlIGRhdGEgdHlwZSBGaXNjYWwgRGF0ZSBzdXBwb3J0cyB0aGUgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBvZiBmaXNjYWwgZGF0ZXMgdGhhdCBmb2xsb3cgdGhlIHBhdHRlcm4gJ3lNJ1xuICogQHBhcmFtIGZvcm1hdE9wdGlvbnMgRm9ybWF0IG9wdGlvbnNcbiAqIEBwYXJhbSBmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgU3RyaW5nIHdpdGggYSBmaXNjYWwgYW5ub3RhdGlvbiB0eXBlXG4gKiBAcGFyYW0gY29uc3RyYWludHMgQ29uc3RyYWludHNcbiAqIEBzaW5jZSAxLjExMC4wXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAZXh0ZW5kcyBzYXAudWkubW9kZWwub2RhdGEudHlwZS5TdHJpbmdcbiAqIEBhbGlhcyB7c2FwLmZlLmNvcmUudHlwZS5GaXNjYWxEYXRlfSBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGZpc2NhbCBkYXRlXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiKVxuY2xhc3MgRmlzY2FsRGF0ZSBleHRlbmRzIE9EYXRhU3RyaW5nVHlwZSB7XG5cdHByaXZhdGUgYW5ub3RhdGlvblR5cGU6IENvbW1vbkFubm90YXRpb25UZXJtcyB8IHVuZGVmaW5lZDtcblxuXHRwcml2YXRlIGZ1bGxZZWFyOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0cHJpdmF0ZSBzdGF0aWMgZGF0ZUZvcm1hdHMgPSB7XG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJdOiBcIllZWVlcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUGVyaW9kXTogXCJQUFBcIixcblx0XHRbQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclBlcmlvZF06IFwiWVlZWVBQUFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxRdWFydGVyXTogXCJRXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJRdWFydGVyXTogXCJZWVlZUVwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxXZWVrXTogXCJXV1wiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyV2Vla106IFwiWVlZWVdXXCIsXG5cdFx0W0NvbW1vbkFubm90YXRpb25UZXJtcy5Jc0RheU9mRmlzY2FsWWVhcl06IFwiZFwiLFxuXHRcdFtDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyVmFyaWFudF06IFwiXCJcblx0fTtcblxuXHRwcml2YXRlIGZvcm1hdHRlcjogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKGZvcm1hdE9wdGlvbnM6IGFueSwgY29uc3RyYWludHM6IGFueSkge1xuXHRcdGlmIChcblx0XHRcdChmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2QgfHxcblx0XHRcdFx0Zm9ybWF0T3B0aW9ucy5maXNjYWxUeXBlID09PSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlciB8fFxuXHRcdFx0XHRmb3JtYXRPcHRpb25zLmZpc2NhbFR5cGUgPT09IENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJXZWVrKSAmJlxuXHRcdFx0Y29uc3RyYWludHM/Lm1heExlbmd0aFxuXHRcdCkge1xuXHRcdFx0Ly8gV2UgaW5jcmVhc2UgbWF4TGVuZ3RoIGZvciArMSBmb3IgYW55IGZpc2NhbCB0eXBlIHRoYXQgaGF2ZSBkZWxpbWl0ZXIgaW4gbG9jYWxlIGZvcm1hdC5cblx0XHRcdC8vIEl0J3MgbmVjZXNzYXJ5IGZvciB2YWxpZGF0aW9uIHRvIHdvcmsgY29ycmVjdGx5LlxuXHRcdFx0Ly8gQWxzbyBmb3IgdmFsaWRhdGlvbiB0byBmdW5jdGlvbiBwcm9wZXJseSB1c2VyIGFsc28gc2hvdWxkIHNwZWNpZnkgY29uc3RyYWludHMuaXNEaWdpdFNlcXVlbmNlID0gdHJ1ZVxuXHRcdFx0Ly8gaXNEaWdpdFNlcXVlbmNlIGFuZCBtYXhMZW5ndGggY29tYmluYXRpb24gZW5zdXJlcyB0aGF0IG1pc3NpbmcgY2hhcmFjdGVycyB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGxlYWRpbmcgemVyb3Ncblx0XHRcdC8vIHRoYXQgd2lsbCBlbnN1cmUgdXNlciB3aWxsIHJlY2VpdmUgY29ycmVjdCB2YWxpZGF0aW9uIHJlc3VsdHMuXG5cdFx0XHRjb25zdHJhaW50cy5tYXhMZW5ndGggPSBjb25zdHJhaW50cy5tYXhMZW5ndGggKyAxO1xuXHRcdH1cblx0XHRzdXBlcihmb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cyk7XG5cdFx0dGhpcy5hbm5vdGF0aW9uVHlwZSA9IGZvcm1hdE9wdGlvbnMuZmlzY2FsVHlwZTtcblx0XHRjb25zdCBmb3JtYXQgPSBGaXNjYWxEYXRlLmRhdGVGb3JtYXRzW3RoaXMuYW5ub3RhdGlvblR5cGUgYXMga2V5b2YgdHlwZW9mIEZpc2NhbERhdGUuZGF0ZUZvcm1hdHNdO1xuXHRcdGlmIChmb3JtYXQpIHtcblx0XHRcdHRoaXMuZm9ybWF0dGVyID0gRmlzY2FsRm9ybWF0LmdldERhdGVJbnN0YW5jZSh7XG5cdFx0XHRcdGZvcm1hdCxcblx0XHRcdFx0Y2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuR3JlZ29yaWFuXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHBhdHRlcm4gZm9yIGZpc2NhbCBkYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBmaXNjYWwgZGF0ZSBwYXR0ZXJuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0UGF0dGVybigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRcdHJldHVybiB0aGlzLmZvcm1hdHRlcj8uZ2V0UGF0dGVybigpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEZvcm1hdHMgdGhlIGdpdmVuIHZhbHVlIHRvIHRoZSBnaXZlbiBmaXNjYWwgdHlwZS5cblx0ICpcblx0ICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBiZSBmb3JtYXR0ZWRcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBvdXRwdXQgdmFsdWU7IDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gaXMgYWx3YXlzIGZvcm1hdHRlZCB0byA8Y29kZT5udWxsPC9jb2RlPlxuXHQgKiBAb3ZlcnJpZGVcblx0ICovXG5cdHB1YmxpYyBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nLCB0YXJnZXRUeXBlOiBzdHJpbmcpOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXIgPyB0aGlzLmZvcm1hdHRlci5mb3JtYXQoc3VwZXIuZm9ybWF0VmFsdWUodmFsdWUsIHRhcmdldFR5cGUpKSA6IHN1cGVyLmZvcm1hdFZhbHVlKHZhbHVlLCB0YXJnZXRUeXBlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQYXJzZXMgdGhlIGdpdmVuIHZhbHVlLCB3aGljaCBpcyBleHBlY3RlZCB0byBiZSBvZiB0aGUgZmlzY2FsIHR5cGUsIHRvIGEgc3RyaW5nLlxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIHBhcnNlZFxuXHQgKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlXG5cdCAqIEBvdmVycmlkZVxuXHQgKi9cblx0cHVibGljIHBhcnNlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sIHNvdXJjZVR5cGU6IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMuZm9ybWF0dGVyID8gdGhpcy5mb3JtYXR0ZXIucGFyc2Uoc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSkpIDogc3VwZXIucGFyc2VWYWx1ZSh2YWx1ZSwgc291cmNlVHlwZSk7XG5cdH1cblxuXHQvKipcblx0ICogQGluaGVyaXREb2Ncblx0ICovXG5cdHB1YmxpYyB2YWxpZGF0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0c3VwZXIudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdGlmICghdGhpcy5mb3JtYXR0ZXIpIHtcblx0XHRcdFx0dGhyb3cgZXJyb3I7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuZm9ybWF0dGVyLnZhbGlkYXRlKHZhbHVlKSkge1xuXHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24odGhpcy5nZXRFcnJvck1lc3NhZ2UodGhpcy5hbm5vdGF0aW9uVHlwZSkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICghdGhpcy5mb3JtYXR0ZXIgfHwgdmFsdWUgPT09IFwiXCIgfHwgdmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLmZvcm1hdHRlci52YWxpZGF0ZSh2YWx1ZSkpIHtcblx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbih0aGlzLmdldEVycm9yTWVzc2FnZSh0aGlzLmFubm90YXRpb25UeXBlKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIG1hdGNoaW5nIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZSBmb3IgdGhlIHR5cGUgYmFzZWQgb24gdGhlIGZpc2NhbCBhbm5vdGF0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gYW5ub3RhdGlvblR5cGUgVGhlIGZpc2NhbCBhbm5vdGF0aW9uIHR5cGVcblx0ICogQHJldHVybnMgVGhlIGxvY2FsZS1kZXBlbmRlbnQgZXJyb3IgbWVzc2FnZVxuXHQgKi9cblx0cHVibGljIGdldEVycm9yTWVzc2FnZShhbm5vdGF0aW9uVHlwZTogQ29tbW9uQW5ub3RhdGlvblRlcm1zIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRsZXQgc1ZhbHVlID0gXCJcIjtcblx0XHR0aGlzLmZ1bGxZZWFyID0gdGhpcy5mdWxsWWVhciB8fCBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTtcblxuXHRcdHN3aXRjaCAoYW5ub3RhdGlvblR5cGUpIHtcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFBlcmlvZDpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMDFcIjtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2Q6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gXCIxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyUXVhcnRlcjpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhciArIFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsV2Vlazpcblx0XHRcdFx0c1ZhbHVlID0gXCIwMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcldlZWs6XG5cdFx0XHRcdHNWYWx1ZSA9IHRoaXMuZnVsbFllYXIgKyBcIjAxXCI7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNEYXlPZkZpc2NhbFllYXI6XG5cdFx0XHRcdHNWYWx1ZSA9IFwiMVwiO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclZhcmlhbnQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0c1ZhbHVlID0gdGhpcy5mdWxsWWVhcjtcblx0XHR9XG5cblx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiRklTQ0FMX1ZBTElEQVRJT05fRkFJTFNcIiwgW3RoaXMuZm9ybWF0VmFsdWUoc1ZhbHVlLCBcInN0cmluZ1wiKV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBpbmhlcml0RG9jXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TmFtZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiBcInNhcC5mZS5jb3JlLnR5cGUuRmlzY2FsRGF0ZVwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGZvcm1hdHRlciB0aGF0IGlzIGFzc2lnbmVkIHRvIHRoaXMgcGFydGljdWxhciBGaXNjYWxEYXRlIHR5cGUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIFRoZSBhc3NpZ25lZCBpbnN0YW5jZSBvZiBGaXNjYWxGb3JtYXRcblx0ICovXG5cdHB1YmxpYyBnZXRGb3JtYXR0ZXIoKTogRmlzY2FsRm9ybWF0IHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5mb3JtYXR0ZXI7XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IEZpc2NhbERhdGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FiscalDate.js","names":["sap","ui","define","FiscalFormat","ClassSupport","CalendarType","Core","ODataStringType","ValidateException","_dec","_class","_class2","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","FiscalDate","_ODataStringType","formatOptions","constraints","_this","fiscalType","maxLength","call","this","annotationType","format","dateFormats","formatter","getDateInstance","calendarType","Gregorian","_proto","getPattern","_this$formatter","formatValue","value","targetType","parseValue","sourceType","parse","validateValue","error","validate","getErrorMessage","sValue","fullYear","Date","getFullYear","toString","getLibraryResourceBundle","getText","getName","getFormatter"],"sources":["FiscalDate-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,sCAAuC,mCAAoC,2BAA4B,mBAAoB,iCAAkC,kCAAmC,SAAUC,EAAcC,EAAcC,EAAcC,EAAMC,EAAiBC,GACxR,aAEA,IAAIC,EAAMC,EAAQC,EAClB,IAAIC,EAAiBR,EAAaQ,eAClC,SAASC,EAAeC,EAAUC,GAAcD,EAASE,UAAYC,OAAOC,OAAOH,EAAWC,WAAYF,EAASE,UAAUG,YAAcL,EAAUM,EAAgBN,EAAUC,EAAa,CAC5L,SAASK,EAAgBC,EAAGC,GAAKF,EAAkBH,OAAOM,eAAiBN,OAAOM,eAAeC,OAAS,SAASJ,EAAgBC,EAAGC,GAAKD,EAAEI,UAAYH,EAAG,OAAOD,CAAG,EAAG,OAAOD,EAAgBC,EAAGC,EAAI,CAavM,IAAII,GAAcjB,EAAOG,EAAe,+BAAgCH,EAAKC,GAAUC,EAAuB,SAAUgB,GACtHd,EAAea,EAAYC,GAC3B,SAASD,EAAWE,EAAeC,GACjC,IAAIC,EACJ,IAAKF,EAAcG,aAAe,qDAAuDH,EAAcG,aAAe,sDAAwDH,EAAcG,aAAe,oDAAsDF,IAAgB,MAAQA,SAAqB,GAAKA,EAAYG,UAAW,CAMxUH,EAAYG,UAAYH,EAAYG,UAAY,CAClD,CACAF,EAAQH,EAAiBM,KAAKC,KAAMN,EAAeC,IAAgBK,KACnEJ,EAAMK,eAAiBP,EAAcG,WACrC,MAAMK,EAASV,EAAWW,YAAYP,EAAMK,gBAC5C,GAAIC,EAAQ,CACVN,EAAMQ,UAAYnC,EAAaoC,gBAAgB,CAC7CH,SACAI,aAAcnC,EAAaoC,WAE/B,CACA,OAAOX,CACT,CAOA,IAAIY,EAAShB,EAAWV,UACxB0B,EAAOC,WAAa,SAASA,IAC3B,IAAIC,EACJ,OAAQA,EAAkBV,KAAKI,aAAe,MAAQM,SAAyB,OAAS,EAAIA,EAAgBD,YAC9G,EASAD,EAAOG,YAAc,SAASA,EAAYC,EAAOC,GAC/C,OAAOb,KAAKI,UAAYJ,KAAKI,UAAUF,OAAOT,EAAiBX,UAAU6B,YAAYZ,KAAKC,KAAMY,EAAOC,IAAepB,EAAiBX,UAAU6B,YAAYZ,KAAKC,KAAMY,EAAOC,EACjL,EASAL,EAAOM,WAAa,SAASA,EAAWF,EAAOG,GAC7C,OAAOf,KAAKI,UAAYJ,KAAKI,UAAUY,MAAMvB,EAAiBX,UAAUgC,WAAWf,KAAKC,KAAMY,EAAOG,IAAetB,EAAiBX,UAAUgC,WAAWf,KAAKC,KAAMY,EAAOG,EAC9K,EAKAP,EAAOS,cAAgB,SAASA,EAAcL,GAC5C,IACEnB,EAAiBX,UAAUmC,cAAclB,KAAKC,KAAMY,
|
|
1
|
+
{"version":3,"file":"FiscalDate.js","names":["sap","ui","define","FiscalFormat","ClassSupport","CalendarType","Core","ODataStringType","ValidateException","_dec","_class","_class2","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","FiscalDate","_ODataStringType","formatOptions","constraints","_this","fiscalType","maxLength","call","this","annotationType","format","dateFormats","formatter","getDateInstance","calendarType","Gregorian","_proto","getPattern","_this$formatter","formatValue","value","targetType","parseValue","sourceType","parse","validateValue","error","validate","getErrorMessage","sValue","fullYear","Date","getFullYear","toString","getLibraryResourceBundle","getText","getName","getFormatter"],"sources":["FiscalDate-dbg.js"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import ValidateException from "sap/ui/model/ValidateException";
|
|
|
13
13
|
* @param formatOptions Format options
|
|
14
14
|
* @param formatOptions.fiscalType String with a fiscal annotation type
|
|
15
15
|
* @param constraints Constraints
|
|
16
|
-
* @
|
|
16
|
+
* @since 1.110.0
|
|
17
17
|
* @experimental
|
|
18
18
|
* @extends sap.ui.model.odata.type.String
|
|
19
19
|
* @alias {sap.fe.core.type.FiscalDate} The implementation of the fiscal date
|
|
@@ -21,6 +21,7 @@ import ValidateException from "sap/ui/model/ValidateException";
|
|
|
21
21
|
@defineUI5Class("sap.fe.core.type.FiscalDate")
|
|
22
22
|
class FiscalDate extends ODataStringType {
|
|
23
23
|
private annotationType: CommonAnnotationTerms | undefined;
|
|
24
|
+
|
|
24
25
|
private fullYear: string | undefined;
|
|
25
26
|
|
|
26
27
|
private static dateFormats = {
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/odata/TypeUtil"], function (merge, BaseType, ODataTypeUtil) {
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/odata/TypeUtil"], function (BindingToolkit, merge, BaseType, ODataTypeUtil) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
var EDM_TYPE_MAPPING = BindingToolkit.EDM_TYPE_MAPPING;
|
|
8
9
|
const ODataV4TypeUtil = Object.assign({}, ODataTypeUtil);
|
|
9
10
|
ODataV4TypeUtil.getBaseType = function (type, formatOptions, constraints) {
|
|
10
11
|
switch (type) {
|
|
@@ -28,14 +29,8 @@ sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/od
|
|
|
28
29
|
};
|
|
29
30
|
ODataV4TypeUtil.getDataTypeClassName = function (type) {
|
|
30
31
|
// V4 specific types
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// V4 Date
|
|
34
|
-
"Edm.TimeOfDay": "sap.ui.model.odata.type.TimeOfDay" // V4 constraints: {precision}
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
if (edmTypes[type]) {
|
|
38
|
-
type = edmTypes[type];
|
|
32
|
+
if (EDM_TYPE_MAPPING[type]) {
|
|
33
|
+
type = EDM_TYPE_MAPPING[type].type;
|
|
39
34
|
} else {
|
|
40
35
|
type = ODataTypeUtil.getDataTypeClassName.call(ODataV4TypeUtil, type);
|
|
41
36
|
}
|
|
@@ -55,4 +50,4 @@ sap.ui.define(["sap/base/util/merge", "sap/ui/mdc/enum/BaseType", "sap/ui/mdc/od
|
|
|
55
50
|
};
|
|
56
51
|
return ODataV4TypeUtil;
|
|
57
52
|
}, false);
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPRGF0YVY0VHlwZVV0aWwiLCJPYmplY3QiLCJhc3NpZ24iLCJPRGF0YVR5cGVVdGlsIiwiZ2V0QmFzZVR5cGUiLCJ0eXBlIiwiZm9ybWF0T3B0aW9ucyIsImNvbnN0cmFpbnRzIiwiQmFzZVR5cGUiLCJEYXRlIiwiVGltZSIsImhhc093blByb3BlcnR5Iiwic2hvd01lYXN1cmUiLCJzaG93TnVtYmVyIiwiVW5pdCIsIk51bWVyaWMiLCJTdHJpbmciLCJjYWxsIiwiZ2V0RGF0YVR5cGVDbGFzc05hbWUiLCJFRE1fVFlQRV9NQVBQSU5HIiwiZ2V0RGF0YVR5cGVJbnN0YW5jZSIsImRhdGFUeXBlIiwibWVyZ2UiLCJWNCIsIlR5cGVDbGFzcyIsImdldERhdGFUeXBlQ2xhc3MiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIlR5cGVVdGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVETV9UWVBFX01BUFBJTkcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgQmFzZVR5cGUgZnJvbSBcInNhcC91aS9tZGMvZW51bS9CYXNlVHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJhaW50cywgRm9ybWF0T3B0aW9ucyB9IGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL1R5cGVVdGlsXCI7XG5pbXBvcnQgT0RhdGFUeXBlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS9UeXBlVXRpbFwiO1xuaW1wb3J0IHR5cGUgU2ltcGxlVHlwZSBmcm9tIFwic2FwL3VpL21vZGVsL1NpbXBsZVR5cGVcIjtcblxuY29uc3QgT0RhdGFWNFR5cGVVdGlsID0gT2JqZWN0LmFzc2lnbih7fSwgT0RhdGFUeXBlVXRpbCk7XG5PRGF0YVY0VHlwZVV0aWwuZ2V0QmFzZVR5cGUgPSBmdW5jdGlvbiAodHlwZTogc3RyaW5nLCBmb3JtYXRPcHRpb25zPzogRm9ybWF0T3B0aW9ucywgY29uc3RyYWludHM/OiBDb25zdHJhaW50cyk6IEJhc2VUeXBlIHtcblx0c3dpdGNoICh0eXBlKSB7XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkRhdGVcIjpcblx0XHRcdHJldHVybiBCYXNlVHlwZS5EYXRlO1xuXHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5UaW1lT2ZEYXlcIjpcblx0XHRcdHJldHVybiBCYXNlVHlwZS5UaW1lO1xuXHRcdGNhc2UgXCJzYXAudWkubW9kZWwub2RhdGEudHlwZS5Vbml0XCI6XG5cdFx0Y2FzZSBcInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLkN1cnJlbmN5XCI6XG5cdFx0XHRpZiAoXG5cdFx0XHRcdCFmb3JtYXRPcHRpb25zIHx8XG5cdFx0XHRcdCgoIWZvcm1hdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoXCJzaG93TWVhc3VyZVwiKSB8fCBmb3JtYXRPcHRpb25zLnNob3dNZWFzdXJlKSAmJlxuXHRcdFx0XHRcdCghZm9ybWF0T3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShcInNob3dOdW1iZXJcIikgfHwgZm9ybWF0T3B0aW9ucy5zaG93TnVtYmVyKSlcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVR5cGUuVW5pdDtcblx0XHRcdH0gZWxzZSBpZiAoIWZvcm1hdE9wdGlvbnMuaGFzT3duUHJvcGVydHkoXCJzaG93TnVtYmVyXCIpIHx8IGZvcm1hdE9wdGlvbnMuc2hvd051bWJlcikge1xuXHRcdFx0XHRyZXR1cm4gQmFzZVR5cGUuTnVtZXJpYzsgLy8gb25seSBudW1iZXIgdG8gc2hvd1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIEJhc2VUeXBlLlN0cmluZzsgLy8gb25seSB1bml0IHRvIHNob3dcblx0XHRcdH1cblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIE9EYXRhVHlwZVV0aWwuZ2V0QmFzZVR5cGUuY2FsbChPRGF0YVY0VHlwZVV0aWwsIHR5cGUsIGZvcm1hdE9wdGlvbnMsIGNvbnN0cmFpbnRzKTtcblx0fVxufTtcbk9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUNsYXNzTmFtZSA9IGZ1bmN0aW9uICh0eXBlOiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvLyBWNCBzcGVjaWZpYyB0eXBlc1xuXHRpZiAoRURNX1RZUEVfTUFQUElOR1t0eXBlXSkge1xuXHRcdHR5cGUgPSBFRE1fVFlQRV9NQVBQSU5HW3R5cGVdLnR5cGU7XG5cdH0gZWxzZSB7XG5cdFx0dHlwZSA9IE9EYXRhVHlwZVV0aWwuZ2V0RGF0YVR5cGVDbGFzc05hbWUuY2FsbChPRGF0YVY0VHlwZVV0aWwsIHR5cGUpO1xuXHR9XG5cdHJldHVybiB0eXBlO1xufTtcbk9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUluc3RhbmNlID0gZnVuY3Rpb24gKGRhdGFUeXBlOiBzdHJpbmcsIGZvcm1hdE9wdGlvbnM/OiBGb3JtYXRPcHRpb25zLCBjb25zdHJhaW50cz86IENvbnN0cmFpbnRzKTogU2ltcGxlVHlwZSB7XG5cdHN3aXRjaCAoZGF0YVR5cGUpIHtcblx0XHRjYXNlIFwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6XG5cdFx0XHRjb25zdHJhaW50cyA9IG1lcmdlKHt9LCBjb25zdHJhaW50cyB8fCB7fSk7XG5cdFx0XHRjb25zdHJhaW50cy5WNCA9IHRydWU7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHR9XG5cdGNvbnN0IFR5cGVDbGFzcyA9IE9EYXRhVjRUeXBlVXRpbC5nZXREYXRhVHlwZUNsYXNzKGRhdGFUeXBlKTtcblx0cmV0dXJuIG5ldyBUeXBlQ2xhc3MoZm9ybWF0T3B0aW9ucywgY29uc3RyYWludHMpO1xufTtcbmV4cG9ydCBkZWZhdWx0IE9EYXRhVjRUeXBlVXRpbDtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7RUFPQSxNQUFNQSxlQUFlLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFQyxhQUFhLENBQUM7RUFDeERILGVBQWUsQ0FBQ0ksV0FBVyxHQUFHLFVBQVVDLElBQVksRUFBRUMsYUFBNkIsRUFBRUMsV0FBeUIsRUFBWTtJQUN6SCxRQUFRRixJQUFJO01BQ1gsS0FBSyw4QkFBOEI7UUFDbEMsT0FBT0csUUFBUSxDQUFDQyxJQUFJO01BQ3JCLEtBQUssbUNBQW1DO1FBQ3ZDLE9BQU9ELFFBQVEsQ0FBQ0UsSUFBSTtNQUNyQixLQUFLLDhCQUE4QjtNQUNuQyxLQUFLLGtDQUFrQztRQUN0QyxJQUNDLENBQUNKLGFBQWEsSUFDYixDQUFDLENBQUNBLGFBQWEsQ0FBQ0ssY0FBYyxDQUFDLGFBQWEsQ0FBQyxJQUFJTCxhQUFhLENBQUNNLFdBQVcsTUFDekUsQ0FBQ04sYUFBYSxDQUFDSyxjQUFjLENBQUMsWUFBWSxDQUFDLElBQUlMLGFBQWEsQ0FBQ08sVUFBVSxDQUFFLEVBQzFFO1VBQ0QsT0FBT0wsUUFBUSxDQUFDTSxJQUFJO1FBQ3JCLENBQUMsTUFBTSxJQUFJLENBQUNSLGFBQWEsQ0FBQ0ssY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJTCxhQUFhLENBQUNPLFVBQVUsRUFBRTtVQUNuRixPQUFPTCxRQUFRLENBQUNPLE9BQU8sQ0FBQyxDQUFDO1FBQzFCLENBQUMsTUFBTTtVQUNOLE9BQU9QLFFBQVEsQ0FBQ1EsTUFBTSxDQUFDLENBQUM7UUFDekI7O01BQ0Q7UUFDQyxPQUFPYixhQUFhLENBQUNDLFdBQVcsQ0FBQ2EsSUFBSSxDQUFDakIsZUFBZSxFQUFFSyxJQUFJLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxDQUFDO0lBQUM7RUFFNUYsQ0FBQztFQUNEUCxlQUFlLENBQUNrQixvQkFBb0IsR0FBRyxVQUFVYixJQUFZLEVBQVU7SUFDdEU7SUFDQSxJQUFJYyxnQkFBZ0IsQ0FBQ2QsSUFBSSxDQUFDLEVBQUU7TUFDM0JBLElBQUksR0FBR2MsZ0JBQWdCLENBQUNkLElBQUksQ0FBQyxDQUFDQSxJQUFJO0lBQ25DLENBQUMsTUFBTTtNQUNOQSxJQUFJLEdBQUdGLGFBQWEsQ0FBQ2Usb0JBQW9CLENBQUNELElBQUksQ0FBQ2pCLGVBQWUsRUFBRUssSUFBSSxDQUFDO0lBQ3RFO0lBQ0EsT0FBT0EsSUFBSTtFQUNaLENBQUM7RUFDREwsZUFBZSxDQUFDb0IsbUJBQW1CLEdBQUcsVUFBVUMsUUFBZ0IsRUFBRWYsYUFBNkIsRUFBRUMsV0FBeUIsRUFBYztJQUN2SSxRQUFRYyxRQUFRO01BQ2YsS0FBSyx3Q0FBd0M7TUFDN0MsS0FBSyxvQkFBb0I7UUFDeEJkLFdBQVcsR0FBR2UsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFZixXQUFXLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUNBLFdBQVcsQ0FBQ2dCLEVBQUUsR0FBRyxJQUFJO1FBQ3JCO01BQ0Q7SUFBUTtJQUVULE1BQU1DLFNBQVMsR0FBR3hCLGVBQWUsQ0FBQ3lCLGdCQUFnQixDQUFDSixRQUFRLENBQUM7SUFDNUQsT0FBTyxJQUFJRyxTQUFTLENBQUNsQixhQUFhLEVBQUVDLFdBQVcsQ0FBQztFQUNqRCxDQUFDO0VBQUMsT0FDYVAsZUFBZTtBQUFBIn0=
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/util/merge","sap/ui/mdc/enum/BaseType","sap/ui/mdc/odata/TypeUtil"],function(e,a,t){"use strict";const
|
|
5
|
+
sap.ui.define(["sap/fe/core/helpers/BindingToolkit","sap/base/util/merge","sap/ui/mdc/enum/BaseType","sap/ui/mdc/odata/TypeUtil"],function(e,a,t,s){"use strict";var r=e.EDM_TYPE_MAPPING;const u=Object.assign({},s);u.getBaseType=function(e,a,r){switch(e){case"sap.ui.model.odata.type.Date":return t.Date;case"sap.ui.model.odata.type.TimeOfDay":return t.Time;case"sap.ui.model.odata.type.Unit":case"sap.ui.model.odata.type.Currency":if(!a||(!a.hasOwnProperty("showMeasure")||a.showMeasure)&&(!a.hasOwnProperty("showNumber")||a.showNumber)){return t.Unit}else if(!a.hasOwnProperty("showNumber")||a.showNumber){return t.Numeric}else{return t.String}default:return s.getBaseType.call(u,e,a,r)}};u.getDataTypeClassName=function(e){if(r[e]){e=r[e].type}else{e=s.getDataTypeClassName.call(u,e)}return e};u.getDataTypeInstance=function(e,t,s){switch(e){case"sap.ui.model.odata.type.DateTimeOffset":case"Edm.DateTimeOffset":s=a({},s||{});s.V4=true;break;default:}const r=u.getDataTypeClass(e);return new r(t,s)};return u},false);
|
|
6
6
|
//# sourceMappingURL=TypeUtil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeUtil.js","names":["sap","ui","define","merge","BaseType","ODataTypeUtil","ODataV4TypeUtil","Object","assign","getBaseType","type","formatOptions","constraints","Date","Time","hasOwnProperty","showMeasure","showNumber","Unit","Numeric","String","call","getDataTypeClassName","
|
|
1
|
+
{"version":3,"file":"TypeUtil.js","names":["sap","ui","define","BindingToolkit","merge","BaseType","ODataTypeUtil","EDM_TYPE_MAPPING","ODataV4TypeUtil","Object","assign","getBaseType","type","formatOptions","constraints","Date","Time","hasOwnProperty","showMeasure","showNumber","Unit","Numeric","String","call","getDataTypeClassName","getDataTypeInstance","dataType","V4","TypeClass","getDataTypeClass"],"sources":["TypeUtil-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,qCAAsC,sBAAuB,2BAA4B,6BAA8B,SAAUC,EAAgBC,EAAOC,EAAUC,GAC/K,aAEA,IAAIC,EAAmBJ,EAAeI,iBACtC,MAAMC,EAAkBC,OAAOC,OAAO,CAAC,EAAGJ,GAC1CE,EAAgBG,YAAc,SAAUC,EAAMC,EAAeC,GAC3D,OAAQF,GACN,IAAK,+BACH,OAAOP,EAASU,KAClB,IAAK,oCACH,OAAOV,EAASW,KAClB,IAAK,+BACL,IAAK,mCACH,IAAKH,KAAmBA,EAAcI,eAAe,gBAAkBJ,EAAcK,gBAAkBL,EAAcI,eAAe,eAAiBJ,EAAcM,YAAa,CAC9K,OAAOd,EAASe,IAClB,MAAO,IAAKP,EAAcI,eAAe,eAAiBJ,EAAcM,WAAY,CAClF,OAAOd,EAASgB,OAClB,KAAO,CACL,OAAOhB,EAASiB,MAClB,CAEF,QACE,OAAOhB,EAAcK,YAAYY,KAAKf,EAAiBI,EAAMC,EAAeC,GAElF,EACAN,EAAgBgB,qBAAuB,SAAUZ,GAE/C,GAAIL,EAAiBK,GAAO,CAC1BA,EAAOL,EAAiBK,GAAMA,IAChC,KAAO,CACLA,EAAON,EAAckB,qBAAqBD,KAAKf,EAAiBI,EAClE,CACA,OAAOA,CACT,EACAJ,EAAgBiB,oBAAsB,SAAUC,EAAUb,EAAeC,GACvE,OAAQY,GACN,IAAK,yCACL,IAAK,qBACHZ,EAAcV,EAAM,CAAC,EAAGU,GAAe,CAAC,GACxCA,EAAYa,GAAK,KACjB,MACF,SAEF,MAAMC,EAAYpB,EAAgBqB,iBAAiBH,GACnD,OAAO,IAAIE,EAAUf,EAAeC,EACtC,EACA,OAAON,CACT,EAAG"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EDM_TYPE_MAPPING } from "sap/fe/core/helpers/BindingToolkit";
|
|
1
2
|
import merge from "sap/base/util/merge";
|
|
2
3
|
import BaseType from "sap/ui/mdc/enum/BaseType";
|
|
3
4
|
import type { Constraints, FormatOptions } from "sap/ui/mdc/odata/TypeUtil";
|
|
@@ -30,12 +31,8 @@ ODataV4TypeUtil.getBaseType = function (type: string, formatOptions?: FormatOpti
|
|
|
30
31
|
};
|
|
31
32
|
ODataV4TypeUtil.getDataTypeClassName = function (type: string): string {
|
|
32
33
|
// V4 specific types
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"Edm.TimeOfDay": "sap.ui.model.odata.type.TimeOfDay" // V4 constraints: {precision}
|
|
36
|
-
} as any;
|
|
37
|
-
if (edmTypes[type]) {
|
|
38
|
-
type = edmTypes[type];
|
|
34
|
+
if (EDM_TYPE_MAPPING[type]) {
|
|
35
|
+
type = EDM_TYPE_MAPPING[type].type;
|
|
39
36
|
} else {
|
|
40
37
|
type = ODataTypeUtil.getDataTypeClassName.call(ODataV4TypeUtil, type);
|
|
41
38
|
}
|