@sapui5/sap.fe.core 1.108.2 → 1.110.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/README.md +5 -1
- package/package.json +11 -9
- package/src/.eslintrc +7 -0
- package/src/sap/fe/core/.library +39 -37
- package/src/sap/fe/core/.supportrc +3 -3
- package/src/sap/fe/core/ActionRuntime.js +72 -27
- package/src/sap/fe/core/ActionRuntime.ts +104 -21
- package/src/sap/fe/core/AppComponent.js +102 -120
- package/src/sap/fe/core/AppComponent.ts +148 -45
- package/src/sap/fe/core/AppStateHandler.js +105 -91
- package/src/sap/fe/core/AppStateHandler.ts +85 -23
- package/src/sap/fe/core/BaseController.js +5 -20
- package/src/sap/fe/core/BaseController.ts +11 -2
- package/src/sap/fe/core/CommonUtils.js +770 -1079
- package/src/sap/fe/core/CommonUtils.ts +750 -491
- package/src/sap/fe/core/ExtensionAPI.js +69 -96
- package/src/sap/fe/core/ExtensionAPI.ts +15 -17
- package/src/sap/fe/core/PageController.js +21 -46
- package/src/sap/fe/core/PageController.ts +11 -2
- package/src/sap/fe/core/TemplateComponent.js +6 -51
- package/src/sap/fe/core/TemplateComponent.ts +27 -16
- package/src/sap/fe/core/TemplateModel.js +18 -24
- package/src/sap/fe/core/TemplateModel.ts +25 -6
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +8 -23
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +5 -4
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +146 -180
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +144 -57
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.js +43 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFragment.ts +11 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +436 -556
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +288 -157
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +215 -202
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +93 -51
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +11 -26
- package/src/sap/fe/core/controllerextensions/EditFlow.js +407 -596
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +163 -56
- package/src/sap/fe/core/controllerextensions/Feedback.js +70 -0
- package/src/sap/fe/core/controllerextensions/Feedback.ts +64 -0
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +12 -23
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +127 -182
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +65 -32
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +96 -198
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +4 -5
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +134 -291
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +21 -12
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +111 -214
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +44 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.js +24 -44
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +3 -2
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +39 -52
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +26 -7
- package/src/sap/fe/core/controllerextensions/PageReady.js +81 -119
- package/src/sap/fe/core/controllerextensions/PageReady.ts +36 -15
- package/src/sap/fe/core/controllerextensions/Paginator.js +16 -51
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -3
- package/src/sap/fe/core/controllerextensions/Placeholder.js +7 -33
- package/src/sap/fe/core/controllerextensions/Routing.js +24 -32
- package/src/sap/fe/core/controllerextensions/Routing.ts +6 -1
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +53 -98
- package/src/sap/fe/core/controllerextensions/Share.ts +6 -3
- package/src/sap/fe/core/controllerextensions/SideEffects.js +103 -174
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +37 -22
- package/src/sap/fe/core/controllerextensions/ViewState.js +341 -276
- package/src/sap/fe/core/controllerextensions/ViewState.ts +236 -84
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +6 -22
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +8 -2
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +66 -88
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +64 -17
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +28 -34
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +22 -1
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +69 -65
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +31 -12
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +15 -13
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +273 -906
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +142 -420
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +49 -115
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +12 -7
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +70 -89
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +313 -320
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +582 -683
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +507 -386
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +111 -102
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +102 -79
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +689 -154
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +866 -31
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.js +24 -101
- package/src/sap/fe/core/controllerextensions/pageReady/DataQueryWatcher.ts +5 -5
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +91 -217
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +3 -20
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +1 -0
- package/src/sap/fe/core/controls/ActionPartial.fragment.xml +46 -46
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/AnyElement.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +4 -26
- package/src/sap/fe/core/controls/ConditionalWrapper.js +16 -33
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +16 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +41 -94
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +1 -1
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +5 -34
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +5 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +7 -7
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +56 -58
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +53 -33
- package/src/sap/fe/core/controls/FieldWrapper.js +6 -49
- package/src/sap/fe/core/controls/FileWrapper.js +51 -136
- package/src/sap/fe/core/controls/FileWrapper.ts +25 -29
- package/src/sap/fe/core/controls/FilterBar.js +19 -54
- package/src/sap/fe/core/controls/FormElementWrapper.js +1 -22
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -5
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +2 -2
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +24 -46
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +14 -41
- package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +4 -4
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +26 -67
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -20
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +12 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +17 -46
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +3 -3
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +1 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +6 -78
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +4 -4
- package/src/sap/fe/core/converters/ConverterContext.js +44 -98
- package/src/sap/fe/core/converters/ConverterContext.ts +1 -1
- package/src/sap/fe/core/converters/ManifestSettings.js +1 -20
- package/src/sap/fe/core/converters/ManifestSettings.ts +16 -9
- package/src/sap/fe/core/converters/ManifestWrapper.js +97 -158
- package/src/sap/fe/core/converters/ManifestWrapper.ts +4 -0
- package/src/sap/fe/core/converters/MetaModelConverter.js +28 -167
- package/src/sap/fe/core/converters/MetaModelConverter.ts +9 -3
- package/src/sap/fe/core/converters/TemplateConverter.js +10 -22
- package/src/sap/fe/core/converters/TemplateConverter.ts +10 -7
- package/src/sap/fe/core/converters/annotations/DataField.js +88 -132
- package/src/sap/fe/core/converters/annotations/DataField.ts +90 -38
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +57 -379
- package/src/sap/fe/core/converters/controls/Common/Action.js +45 -115
- package/src/sap/fe/core/converters/controls/Common/Action.ts +17 -5
- package/src/sap/fe/core/converters/controls/Common/Chart.js +20 -73
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +21 -14
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -9
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +40 -94
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +44 -31
- package/src/sap/fe/core/converters/controls/Common/Form.js +26 -63
- package/src/sap/fe/core/converters/controls/Common/Form.ts +24 -10
- package/src/sap/fe/core/converters/controls/Common/KPI.js +13 -63
- package/src/sap/fe/core/converters/controls/Common/Table.js +368 -707
- package/src/sap/fe/core/converters/controls/Common/Table.ts +308 -197
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +54 -109
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +15 -9
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +69 -210
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +23 -16
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +12 -80
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +3 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -19
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +45 -136
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +10 -10
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +82 -173
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +48 -22
- package/src/sap/fe/core/converters/helpers/Aggregation.js +24 -66
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +3 -7
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +9 -19
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +0 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +20 -48
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +5 -1
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +12 -51
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +13 -11
- package/src/sap/fe/core/converters/helpers/ID.js +3 -17
- package/src/sap/fe/core/converters/helpers/ID.ts +2 -3
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -6
- package/src/sap/fe/core/converters/helpers/Key.js +10 -19
- package/src/sap/fe/core/converters/helpers/Key.ts +3 -3
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +2 -20
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +2 -37
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +126 -131
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +112 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +67 -131
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +58 -27
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -183
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +73 -104
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +74 -67
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +77 -69
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +20 -29
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +21 -0
- package/src/sap/fe/core/formatters/FPMFormatter.js +3 -7
- package/src/sap/fe/core/formatters/KPIFormatter.js +5 -13
- package/src/sap/fe/core/formatters/StandardFormatter.js +3 -18
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -2
- package/src/sap/fe/core/formatters/TableFormatter.js +87 -53
- package/src/sap/fe/core/formatters/TableFormatter.ts +96 -9
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -4
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -37
- package/src/sap/fe/core/fpm/Component.js +2 -17
- package/src/sap/fe/core/helpers/AnnotationEnum.js +10 -20
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +6 -6
- package/src/sap/fe/core/helpers/AppStartupHelper.js +16 -52
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +1 -1
- package/src/sap/fe/core/helpers/BindingToolkit.js +106 -364
- package/src/sap/fe/core/helpers/BindingToolkit.ts +30 -7
- package/src/sap/fe/core/helpers/ClassSupport.js +16 -97
- package/src/sap/fe/core/helpers/ClassSupport.ts +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.js +621 -0
- package/src/sap/fe/core/helpers/DeleteHelper.ts +796 -0
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -12
- package/src/sap/fe/core/helpers/EditState.js +2 -5
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -10
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -8
- package/src/sap/fe/core/helpers/FPMHelper.ts +2 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +8 -38
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -5
- package/src/sap/fe/core/helpers/LoaderUtils.js +1 -7
- package/src/sap/fe/core/helpers/MassEditHelper.js +177 -289
- package/src/sap/fe/core/helpers/MassEditHelper.ts +124 -91
- package/src/sap/fe/core/helpers/MessageStrip.js +12 -28
- package/src/sap/fe/core/helpers/MessageStrip.ts +7 -7
- package/src/sap/fe/core/helpers/ModelHelper.js +62 -103
- package/src/sap/fe/core/helpers/ModelHelper.ts +58 -20
- package/src/sap/fe/core/helpers/PasteHelper.js +28 -51
- package/src/sap/fe/core/helpers/PasteHelper.ts +10 -9
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +112 -136
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +111 -111
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +5 -11
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +26 -32
- package/src/sap/fe/core/helpers/StableIdHelper.js +166 -218
- package/src/sap/fe/core/helpers/StableIdHelper.ts +175 -191
- package/src/sap/fe/core/helpers/Synchronization.js +1 -8
- package/src/sap/fe/core/helpers/ToES6Promise.js +1 -4
- package/src/sap/fe/core/helpers/TypeGuards.js +22 -0
- package/src/sap/fe/core/helpers/TypeGuards.ts +9 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +1 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +3 -23
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +2 -1
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +4 -16
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +2 -5
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +4 -27
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +1 -1
- package/src/sap/fe/core/library.js +9 -48
- package/src/sap/fe/core/library.support.js +3 -2
- package/src/sap/fe/core/library.support.ts +3 -1
- package/src/sap/fe/core/library.ts +3 -8
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +74 -39
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +71 -26
- package/src/sap/fe/core/messagebundle.properties +113 -67
- package/src/sap/fe/core/messagebundle_ar.properties +20 -3
- package/src/sap/fe/core/messagebundle_bg.properties +22 -5
- package/src/sap/fe/core/messagebundle_ca.properties +21 -4
- package/src/sap/fe/core/messagebundle_cs.properties +21 -4
- package/src/sap/fe/core/messagebundle_cy.properties +22 -5
- package/src/sap/fe/core/messagebundle_da.properties +20 -3
- package/src/sap/fe/core/messagebundle_de.properties +38 -21
- package/src/sap/fe/core/messagebundle_el.properties +20 -3
- package/src/sap/fe/core/messagebundle_en.properties +38 -21
- package/src/sap/fe/core/messagebundle_en_GB.properties +20 -3
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +41 -28
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +41 -24
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +42 -29
- package/src/sap/fe/core/messagebundle_es.properties +40 -23
- package/src/sap/fe/core/messagebundle_es_MX.properties +20 -3
- package/src/sap/fe/core/messagebundle_et.properties +20 -3
- package/src/sap/fe/core/messagebundle_fi.properties +20 -3
- package/src/sap/fe/core/messagebundle_fr.properties +21 -4
- package/src/sap/fe/core/messagebundle_fr_CA.properties +22 -5
- package/src/sap/fe/core/messagebundle_hi.properties +20 -3
- package/src/sap/fe/core/messagebundle_hr.properties +22 -5
- package/src/sap/fe/core/messagebundle_hu.properties +20 -3
- package/src/sap/fe/core/messagebundle_id.properties +20 -3
- package/src/sap/fe/core/messagebundle_it.properties +23 -6
- package/src/sap/fe/core/messagebundle_iw.properties +20 -3
- package/src/sap/fe/core/messagebundle_ja.properties +22 -5
- package/src/sap/fe/core/messagebundle_kk.properties +21 -4
- package/src/sap/fe/core/messagebundle_ko.properties +20 -3
- package/src/sap/fe/core/messagebundle_lt.properties +20 -3
- package/src/sap/fe/core/messagebundle_lv.properties +20 -3
- package/src/sap/fe/core/messagebundle_ms.properties +20 -3
- package/src/sap/fe/core/messagebundle_nl.properties +20 -3
- package/src/sap/fe/core/messagebundle_no.properties +20 -3
- package/src/sap/fe/core/messagebundle_pl.properties +21 -4
- package/src/sap/fe/core/messagebundle_pt.properties +20 -3
- package/src/sap/fe/core/messagebundle_pt_PT.properties +20 -3
- package/src/sap/fe/core/messagebundle_ro.properties +20 -3
- package/src/sap/fe/core/messagebundle_ru.properties +20 -3
- package/src/sap/fe/core/messagebundle_sh.properties +20 -3
- package/src/sap/fe/core/messagebundle_sk.properties +20 -3
- package/src/sap/fe/core/messagebundle_sl.properties +26 -9
- package/src/sap/fe/core/messagebundle_sv.properties +20 -3
- package/src/sap/fe/core/messagebundle_th.properties +21 -4
- package/src/sap/fe/core/messagebundle_tr.properties +20 -3
- package/src/sap/fe/core/messagebundle_uk.properties +23 -6
- package/src/sap/fe/core/messagebundle_vi.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_CN.properties +20 -3
- package/src/sap/fe/core/messagebundle_zh_TW.properties +20 -3
- package/src/sap/fe/core/operationsHelper.js +74 -101
- package/src/sap/fe/core/operationsHelper.ts +113 -44
- package/src/sap/fe/core/rootView/Fcl.controller.js +151 -228
- package/src/sap/fe/core/rootView/Fcl.controller.ts +90 -15
- package/src/sap/fe/core/rootView/Fcl.view.xml +1 -8
- package/src/sap/fe/core/rootView/NavContainer.controller.js +41 -78
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +32 -38
- package/src/sap/fe/core/rootView/RootViewBaseController.js +110 -181
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +37 -17
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +1 -18
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +13 -52
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +1 -22
- package/src/sap/fe/core/services/NavigationServiceFactory.js +45 -87
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +17 -10
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +4 -28
- package/src/sap/fe/core/services/RoutingServiceFactory.js +92 -250
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +8 -12
- package/src/sap/fe/core/services/ShellServicesFactory.js +122 -251
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +188 -273
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +143 -154
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +37 -135
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +59 -94
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -16
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/support/AnnotationIssue.support.js +6 -9
- package/src/sap/fe/core/support/AnnotationIssue.support.ts +4 -4
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.ts +3 -3
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +6 -9
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.ts +3 -3
- package/src/sap/fe/core/support/CommonHelper.js +7 -16
- package/src/sap/fe/core/support/Diagnostics.js +1 -10
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +6 -9
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.ts +3 -3
- package/src/sap/fe/core/templating/CommonFormatters.js +1 -15
- package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -20
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -20
- package/src/sap/fe/core/templating/DataModelPathHelper.js +49 -121
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +41 -31
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +8 -15
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +7 -7
- package/src/sap/fe/core/templating/EntitySetHelper.js +6 -31
- package/src/sap/fe/core/templating/FieldControlHelper.js +4 -21
- package/src/sap/fe/core/templating/FieldControlHelper.ts +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +40 -111
- package/src/sap/fe/core/templating/FilterHelper.ts +20 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -19
- package/src/sap/fe/core/templating/FilterTemplating.ts +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -34
- package/src/sap/fe/core/templating/PropertyHelper.js +120 -163
- package/src/sap/fe/core/templating/PropertyHelper.ts +69 -33
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +46 -0
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +34 -0
- package/src/sap/fe/core/templating/UIFormatters.js +40 -180
- package/src/sap/fe/core/templating/UIFormatters.ts +37 -43
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +3 -14
- package/src/sap/fe/core/type/Email.js +1 -10
- package/src/sap/fe/core/type/TypeUtil.js +1 -11
- package/ui5.yaml +0 -1
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +0 -35
- package/src/sap/fe/core/helpers/LRMessageStrip.js +0 -234
- package/src/sap/fe/core/helpers/LRMessageStrip.ts +0 -216
|
@@ -5,6 +5,17 @@
|
|
|
5
5
|
sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library", "sap/m/MessageBox", "sap/ui/core/Core", "../../operationsHelper"], function (Log, CommonUtils, FELibrary, MessageBox, Core, operationsHelper) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
|
+
function _catch(body, recover) {
|
|
9
|
+
try {
|
|
10
|
+
var result = body();
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return recover(e);
|
|
13
|
+
}
|
|
14
|
+
if (result && result.then) {
|
|
15
|
+
return result.then(void 0, recover);
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
8
19
|
/**
|
|
9
20
|
* Activates a document and closes the sticky session.
|
|
10
21
|
*
|
|
@@ -12,38 +23,54 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
12
23
|
* @name sap.fe.core.actions.sticky#activateDocument
|
|
13
24
|
* @memberof sap.fe.core.actions.sticky
|
|
14
25
|
* @static
|
|
15
|
-
* @param
|
|
16
|
-
* @param
|
|
26
|
+
* @param context Context of the document to be activated
|
|
27
|
+
* @param appComponent Context of the document to be activated
|
|
17
28
|
* @returns A promise resolve when the sticky session is activated
|
|
18
29
|
* @private
|
|
19
30
|
* @ui5-restricted
|
|
20
31
|
*/
|
|
21
|
-
var activateDocument = function (
|
|
32
|
+
var activateDocument = function (context, appComponent) {
|
|
22
33
|
try {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
var model = context.getModel(),
|
|
35
|
+
metaModel = model.getMetaModel(),
|
|
36
|
+
metaPath = metaModel.getMetaPath(context.getPath()),
|
|
37
|
+
saveActionAnnotation = metaModel.getObject("".concat(metaPath, "@com.sap.vocabularies.Session.v1.StickySessionSupported/SaveAction"));
|
|
38
|
+
if (!saveActionAnnotation) {
|
|
39
|
+
throw new Error("Save Action for Sticky Session not found for ".concat(metaPath));
|
|
40
|
+
}
|
|
41
|
+
return Promise.resolve(appComponent.getModel("sap.fe.i18n").getResourceBundle()).then(function (resourceBundle) {
|
|
42
|
+
var actionName = CommonUtils.getTranslatedText("C_OP_OBJECT_PAGE_SAVE", resourceBundle);
|
|
43
|
+
var saveAction = model.bindContext("".concat(saveActionAnnotation, "(...)"), context, {
|
|
26
44
|
$$inheritExpandSelect: true
|
|
27
45
|
});
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
label:
|
|
31
|
-
model:
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
return
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
var groupId = "direct";
|
|
47
|
+
var savePromise = saveAction.execute(groupId, undefined, operationsHelper.fnOnStrictHandlingFailed.bind(sticky, groupId, {
|
|
48
|
+
label: actionName,
|
|
49
|
+
model: model
|
|
50
|
+
}, resourceBundle, null, null, null, undefined, undefined));
|
|
51
|
+
model.submitBatch(groupId);
|
|
52
|
+
return _catch(function () {
|
|
53
|
+
return Promise.resolve(savePromise);
|
|
54
|
+
}, function (err) {
|
|
55
|
+
function _temp3() {
|
|
56
|
+
throw err;
|
|
57
|
+
}
|
|
58
|
+
var messagesPath = metaModel.getObject("".concat(metaPath, "/@").concat("com.sap.vocabularies.Common.v1.Messages", "/$Path"));
|
|
59
|
+
var _temp2 = function () {
|
|
60
|
+
if (messagesPath) {
|
|
61
|
+
var _temp4 = _catch(function () {
|
|
62
|
+
return Promise.resolve(appComponent.getSideEffectsService().requestSideEffects([{
|
|
63
|
+
$PropertyPath: messagesPath
|
|
64
|
+
}], context)).then(function () {});
|
|
65
|
+
}, function (error) {
|
|
66
|
+
Log.error("Error while requesting side effects", error);
|
|
67
|
+
});
|
|
68
|
+
if (_temp4 && _temp4.then) return _temp4.then(function () {});
|
|
69
|
+
}
|
|
70
|
+
}();
|
|
71
|
+
return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
47
74
|
} catch (e) {
|
|
48
75
|
return Promise.reject(e);
|
|
49
76
|
}
|
|
@@ -55,13 +82,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
55
82
|
* @name sap.fe.core.actions.sticky#discardDocument
|
|
56
83
|
* @memberof sap.fe.core.actions.sticky
|
|
57
84
|
* @static
|
|
58
|
-
* @param
|
|
85
|
+
* @param context Context of the document to be discarded
|
|
59
86
|
* @returns A promise resolved when the document is dicarded
|
|
60
87
|
* @private
|
|
61
88
|
* @ui5-restricted
|
|
62
89
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
90
|
/**
|
|
66
91
|
* Opens a sticky session to edit a document.
|
|
67
92
|
*
|
|
@@ -69,74 +94,65 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
69
94
|
* @name sap.fe.core.actions.sticky#editDocumentInStickySession
|
|
70
95
|
* @memberof sap.fe.core.actions.sticky
|
|
71
96
|
* @static
|
|
72
|
-
* @param
|
|
73
|
-
* @param
|
|
97
|
+
* @param context Context of the document to be edited
|
|
98
|
+
* @param appComponent The AppComponent
|
|
74
99
|
* @returns A Promise resolved when the sticky session is in edit mode
|
|
75
100
|
* @private
|
|
76
101
|
* @ui5-restricted
|
|
77
102
|
*/
|
|
78
|
-
var editDocumentInStickySession = function (
|
|
103
|
+
var editDocumentInStickySession = function (context, appComponent) {
|
|
79
104
|
try {
|
|
80
|
-
var
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
throw new Error("Edit Action for Sticky Session not found for ".concat(sMetaPath));
|
|
105
|
+
var model = context.getModel(),
|
|
106
|
+
metaModel = model.getMetaModel(),
|
|
107
|
+
metaPath = metaModel.getMetaPath(context.getPath()),
|
|
108
|
+
editActionAnnotation = metaModel.getObject("".concat(metaPath, "@com.sap.vocabularies.Session.v1.StickySessionSupported/EditAction"));
|
|
109
|
+
if (!editActionAnnotation) {
|
|
110
|
+
throw new Error("Edit Action for Sticky Session not found for ".concat(metaPath));
|
|
87
111
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
var
|
|
91
|
-
var oEditAction = oModel.bindContext("".concat(sEditAction, "(...)"), oContext, {
|
|
112
|
+
return Promise.resolve(appComponent.getModel("sap.fe.i18n").getResourceBundle()).then(function (resourceBundle) {
|
|
113
|
+
var actionName = CommonUtils.getTranslatedText("C_COMMON_OBJECT_PAGE_EDIT", resourceBundle);
|
|
114
|
+
var editAction = model.bindContext("".concat(editActionAnnotation, "(...)"), context, {
|
|
92
115
|
$$inheritExpandSelect: true
|
|
93
116
|
});
|
|
94
|
-
var
|
|
95
|
-
var
|
|
96
|
-
label:
|
|
97
|
-
model:
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
return Promise.resolve(
|
|
101
|
-
var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (oSideEffects !== null && oSideEffects !== void 0 && (_oSideEffects$trigger = oSideEffects.triggerActions) !== null && _oSideEffects$trigger !== void 0 && _oSideEffects$trigger.length) {
|
|
107
|
-
return Promise.resolve(oAppComponent.getSideEffectsService().requestSideEffectsForODataAction(oSideEffects, oNewContext)).then(function () {});
|
|
117
|
+
var groupId = "direct";
|
|
118
|
+
var editPromise = editAction.execute(groupId, undefined, operationsHelper.fnOnStrictHandlingFailed.bind(sticky, groupId, {
|
|
119
|
+
label: actionName,
|
|
120
|
+
model: model
|
|
121
|
+
}, resourceBundle, null, null, null, undefined, undefined));
|
|
122
|
+
model.submitBatch(groupId);
|
|
123
|
+
return Promise.resolve(editPromise).then(function (newContext) {
|
|
124
|
+
var sideEffects = appComponent.getSideEffectsService().getODataActionSideEffects(editActionAnnotation, newContext);
|
|
125
|
+
var _temp5 = function () {
|
|
126
|
+
if (sideEffects !== null && sideEffects !== void 0 && sideEffects.triggerActions && sideEffects.triggerActions.length) {
|
|
127
|
+
return Promise.resolve(appComponent.getSideEffectsService().requestSideEffectsForODataAction(sideEffects, newContext)).then(function () {});
|
|
108
128
|
}
|
|
109
129
|
}();
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}) : oNewContext;
|
|
130
|
+
return _temp5 && _temp5.then ? _temp5.then(function () {
|
|
131
|
+
return newContext;
|
|
132
|
+
}) : newContext;
|
|
114
133
|
});
|
|
115
134
|
});
|
|
116
135
|
} catch (e) {
|
|
117
136
|
return Promise.reject(e);
|
|
118
137
|
}
|
|
119
138
|
};
|
|
120
|
-
|
|
121
139
|
var ProgrammingModel = FELibrary.ProgrammingModel;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (!sDiscardAction) {
|
|
130
|
-
throw new Error("Discard Action for Sticky Session not found for ".concat(sMetaPath));
|
|
140
|
+
function discardDocument(context) {
|
|
141
|
+
var model = context.getModel(),
|
|
142
|
+
metaModel = model.getMetaModel(),
|
|
143
|
+
metaPath = metaModel.getMetaPath(context.getPath()),
|
|
144
|
+
discardActionAnnotation = metaModel.getObject("".concat(metaPath, "@com.sap.vocabularies.Session.v1.StickySessionSupported/DiscardAction"));
|
|
145
|
+
if (!discardActionAnnotation) {
|
|
146
|
+
throw new Error("Discard Action for Sticky Session not found for ".concat(metaPath));
|
|
131
147
|
}
|
|
132
|
-
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
-
return oContext;
|
|
148
|
+
var discardAction = model.bindContext("/".concat(discardActionAnnotation, "(...)"));
|
|
149
|
+
var discardPromise = discardAction.execute("direct").then(function () {
|
|
150
|
+
return context;
|
|
136
151
|
});
|
|
137
|
-
|
|
138
|
-
return
|
|
152
|
+
model.submitBatch("direct");
|
|
153
|
+
return discardPromise;
|
|
139
154
|
}
|
|
155
|
+
|
|
140
156
|
/**
|
|
141
157
|
* Process the Data loss confirmation.
|
|
142
158
|
*
|
|
@@ -145,37 +161,32 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
145
161
|
* @memberof sap.fe.core.actions.sticky
|
|
146
162
|
* @static
|
|
147
163
|
* @param fnProcess Function to execute after confirmation
|
|
148
|
-
* @param
|
|
164
|
+
* @param view Current view
|
|
149
165
|
* @param programmingModel Programming Model of the current page
|
|
150
166
|
* @returns `void` i think
|
|
151
167
|
* @private
|
|
152
168
|
* @ui5-restricted
|
|
153
169
|
*/
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
onClose: function (sAction) {
|
|
168
|
-
if (sAction === sConfirmButtonTxt) {
|
|
169
|
-
var oInternalModel = oView && oView.getModel("internal");
|
|
170
|
+
function processDataLossConfirmation(fnProcess, view, programmingModel) {
|
|
171
|
+
var uiEditable = view.getModel("ui").getProperty("/isEditable"),
|
|
172
|
+
resourceBundle = Core.getLibraryResourceBundle("sap.fe.templates"),
|
|
173
|
+
warningMsg = resourceBundle && resourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_MSG"),
|
|
174
|
+
confirmButtonTxt = resourceBundle && resourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CONFIRM_BUTTON"),
|
|
175
|
+
cancelButtonTxt = resourceBundle && resourceBundle.getText("T_COMMON_UTILS_NAVIGATION_AWAY_CANCEL_BUTTON");
|
|
176
|
+
if (programmingModel === ProgrammingModel.Sticky && uiEditable) {
|
|
177
|
+
return MessageBox.warning(warningMsg, {
|
|
178
|
+
actions: [confirmButtonTxt, cancelButtonTxt],
|
|
179
|
+
emphasizedAction: confirmButtonTxt,
|
|
180
|
+
onClose: function (actionText) {
|
|
181
|
+
if (actionText === confirmButtonTxt) {
|
|
182
|
+
var internalModel = view && view.getModel("internal");
|
|
170
183
|
Log.info("Navigation confirmed.");
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
oInternalModel.setProperty("/stickySessionToken", undefined);
|
|
184
|
+
if (internalModel) {
|
|
185
|
+
internalModel.setProperty("/sessionOn", false);
|
|
186
|
+
internalModel.setProperty("/stickySessionToken", undefined);
|
|
175
187
|
} else {
|
|
176
188
|
Log.warning("Local UIModel couldn't be found.");
|
|
177
189
|
}
|
|
178
|
-
|
|
179
190
|
fnProcess();
|
|
180
191
|
} else {
|
|
181
192
|
Log.info("Navigation rejected.");
|
|
@@ -183,9 +194,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
183
194
|
}
|
|
184
195
|
});
|
|
185
196
|
}
|
|
186
|
-
|
|
187
197
|
return fnProcess();
|
|
188
198
|
}
|
|
199
|
+
|
|
189
200
|
/**
|
|
190
201
|
* Static functions for the sticky session programming model
|
|
191
202
|
*
|
|
@@ -195,8 +206,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
195
206
|
* @experimental This module is only for experimental use! <br/><b>This is only a POC and maybe deleted</b>
|
|
196
207
|
* @since 1.54.0
|
|
197
208
|
*/
|
|
198
|
-
|
|
199
|
-
|
|
200
209
|
var sticky = {
|
|
201
210
|
editDocumentInStickySession: editDocumentInStickySession,
|
|
202
211
|
activateDocument: activateDocument,
|
|
@@ -205,4 +214,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/library",
|
|
|
205
214
|
};
|
|
206
215
|
return sticky;
|
|
207
216
|
}, false);
|
|
208
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhY3RpdmF0ZURvY3VtZW50Iiwib0NvbnRleHQiLCJvQXBwQ29tcG9uZW50Iiwib1Jlc291cmNlQnVuZGxlIiwic0FjdGlvbk5hbWUiLCJDb21tb25VdGlscyIsImdldFRyYW5zbGF0ZWRUZXh0Iiwib1NhdmVBY3Rpb24iLCJvTW9kZWwiLCJiaW5kQ29udGV4dCIsInNTYXZlQWN0aW9uIiwiJCRpbmhlcml0RXhwYW5kU2VsZWN0Iiwic0dyb3VwSWQiLCJvU2F2ZVByb21pc2UiLCJleGVjdXRlIiwidW5kZWZpbmVkIiwib3BlcmF0aW9uc0hlbHBlciIsImZuT25TdHJpY3RIYW5kbGluZ0ZhaWxlZCIsImJpbmQiLCJzdGlja3kiLCJsYWJlbCIsIm1vZGVsIiwic3VibWl0QmF0Y2giLCJnZXRNb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJzTWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsImdldFBhdGgiLCJnZXRPYmplY3QiLCJFcnJvciIsImdldFJlc291cmNlQnVuZGxlIiwiZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uIiwic0VkaXRBY3Rpb24iLCJvRWRpdEFjdGlvbiIsIm9FZGl0UHJvbWlzZSIsIm9OZXdDb250ZXh0Iiwib1NpZGVFZmZlY3RzIiwiZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlIiwiZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyIsInRyaWdnZXJBY3Rpb25zIiwibGVuZ3RoIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yT0RhdGFBY3Rpb24iLCJQcm9ncmFtbWluZ01vZGVsIiwiRkVMaWJyYXJ5IiwiZGlzY2FyZERvY3VtZW50Iiwic0Rpc2NhcmRBY3Rpb24iLCJvRGlzY2FyZEFjdGlvbiIsIm9EaXNjYXJkUHJvbWlzZSIsInRoZW4iLCJwcm9jZXNzRGF0YUxvc3NDb25maXJtYXRpb24iLCJmblByb2Nlc3MiLCJvVmlldyIsInByb2dyYW1taW5nTW9kZWwiLCJiVUlFZGl0YWJsZSIsImdldFByb3BlcnR5IiwiQ29yZSIsImdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZSIsInNXYXJuaW5nTXNnIiwiZ2V0VGV4dCIsInNDb25maXJtQnV0dG9uVHh0Iiwic0NhbmNlbEJ1dHRvblR4dCIsIlN0aWNreSIsIk1lc3NhZ2VCb3giLCJ3YXJuaW5nIiwiYWN0aW9ucyIsImVtcGhhc2l6ZWRBY3Rpb24iLCJvbkNsb3NlIiwic0FjdGlvbiIsIm9JbnRlcm5hbE1vZGVsIiwiTG9nIiwiaW5mbyIsInNldFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJzdGlja3kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IEZFTGlicmFyeSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgeyBWNENvbnRleHQgfSBmcm9tIFwidHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgb3BlcmF0aW9uc0hlbHBlciBmcm9tIFwiLi4vLi4vb3BlcmF0aW9uc0hlbHBlclwiO1xuXG5jb25zdCBQcm9ncmFtbWluZ01vZGVsID0gRkVMaWJyYXJ5LlByb2dyYW1taW5nTW9kZWw7XG4vKipcbiAqIE9wZW5zIGEgc3RpY2t5IHNlc3Npb24gdG8gZWRpdCBhIGRvY3VtZW50LlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3kjZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBlZGl0ZWRcbiAqIEBwYXJhbSBvQXBwQ29tcG9uZW50IFRoZSBBcHBDb21wb25lbnRcbiAqIEByZXR1cm5zIEEgUHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBzdGlja3kgc2Vzc2lvbiBpcyBpbiBlZGl0IG1vZGVcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uKG9Db250ZXh0OiBDb250ZXh0LCBvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBQcm9taXNlPFY0Q29udGV4dD4ge1xuXHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpIGFzIE9EYXRhTW9kZWwsXG5cdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9Db250ZXh0LmdldFBhdGgoKSksXG5cdFx0c0VkaXRBY3Rpb24gPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzTWV0YVBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZC9FZGl0QWN0aW9uYCk7XG5cblx0aWYgKCFzRWRpdEFjdGlvbikge1xuXHRcdHRocm93IG5ldyBFcnJvcihgRWRpdCBBY3Rpb24gZm9yIFN0aWNreSBTZXNzaW9uIG5vdCBmb3VuZCBmb3IgJHtzTWV0YVBhdGh9YCk7XG5cdH1cblx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gYXdhaXQgKG9BcHBDb21wb25lbnQuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBhbnkpLmdldFJlc291cmNlQnVuZGxlKCk7XG5cdGNvbnN0IHNBY3Rpb25OYW1lID0gQ29tbW9uVXRpbHMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX0NPTU1PTl9PQkpFQ1RfUEFHRV9FRElUXCIsIG9SZXNvdXJjZUJ1bmRsZSk7XG5cdGNvbnN0IG9FZGl0QWN0aW9uID0gb01vZGVsLmJpbmRDb250ZXh0KGAke3NFZGl0QWN0aW9ufSguLi4pYCwgb0NvbnRleHQsIHsgJCRpbmhlcml0RXhwYW5kU2VsZWN0OiB0cnVlIH0pO1xuXHRjb25zdCBzR3JvdXBJZCA9IFwiZGlyZWN0XCI7XG5cdGNvbnN0IG9FZGl0UHJvbWlzZSA9IG9FZGl0QWN0aW9uLmV4ZWN1dGUoXG5cdFx0c0dyb3VwSWQsXG5cdFx0dW5kZWZpbmVkLFxuXHRcdG9wZXJhdGlvbnNIZWxwZXIuZm5PblN0cmljdEhhbmRsaW5nRmFpbGVkLmJpbmQoXG5cdFx0XHRzdGlja3ksXG5cdFx0XHRzR3JvdXBJZCxcblx0XHRcdHsgbGFiZWw6IHNBY3Rpb25OYW1lLCBtb2RlbDogb01vZGVsIH0sXG5cdFx0XHRvUmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRudWxsLFxuXHRcdFx0bnVsbCxcblx0XHRcdG51bGwsXG5cdFx0XHR1bmRlZmluZWRcblx0XHQpXG5cdCk7XG5cdG9Nb2RlbC5zdWJtaXRCYXRjaChzR3JvdXBJZCk7XG5cblx0Y29uc3Qgb05ld0NvbnRleHQ6IFY0Q29udGV4dCA9IGF3YWl0IG9FZGl0UHJvbWlzZTtcblx0Y29uc3Qgb1NpZGVFZmZlY3RzID0gb0FwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5nZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzKHNFZGl0QWN0aW9uLCBvTmV3Q29udGV4dCk7XG5cdGlmIChvU2lkZUVmZmVjdHM/LnRyaWdnZXJBY3Rpb25zPy5sZW5ndGgpIHtcblx0XHRhd2FpdCBvQXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZSgpLnJlcXVlc3RTaWRlRWZmZWN0c0Zvck9EYXRhQWN0aW9uKG9TaWRlRWZmZWN0cywgb05ld0NvbnRleHQpO1xuXHR9XG5cdHJldHVybiBvTmV3Q29udGV4dDtcbn1cbi8qKlxuICogQWN0aXZhdGVzIGEgZG9jdW1lbnQgYW5kIGNsb3NlcyB0aGUgc3RpY2t5IHNlc3Npb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreSNhY3RpdmF0ZURvY3VtZW50XG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBhY3RpdmF0ZWRcbiAqIEBwYXJhbSBvQXBwQ29tcG9uZW50IENvbnRleHQgb2YgdGhlIGRvY3VtZW50IHRvIGJlIGFjdGl2YXRlZFxuICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmUgd2hlbiB0aGUgc3RpY2t5IHNlc3Npb24gaXMgYWN0aXZhdGVkXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlRG9jdW1lbnQob0NvbnRleHQ6IFY0Q29udGV4dCwgb0FwcENvbXBvbmVudD86IGFueSkge1xuXHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCksXG5cdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQ29udGV4dC5nZXRQYXRoKCkpLFxuXHRcdHNTYXZlQWN0aW9uID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c01ldGFQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvU2F2ZUFjdGlvbmApO1xuXG5cdGlmICghc1NhdmVBY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFNhdmUgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yICR7c01ldGFQYXRofWApO1xuXHR9XG5cdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IChvQXBwQ29tcG9uZW50ICYmIChhd2FpdCBvQXBwQ29tcG9uZW50LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikuZ2V0UmVzb3VyY2VCdW5kbGUoKSkpIHx8IG51bGw7XG5cdGNvbnN0IHNBY3Rpb25OYW1lID0gQ29tbW9uVXRpbHMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX09QX09CSkVDVF9QQUdFX1NBVkVcIiwgb1Jlc291cmNlQnVuZGxlKTtcblx0Y29uc3Qgb1NhdmVBY3Rpb24gPSBvTW9kZWwuYmluZENvbnRleHQoYCR7c1NhdmVBY3Rpb259KC4uLilgLCBvQ29udGV4dCwgeyAkJGluaGVyaXRFeHBhbmRTZWxlY3Q6IHRydWUgfSk7XG5cdGNvbnN0IHNHcm91cElkID0gXCJkaXJlY3RcIjtcblx0Y29uc3Qgb1NhdmVQcm9taXNlID0gb1NhdmVBY3Rpb24uZXhlY3V0ZShcblx0XHRzR3JvdXBJZCxcblx0XHR1bmRlZmluZWQsXG5cdFx0b3BlcmF0aW9uc0hlbHBlci5mbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQuYmluZChcblx0XHRcdHN0aWNreSxcblx0XHRcdHNHcm91cElkLFxuXHRcdFx0eyBsYWJlbDogc0FjdGlvbk5hbWUsIG1vZGVsOiBvTW9kZWwgfSxcblx0XHRcdG9SZXNvdXJjZUJ1bmRsZSxcblx0XHRcdG51bGwsXG5cdFx0XHRudWxsLFxuXHRcdFx0bnVsbCxcblx0XHRcdHVuZGVmaW5lZFxuXHRcdClcblx0KTtcblx0b01vZGVsLnN1Ym1pdEJhdGNoKHNHcm91cElkKTtcblx0cmV0dXJuIG9TYXZlUHJvbWlzZTtcbn1cbi8qKlxuICogRGlzY2FyZHMgYSBkb2N1bWVudCBhbmQgY2xvc2VzIHN0aWNreSBzZXNzaW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3kjZGlzY2FyZERvY3VtZW50XG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBvQ29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBkaXNjYXJkZWRcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSByZXNvbHZlZCB3aGVuIHRoZSBkb2N1bWVudCBpcyBkaWNhcmRlZFxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5mdW5jdGlvbiBkaXNjYXJkRG9jdW1lbnQob0NvbnRleHQ6IFY0Q29udGV4dCkge1xuXHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCksXG5cdFx0c01ldGFQYXRoID0gb01ldGFNb2RlbC5nZXRNZXRhUGF0aChvQ29udGV4dC5nZXRQYXRoKCkpLFxuXHRcdHNEaXNjYXJkQWN0aW9uID0gb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7c01ldGFQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvRGlzY2FyZEFjdGlvbmApO1xuXG5cdGlmICghc0Rpc2NhcmRBY3Rpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYERpc2NhcmQgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yICR7c01ldGFQYXRofWApO1xuXHR9XG5cblx0Y29uc3Qgb0Rpc2NhcmRBY3Rpb24gPSBvTW9kZWwuYmluZENvbnRleHQoYC8ke3NEaXNjYXJkQWN0aW9ufSguLi4pYCk7XG5cdGNvbnN0IG9EaXNjYXJkUHJvbWlzZSA9IG9EaXNjYXJkQWN0aW9uLmV4ZWN1dGUoXCJkaXJlY3RcIikudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIG9Db250ZXh0O1xuXHR9KTtcblx0b01vZGVsLnN1Ym1pdEJhdGNoKFwiZGlyZWN0XCIpO1xuXHRyZXR1cm4gb0Rpc2NhcmRQcm9taXNlO1xufVxuXG4vKipcbiAqIFByb2Nlc3MgdGhlIERhdGEgbG9zcyBjb25maXJtYXRpb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreSNkaXNjYXJkRG9jdW1lbnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHN0YXRpY1xuICogQHBhcmFtIGZuUHJvY2VzcyBGdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIGNvbmZpcm1hdGlvblxuICogQHBhcmFtIG9WaWV3IEN1cnJlbnQgdmlld1xuICogQHBhcmFtIHByb2dyYW1taW5nTW9kZWwgUHJvZ3JhbW1pbmcgTW9kZWwgb2YgdGhlIGN1cnJlbnQgcGFnZVxuICogQHJldHVybnMgYHZvaWRgIGkgdGhpbmtcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0RhdGFMb3NzQ29uZmlybWF0aW9uKGZuUHJvY2VzczogRnVuY3Rpb24sIG9WaWV3OiBWaWV3LCBwcm9ncmFtbWluZ01vZGVsOiBzdHJpbmcpIHtcblx0Y29uc3QgYlVJRWRpdGFibGUgPSBvVmlldy5nZXRNb2RlbChcInVpXCIpLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIiksXG5cdFx0b1Jlc291cmNlQnVuZGxlID0gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUudGVtcGxhdGVzXCIpLFxuXHRcdHNXYXJuaW5nTXNnID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9DT01NT05fVVRJTFNfTkFWSUdBVElPTl9BV0FZX01TR1wiKSxcblx0XHRzQ29uZmlybUJ1dHRvblR4dCA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfQ09NTU9OX1VUSUxTX05BVklHQVRJT05fQVdBWV9DT05GSVJNX0JVVFRPTlwiKSxcblx0XHRzQ2FuY2VsQnV0dG9uVHh0ID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9DT01NT05fVVRJTFNfTkFWSUdBVElPTl9BV0FZX0NBTkNFTF9CVVRUT05cIik7XG5cblx0aWYgKHByb2dyYW1taW5nTW9kZWwgPT09IFByb2dyYW1taW5nTW9kZWwuU3RpY2t5ICYmIGJVSUVkaXRhYmxlKSB7XG5cdFx0cmV0dXJuIE1lc3NhZ2VCb3gud2FybmluZyhzV2FybmluZ01zZywge1xuXHRcdFx0YWN0aW9uczogW3NDb25maXJtQnV0dG9uVHh0LCBzQ2FuY2VsQnV0dG9uVHh0XSxcblx0XHRcdGVtcGhhc2l6ZWRBY3Rpb246IHNDb25maXJtQnV0dG9uVHh0LFxuXHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKHNBY3Rpb246IGFueSkge1xuXHRcdFx0XHRpZiAoc0FjdGlvbiA9PT0gc0NvbmZpcm1CdXR0b25UeHQpIHtcblx0XHRcdFx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbCA9IG9WaWV3ICYmIChvVmlldy5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCk7XG5cblx0XHRcdFx0XHRMb2cuaW5mbyhcIk5hdmlnYXRpb24gY29uZmlybWVkLlwiKTtcblx0XHRcdFx0XHRpZiAob0ludGVybmFsTW9kZWwpIHtcblx0XHRcdFx0XHRcdG9JbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3Nlc3Npb25PblwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRvSW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9zdGlja3lTZXNzaW9uVG9rZW5cIiwgdW5kZWZpbmVkKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0TG9nLndhcm5pbmcoXCJMb2NhbCBVSU1vZGVsIGNvdWxkbid0IGJlIGZvdW5kLlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm5Qcm9jZXNzKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0TG9nLmluZm8oXCJOYXZpZ2F0aW9uIHJlamVjdGVkLlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdHJldHVybiBmblByb2Nlc3MoKTtcbn1cblxuLyoqXG4gKiBTdGF0aWMgZnVuY3Rpb25zIGZvciB0aGUgc3RpY2t5IHNlc3Npb24gcHJvZ3JhbW1pbmcgbW9kZWxcbiAqXG4gKiBAbmFtZXNwYWNlXG4gKiBAYWxpYXMgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBwcml2YXRlXG4gKiBAZXhwZXJpbWVudGFsIFRoaXMgbW9kdWxlIGlzIG9ubHkgZm9yIGV4cGVyaW1lbnRhbCB1c2UhIDxici8+PGI+VGhpcyBpcyBvbmx5IGEgUE9DIGFuZCBtYXliZSBkZWxldGVkPC9iPlxuICogQHNpbmNlIDEuNTQuMFxuICovXG5jb25zdCBzdGlja3kgPSB7XG5cdGVkaXREb2N1bWVudEluU3RpY2t5U2Vzc2lvbjogZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uLFxuXHRhY3RpdmF0ZURvY3VtZW50OiBhY3RpdmF0ZURvY3VtZW50LFxuXHRkaXNjYXJkRG9jdW1lbnQ6IGRpc2NhcmREb2N1bWVudCxcblx0cHJvY2Vzc0RhdGFMb3NzQ29uZmlybWF0aW9uOiBwcm9jZXNzRGF0YUxvc3NDb25maXJtYXRpb25cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHN0aWNreTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQStEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtNQUNlQSxnQixhQUFpQkMsUSxFQUFxQkMsYTtRQUFxQjtNQUFBLGdCQVNuRUMsZUFUbUU7UUFVekUsSUFBTUMsV0FBVyxHQUFHQyxXQUFXLENBQUNDLGlCQUFaLENBQThCLHVCQUE5QixFQUF1REgs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
|
|
217
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJib2R5IiwicmVjb3ZlciIsInJlc3VsdCIsImUiLCJ0aGVuIiwiYWN0aXZhdGVEb2N1bWVudCIsImNvbnRleHQiLCJhcHBDb21wb25lbnQiLCJtb2RlbCIsImdldE1vZGVsIiwibWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsImdldFBhdGgiLCJzYXZlQWN0aW9uQW5ub3RhdGlvbiIsImdldE9iamVjdCIsIkVycm9yIiwiZ2V0UmVzb3VyY2VCdW5kbGUiLCJyZXNvdXJjZUJ1bmRsZSIsImFjdGlvbk5hbWUiLCJDb21tb25VdGlscyIsImdldFRyYW5zbGF0ZWRUZXh0Iiwic2F2ZUFjdGlvbiIsImJpbmRDb250ZXh0IiwiJCRpbmhlcml0RXhwYW5kU2VsZWN0IiwiZ3JvdXBJZCIsInNhdmVQcm9taXNlIiwiZXhlY3V0ZSIsInVuZGVmaW5lZCIsIm9wZXJhdGlvbnNIZWxwZXIiLCJmbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQiLCJiaW5kIiwic3RpY2t5IiwibGFiZWwiLCJzdWJtaXRCYXRjaCIsImVyciIsIm1lc3NhZ2VzUGF0aCIsImdldFNpZGVFZmZlY3RzU2VydmljZSIsInJlcXVlc3RTaWRlRWZmZWN0cyIsIiRQcm9wZXJ0eVBhdGgiLCJlcnJvciIsIkxvZyIsImVkaXREb2N1bWVudEluU3RpY2t5U2Vzc2lvbiIsImVkaXRBY3Rpb25Bbm5vdGF0aW9uIiwiZWRpdEFjdGlvbiIsImVkaXRQcm9taXNlIiwibmV3Q29udGV4dCIsInNpZGVFZmZlY3RzIiwiZ2V0T0RhdGFBY3Rpb25TaWRlRWZmZWN0cyIsInRyaWdnZXJBY3Rpb25zIiwibGVuZ3RoIiwicmVxdWVzdFNpZGVFZmZlY3RzRm9yT0RhdGFBY3Rpb24iLCJQcm9ncmFtbWluZ01vZGVsIiwiRkVMaWJyYXJ5IiwiZGlzY2FyZERvY3VtZW50IiwiZGlzY2FyZEFjdGlvbkFubm90YXRpb24iLCJkaXNjYXJkQWN0aW9uIiwiZGlzY2FyZFByb21pc2UiLCJwcm9jZXNzRGF0YUxvc3NDb25maXJtYXRpb24iLCJmblByb2Nlc3MiLCJ2aWV3IiwicHJvZ3JhbW1pbmdNb2RlbCIsInVpRWRpdGFibGUiLCJnZXRQcm9wZXJ0eSIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJ3YXJuaW5nTXNnIiwiZ2V0VGV4dCIsImNvbmZpcm1CdXR0b25UeHQiLCJjYW5jZWxCdXR0b25UeHQiLCJTdGlja3kiLCJNZXNzYWdlQm94Iiwid2FybmluZyIsImFjdGlvbnMiLCJlbXBoYXNpemVkQWN0aW9uIiwib25DbG9zZSIsImFjdGlvblRleHQiLCJpbnRlcm5hbE1vZGVsIiwiaW5mbyIsInNldFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJzdGlja3kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tb25cIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBGRUxpYnJhcnkgZnJvbSBcInNhcC9mZS9jb3JlL2xpYnJhcnlcIjtcbmltcG9ydCBNZXNzYWdlQm94IGZyb20gXCJzYXAvbS9NZXNzYWdlQm94XCI7XG5pbXBvcnQgQ29yZSBmcm9tIFwic2FwL3VpL2NvcmUvQ29yZVwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgUmVzb3VyY2VNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL3Jlc291cmNlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgVjRDb250ZXh0IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IG9wZXJhdGlvbnNIZWxwZXIgZnJvbSBcIi4uLy4uL29wZXJhdGlvbnNIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNUYXJnZXRFbnRpdHlUeXBlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcblxuY29uc3QgUHJvZ3JhbW1pbmdNb2RlbCA9IEZFTGlicmFyeS5Qcm9ncmFtbWluZ01vZGVsO1xuLyoqXG4gKiBPcGVucyBhIHN0aWNreSBzZXNzaW9uIHRvIGVkaXQgYSBkb2N1bWVudC5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5I2VkaXREb2N1bWVudEluU3RpY2t5U2Vzc2lvblxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5XG4gKiBAc3RhdGljXG4gKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IG9mIHRoZSBkb2N1bWVudCB0byBiZSBlZGl0ZWRcbiAqIEBwYXJhbSBhcHBDb21wb25lbnQgVGhlIEFwcENvbXBvbmVudFxuICogQHJldHVybnMgQSBQcm9taXNlIHJlc29sdmVkIHdoZW4gdGhlIHN0aWNreSBzZXNzaW9uIGlzIGluIGVkaXQgbW9kZVxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICovXG5hc3luYyBmdW5jdGlvbiBlZGl0RG9jdW1lbnRJblN0aWNreVNlc3Npb24oY29udGV4dDogQ29udGV4dCwgYXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpOiBQcm9taXNlPFY0Q29udGV4dD4ge1xuXHRjb25zdCBtb2RlbCA9IGNvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRtZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChjb250ZXh0LmdldFBhdGgoKSksXG5cdFx0ZWRpdEFjdGlvbkFubm90YXRpb24gPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke21ldGFQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvRWRpdEFjdGlvbmApO1xuXG5cdGlmICghZWRpdEFjdGlvbkFubm90YXRpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYEVkaXQgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yICR7bWV0YVBhdGh9YCk7XG5cdH1cblx0Y29uc3QgcmVzb3VyY2VCdW5kbGUgPSBhd2FpdCAoYXBwQ29tcG9uZW50LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikgYXMgUmVzb3VyY2VNb2RlbCkuZ2V0UmVzb3VyY2VCdW5kbGUoKTtcblx0Y29uc3QgYWN0aW9uTmFtZSA9IENvbW1vblV0aWxzLmdldFRyYW5zbGF0ZWRUZXh0KFwiQ19DT01NT05fT0JKRUNUX1BBR0VfRURJVFwiLCByZXNvdXJjZUJ1bmRsZSk7XG5cdGNvbnN0IGVkaXRBY3Rpb24gPSBtb2RlbC5iaW5kQ29udGV4dChgJHtlZGl0QWN0aW9uQW5ub3RhdGlvbn0oLi4uKWAsIGNvbnRleHQsIHsgJCRpbmhlcml0RXhwYW5kU2VsZWN0OiB0cnVlIH0pO1xuXHRjb25zdCBncm91cElkID0gXCJkaXJlY3RcIjtcblx0Y29uc3QgZWRpdFByb21pc2UgPSBlZGl0QWN0aW9uLmV4ZWN1dGUoXG5cdFx0Z3JvdXBJZCxcblx0XHR1bmRlZmluZWQsXG5cdFx0b3BlcmF0aW9uc0hlbHBlci5mbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQuYmluZChcblx0XHRcdHN0aWNreSxcblx0XHRcdGdyb3VwSWQsXG5cdFx0XHR7IGxhYmVsOiBhY3Rpb25OYW1lLCBtb2RlbCB9LFxuXHRcdFx0cmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRudWxsLFxuXHRcdFx0bnVsbCxcblx0XHRcdG51bGwsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR1bmRlZmluZWRcblx0XHQpXG5cdCk7XG5cdG1vZGVsLnN1Ym1pdEJhdGNoKGdyb3VwSWQpO1xuXG5cdGNvbnN0IG5ld0NvbnRleHQ6IFY0Q29udGV4dCA9IGF3YWl0IGVkaXRQcm9taXNlO1xuXHRjb25zdCBzaWRlRWZmZWN0cyA9IGFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKS5nZXRPRGF0YUFjdGlvblNpZGVFZmZlY3RzKGVkaXRBY3Rpb25Bbm5vdGF0aW9uLCBuZXdDb250ZXh0KTtcblx0aWYgKHNpZGVFZmZlY3RzPy50cmlnZ2VyQWN0aW9ucyAmJiBzaWRlRWZmZWN0cy50cmlnZ2VyQWN0aW9ucy5sZW5ndGgpIHtcblx0XHRhd2FpdCBhcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlKCkucmVxdWVzdFNpZGVFZmZlY3RzRm9yT0RhdGFBY3Rpb24oc2lkZUVmZmVjdHMsIG5ld0NvbnRleHQpO1xuXHR9XG5cdHJldHVybiBuZXdDb250ZXh0O1xufVxuLyoqXG4gKiBBY3RpdmF0ZXMgYSBkb2N1bWVudCBhbmQgY2xvc2VzIHRoZSBzdGlja3kgc2Vzc2lvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmFjdGlvbnMuc3RpY2t5I2FjdGl2YXRlRG9jdW1lbnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHN0YXRpY1xuICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgYWN0aXZhdGVkXG4gKiBAcGFyYW0gYXBwQ29tcG9uZW50IENvbnRleHQgb2YgdGhlIGRvY3VtZW50IHRvIGJlIGFjdGl2YXRlZFxuICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmUgd2hlbiB0aGUgc3RpY2t5IHNlc3Npb24gaXMgYWN0aXZhdGVkXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlRG9jdW1lbnQoY29udGV4dDogVjRDb250ZXh0LCBhcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCkge1xuXHRjb25zdCBtb2RlbCA9IGNvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRtZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChjb250ZXh0LmdldFBhdGgoKSksXG5cdFx0c2F2ZUFjdGlvbkFubm90YXRpb24gPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke21ldGFQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvU2F2ZUFjdGlvbmApO1xuXG5cdGlmICghc2F2ZUFjdGlvbkFubm90YXRpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYFNhdmUgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yICR7bWV0YVBhdGh9YCk7XG5cdH1cblxuXHRjb25zdCByZXNvdXJjZUJ1bmRsZSA9IGF3YWl0IChhcHBDb21wb25lbnQuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKSBhcyBSZXNvdXJjZU1vZGVsKS5nZXRSZXNvdXJjZUJ1bmRsZSgpO1xuXHRjb25zdCBhY3Rpb25OYW1lID0gQ29tbW9uVXRpbHMuZ2V0VHJhbnNsYXRlZFRleHQoXCJDX09QX09CSkVDVF9QQUdFX1NBVkVcIiwgcmVzb3VyY2VCdW5kbGUpO1xuXHRjb25zdCBzYXZlQWN0aW9uID0gbW9kZWwuYmluZENvbnRleHQoYCR7c2F2ZUFjdGlvbkFubm90YXRpb259KC4uLilgLCBjb250ZXh0LCB7ICQkaW5oZXJpdEV4cGFuZFNlbGVjdDogdHJ1ZSB9KTtcblx0Y29uc3QgZ3JvdXBJZCA9IFwiZGlyZWN0XCI7XG5cblx0Y29uc3Qgc2F2ZVByb21pc2UgPSBzYXZlQWN0aW9uLmV4ZWN1dGUoXG5cdFx0Z3JvdXBJZCxcblx0XHR1bmRlZmluZWQsXG5cdFx0b3BlcmF0aW9uc0hlbHBlci5mbk9uU3RyaWN0SGFuZGxpbmdGYWlsZWQuYmluZChcblx0XHRcdHN0aWNreSxcblx0XHRcdGdyb3VwSWQsXG5cdFx0XHR7IGxhYmVsOiBhY3Rpb25OYW1lLCBtb2RlbCB9LFxuXHRcdFx0cmVzb3VyY2VCdW5kbGUsXG5cdFx0XHRudWxsLFxuXHRcdFx0bnVsbCxcblx0XHRcdG51bGwsXG5cdFx0XHR1bmRlZmluZWQsXG5cdFx0XHR1bmRlZmluZWRcblx0XHQpXG5cdCk7XG5cblx0bW9kZWwuc3VibWl0QmF0Y2goZ3JvdXBJZCk7XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gYXdhaXQgc2F2ZVByb21pc2U7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdGNvbnN0IG1lc3NhZ2VzUGF0aCA9IG1ldGFNb2RlbC5nZXRPYmplY3QoYCR7bWV0YVBhdGh9L0Ake0NvbW1vbkFubm90YXRpb25UZXJtcy5NZXNzYWdlc30vJFBhdGhgKTtcblxuXHRcdGlmIChtZXNzYWdlc1BhdGgpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGF3YWl0IGFwcENvbXBvbmVudFxuXHRcdFx0XHRcdC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UoKVxuXHRcdFx0XHRcdC5yZXF1ZXN0U2lkZUVmZmVjdHMoW3sgJFByb3BlcnR5UGF0aDogbWVzc2FnZXNQYXRoIH1dIGFzIFNpZGVFZmZlY3RzVGFyZ2V0RW50aXR5VHlwZVtdLCBjb250ZXh0KTtcblx0XHRcdH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIHJlcXVlc3Rpbmcgc2lkZSBlZmZlY3RzXCIsIGVycm9yIGFzIHN0cmluZyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRocm93IGVycjtcblx0fVxufVxuLyoqXG4gKiBEaXNjYXJkcyBhIGRvY3VtZW50IGFuZCBjbG9zZXMgc3RpY2t5IHNlc3Npb24uXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreSNkaXNjYXJkRG9jdW1lbnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHN0YXRpY1xuICogQHBhcmFtIGNvbnRleHQgQ29udGV4dCBvZiB0aGUgZG9jdW1lbnQgdG8gYmUgZGlzY2FyZGVkXG4gKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2ZWQgd2hlbiB0aGUgZG9jdW1lbnQgaXMgZGljYXJkZWRcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gZGlzY2FyZERvY3VtZW50KGNvbnRleHQ6IFY0Q29udGV4dCkge1xuXHRjb25zdCBtb2RlbCA9IGNvbnRleHQuZ2V0TW9kZWwoKSxcblx0XHRtZXRhTW9kZWwgPSBtb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRtZXRhUGF0aCA9IG1ldGFNb2RlbC5nZXRNZXRhUGF0aChjb250ZXh0LmdldFBhdGgoKSksXG5cdFx0ZGlzY2FyZEFjdGlvbkFubm90YXRpb24gPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke21ldGFQYXRofUBjb20uc2FwLnZvY2FidWxhcmllcy5TZXNzaW9uLnYxLlN0aWNreVNlc3Npb25TdXBwb3J0ZWQvRGlzY2FyZEFjdGlvbmApO1xuXG5cdGlmICghZGlzY2FyZEFjdGlvbkFubm90YXRpb24pIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYERpc2NhcmQgQWN0aW9uIGZvciBTdGlja3kgU2Vzc2lvbiBub3QgZm91bmQgZm9yICR7bWV0YVBhdGh9YCk7XG5cdH1cblxuXHRjb25zdCBkaXNjYXJkQWN0aW9uID0gbW9kZWwuYmluZENvbnRleHQoYC8ke2Rpc2NhcmRBY3Rpb25Bbm5vdGF0aW9ufSguLi4pYCk7XG5cdGNvbnN0IGRpc2NhcmRQcm9taXNlID0gZGlzY2FyZEFjdGlvbi5leGVjdXRlKFwiZGlyZWN0XCIpLnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdHJldHVybiBjb250ZXh0O1xuXHR9KTtcblx0bW9kZWwuc3VibWl0QmF0Y2goXCJkaXJlY3RcIik7XG5cdHJldHVybiBkaXNjYXJkUHJvbWlzZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIHRoZSBEYXRhIGxvc3MgY29uZmlybWF0aW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQG5hbWUgc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3kjZGlzY2FyZERvY3VtZW50XG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuYWN0aW9ucy5zdGlja3lcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSBmblByb2Nlc3MgRnVuY3Rpb24gdG8gZXhlY3V0ZSBhZnRlciBjb25maXJtYXRpb25cbiAqIEBwYXJhbSB2aWV3IEN1cnJlbnQgdmlld1xuICogQHBhcmFtIHByb2dyYW1taW5nTW9kZWwgUHJvZ3JhbW1pbmcgTW9kZWwgb2YgdGhlIGN1cnJlbnQgcGFnZVxuICogQHJldHVybnMgYHZvaWRgIGkgdGhpbmtcbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc0RhdGFMb3NzQ29uZmlybWF0aW9uKGZuUHJvY2VzczogRnVuY3Rpb24sIHZpZXc6IFZpZXcsIHByb2dyYW1taW5nTW9kZWw6IHN0cmluZykge1xuXHRjb25zdCB1aUVkaXRhYmxlID0gdmlldy5nZXRNb2RlbChcInVpXCIpLmdldFByb3BlcnR5KFwiL2lzRWRpdGFibGVcIiksXG5cdFx0cmVzb3VyY2VCdW5kbGUgPSBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS50ZW1wbGF0ZXNcIiksXG5cdFx0d2FybmluZ01zZyA9IHJlc291cmNlQnVuZGxlICYmIHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX0NPTU1PTl9VVElMU19OQVZJR0FUSU9OX0FXQVlfTVNHXCIpLFxuXHRcdGNvbmZpcm1CdXR0b25UeHQgPSByZXNvdXJjZUJ1bmRsZSAmJiByZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiVF9DT01NT05fVVRJTFNfTkFWSUdBVElPTl9BV0FZX0NPTkZJUk1fQlVUVE9OXCIpLFxuXHRcdGNhbmNlbEJ1dHRvblR4dCA9IHJlc291cmNlQnVuZGxlICYmIHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX0NPTU1PTl9VVElMU19OQVZJR0FUSU9OX0FXQVlfQ0FOQ0VMX0JVVFRPTlwiKTtcblxuXHRpZiAocHJvZ3JhbW1pbmdNb2RlbCA9PT0gUHJvZ3JhbW1pbmdNb2RlbC5TdGlja3kgJiYgdWlFZGl0YWJsZSkge1xuXHRcdHJldHVybiBNZXNzYWdlQm94Lndhcm5pbmcod2FybmluZ01zZywge1xuXHRcdFx0YWN0aW9uczogW2NvbmZpcm1CdXR0b25UeHQsIGNhbmNlbEJ1dHRvblR4dF0sXG5cdFx0XHRlbXBoYXNpemVkQWN0aW9uOiBjb25maXJtQnV0dG9uVHh0LFxuXHRcdFx0b25DbG9zZTogZnVuY3Rpb24gKGFjdGlvblRleHQ6IHN0cmluZykge1xuXHRcdFx0XHRpZiAoYWN0aW9uVGV4dCA9PT0gY29uZmlybUJ1dHRvblR4dCkge1xuXHRcdFx0XHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB2aWV3ICYmICh2aWV3LmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKTtcblxuXHRcdFx0XHRcdExvZy5pbmZvKFwiTmF2aWdhdGlvbiBjb25maXJtZWQuXCIpO1xuXHRcdFx0XHRcdGlmIChpbnRlcm5hbE1vZGVsKSB7XG5cdFx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3Nlc3Npb25PblwiLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL3N0aWNreVNlc3Npb25Ub2tlblwiLCB1bmRlZmluZWQpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRMb2cud2FybmluZyhcIkxvY2FsIFVJTW9kZWwgY291bGRuJ3QgYmUgZm91bmQuXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRmblByb2Nlc3MoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRMb2cuaW5mbyhcIk5hdmlnYXRpb24gcmVqZWN0ZWQuXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblx0cmV0dXJuIGZuUHJvY2VzcygpO1xufVxuXG4vKipcbiAqIFN0YXRpYyBmdW5jdGlvbnMgZm9yIHRoZSBzdGlja3kgc2Vzc2lvbiBwcm9ncmFtbWluZyBtb2RlbFxuICpcbiAqIEBuYW1lc3BhY2VcbiAqIEBhbGlhcyBzYXAuZmUuY29yZS5hY3Rpb25zLnN0aWNreVxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgZXhwZXJpbWVudGFsIHVzZSEgPGJyLz48Yj5UaGlzIGlzIG9ubHkgYSBQT0MgYW5kIG1heWJlIGRlbGV0ZWQ8L2I+XG4gKiBAc2luY2UgMS41NC4wXG4gKi9cbmNvbnN0IHN0aWNreSA9IHtcblx0ZWRpdERvY3VtZW50SW5TdGlja3lTZXNzaW9uOiBlZGl0RG9jdW1lbnRJblN0aWNreVNlc3Npb24sXG5cdGFjdGl2YXRlRG9jdW1lbnQ6IGFjdGl2YXRlRG9jdW1lbnQsXG5cdGRpc2NhcmREb2N1bWVudDogZGlzY2FyZERvY3VtZW50LFxuXHRwcm9jZXNzRGF0YUxvc3NDb25maXJtYXRpb246IHByb2Nlc3NEYXRhTG9zc0NvbmZpcm1hdGlvblxufTtcblxuZXhwb3J0IGRlZmF1bHQgc3RpY2t5O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBa2pCTyxnQkFBZ0JBLElBQUksRUFBRUMsT0FBTyxFQUFFO0lBQ3JDLElBQUk7TUFDSCxJQUFJQyxNQUFNLEdBQUdGLElBQUksRUFBRTtJQUNwQixDQUFDLENBQUMsT0FBTUcsQ0FBQyxFQUFFO01BQ1YsT0FBT0YsT0FBTyxDQUFDRSxDQUFDLENBQUM7SUFDbEI7SUFDQSxJQUFJRCxNQUFNLElBQUlBLE1BQU0sQ0FBQ0UsSUFBSSxFQUFFO01BQzFCLE9BQU9GLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFSCxPQUFPLENBQUM7SUFD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
|