@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
|
@@ -13,41 +13,23 @@ enum DraftDataLossOptions {
|
|
|
13
13
|
Discard = "draftDataLossOptionDiscard"
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
let
|
|
17
|
-
let
|
|
18
|
-
function fnDataLossConfirmation(
|
|
16
|
+
let onDataLossConfirmedFollowUpFunction: Function;
|
|
17
|
+
let onDataLossCancelFollowUpFunction: Function;
|
|
18
|
+
function fnDataLossConfirmation(fnOnDataLossOk: any, fnOnDataLossCancel: any, controller: any, skipBindingToView: any) {
|
|
19
19
|
// Open the data loss popup and after processing the selected function finally call
|
|
20
20
|
// onDataLossConfirmed which resolves the promise and leads to processing of the originally
|
|
21
21
|
// triggered action like e.g. a back navigation
|
|
22
22
|
let dataLossPopup: Dialog;
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
onDataLossConfirmedFollowUpFunction = fnOnDataLossOk;
|
|
24
|
+
onDataLossCancelFollowUpFunction = fnOnDataLossCancel;
|
|
25
25
|
const fragmentName = "sap.fe.core.controls.DataLossOrDraftDiscard.DataLossDraft";
|
|
26
26
|
const view = controller.getView();
|
|
27
27
|
const fragmentController: any = {
|
|
28
28
|
onDataLossOk: function () {
|
|
29
|
-
|
|
30
|
-
if (selectedKey === DraftDataLossOptions.Save) {
|
|
31
|
-
saveDocument(controller)
|
|
32
|
-
.then(fnOnDataLossConfirmed)
|
|
33
|
-
.catch(function (error: any) {
|
|
34
|
-
Log.error("Error while saving document", error);
|
|
35
|
-
});
|
|
36
|
-
dataLossPopup.close();
|
|
37
|
-
} else if (selectedKey === DraftDataLossOptions.Keep) {
|
|
38
|
-
fnOnDataLossConfirmed();
|
|
39
|
-
dataLossPopup.close();
|
|
40
|
-
} else if (selectedKey === DraftDataLossOptions.Discard) {
|
|
41
|
-
discardDraft(controller, skipBindingToView)
|
|
42
|
-
.then(fnOnDataLossConfirmed)
|
|
43
|
-
.catch(function (error: any) {
|
|
44
|
-
Log.error("Error while discarding draft", error);
|
|
45
|
-
});
|
|
46
|
-
dataLossPopup.close();
|
|
47
|
-
}
|
|
29
|
+
handleDataLossOk(dataLossPopup, controller, onDataLossConfirmedFollowUpFunction, skipBindingToView);
|
|
48
30
|
},
|
|
49
31
|
onDataLossCancel: function () {
|
|
50
|
-
|
|
32
|
+
onDataLossCancelFollowUpFunction();
|
|
51
33
|
dataLossPopup.close();
|
|
52
34
|
},
|
|
53
35
|
setDataLossPopup: function (inDataLossPopup: Dialog) {
|
|
@@ -55,15 +37,13 @@ function fnDataLossConfirmation(onDataLossOk: any, onDataLossCancel: any, contro
|
|
|
55
37
|
}
|
|
56
38
|
};
|
|
57
39
|
|
|
58
|
-
const i18nModel = view.getModel("sap.fe.i18n");
|
|
59
40
|
const localThisModel = new JSONModel({}),
|
|
60
41
|
preprocessorSettings = {
|
|
61
42
|
bindingContexts: {
|
|
62
|
-
|
|
43
|
+
this: localThisModel.createBindingContext("/")
|
|
63
44
|
},
|
|
64
45
|
models: {
|
|
65
|
-
|
|
66
|
-
"i18n": i18nModel
|
|
46
|
+
this: localThisModel
|
|
67
47
|
}
|
|
68
48
|
};
|
|
69
49
|
|
|
@@ -79,8 +59,11 @@ function fnDataLossConfirmation(onDataLossOk: any, onDataLossCancel: any, contro
|
|
|
79
59
|
})
|
|
80
60
|
.then((popup: any) => {
|
|
81
61
|
dataLossPopup = popup;
|
|
82
|
-
|
|
83
|
-
|
|
62
|
+
selectAndFocusFirstEntry(dataLossPopup);
|
|
63
|
+
popup.addEventDelegate({
|
|
64
|
+
onsapenter: function () {
|
|
65
|
+
handleDataLossOk(dataLossPopup, controller, onDataLossConfirmedFollowUpFunction, skipBindingToView);
|
|
66
|
+
}
|
|
84
67
|
});
|
|
85
68
|
view.addDependent(dataLossPopup);
|
|
86
69
|
dataLossPopup.open();
|
|
@@ -154,8 +137,45 @@ export function selectAndFocusFirstEntry(dataLossPopup: Dialog) {
|
|
|
154
137
|
// Preselect the first entry in the list
|
|
155
138
|
const firstListItemOption: CustomListItem = dataLossOptionsList.getItems()[0] as CustomListItem;
|
|
156
139
|
dataLossOptionsList.setSelectedItem(firstListItemOption);
|
|
157
|
-
// By default set the focus on the first
|
|
158
|
-
|
|
140
|
+
// By default set the focus on the first list item of the dialog
|
|
141
|
+
// We do not set the focus on the button, but catch the ENTER key in the dialog
|
|
142
|
+
// and process it as Ok, since focusing the button was reported as an ACC issue
|
|
143
|
+
firstListItemOption?.focus();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Executes the logic when the data loss dialog is confirmed.
|
|
148
|
+
*
|
|
149
|
+
* @param dataLossPopup Reference to the data loss dialog
|
|
150
|
+
* @param controller Reference to the controller
|
|
151
|
+
* @param dataLossConfirmationFollowUpFunction The action to be performed after the selected option has been executed
|
|
152
|
+
* @param skipBindingToView Forwarded to discardDraft
|
|
153
|
+
*/
|
|
154
|
+
export function handleDataLossOk(
|
|
155
|
+
dataLossPopup: Dialog,
|
|
156
|
+
controller: any,
|
|
157
|
+
dataLossConfirmationFollowUpFunction: Function,
|
|
158
|
+
skipBindingToView: boolean
|
|
159
|
+
) {
|
|
160
|
+
const selectedKey = getSelectedKey(dataLossPopup);
|
|
161
|
+
if (selectedKey === DraftDataLossOptions.Save) {
|
|
162
|
+
saveDocument(controller)
|
|
163
|
+
.then(dataLossConfirmationFollowUpFunction)
|
|
164
|
+
.catch(function (error: any) {
|
|
165
|
+
Log.error("Error while saving document", error);
|
|
166
|
+
});
|
|
167
|
+
dataLossPopup.close();
|
|
168
|
+
} else if (selectedKey === DraftDataLossOptions.Keep) {
|
|
169
|
+
dataLossConfirmationFollowUpFunction();
|
|
170
|
+
dataLossPopup.close();
|
|
171
|
+
} else if (selectedKey === DraftDataLossOptions.Discard) {
|
|
172
|
+
discardDraft(controller, skipBindingToView)
|
|
173
|
+
.then(dataLossConfirmationFollowUpFunction)
|
|
174
|
+
.catch(function (error: any) {
|
|
175
|
+
Log.error("Error while discarding draft", error);
|
|
176
|
+
});
|
|
177
|
+
dataLossPopup.close();
|
|
178
|
+
}
|
|
159
179
|
}
|
|
160
180
|
|
|
161
181
|
export default { performAfterDiscardorKeepDraft, discardDraft, saveDocument, getSelectedKey, selectAndFocusFirstEntry };
|
|
@@ -6,25 +6,17 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/Control"], funct
|
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9;
|
|
9
|
-
|
|
10
9
|
var property = ClassSupport.property;
|
|
11
10
|
var implementInterface = ClassSupport.implementInterface;
|
|
12
11
|
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
13
12
|
var association = ClassSupport.association;
|
|
14
13
|
var aggregation = ClassSupport.aggregation;
|
|
15
|
-
|
|
16
14
|
function _initializerDefineProperty(target, property, descriptor, context) { if (!descriptor) return; Object.defineProperty(target, property, { enumerable: descriptor.enumerable, configurable: descriptor.configurable, writable: descriptor.writable, value: descriptor.initializer ? descriptor.initializer.call(context) : void 0 }); }
|
|
17
|
-
|
|
18
15
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
19
|
-
|
|
20
16
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
|
|
21
|
-
|
|
22
17
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
23
|
-
|
|
24
18
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
25
|
-
|
|
26
19
|
function _initializerWarningHelper(descriptor, context) { throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.'); }
|
|
27
|
-
|
|
28
20
|
var FieldWrapper = (_dec = defineUI5Class("sap.fe.core.controls.FieldWrapper"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
|
|
29
21
|
type: "sap.ui.core.TextAlign"
|
|
30
22
|
}), _dec4 = property({
|
|
@@ -52,137 +44,102 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/Control"], funct
|
|
|
52
44
|
multiple: true
|
|
53
45
|
}), _dec(_class = (_class2 = /*#__PURE__*/function (_Control) {
|
|
54
46
|
_inheritsLoose(FieldWrapper, _Control);
|
|
55
|
-
|
|
56
47
|
function FieldWrapper() {
|
|
57
48
|
var _this;
|
|
58
|
-
|
|
59
49
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
60
50
|
args[_key] = arguments[_key];
|
|
61
51
|
}
|
|
62
|
-
|
|
63
52
|
_this = _Control.call.apply(_Control, [this].concat(args)) || this;
|
|
64
|
-
|
|
65
53
|
_initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _assertThisInitialized(_this));
|
|
66
|
-
|
|
67
54
|
_initializerDefineProperty(_this, "textAlign", _descriptor2, _assertThisInitialized(_this));
|
|
68
|
-
|
|
69
55
|
_initializerDefineProperty(_this, "width", _descriptor3, _assertThisInitialized(_this));
|
|
70
|
-
|
|
71
56
|
_initializerDefineProperty(_this, "formDoNotAdjustWidth", _descriptor4, _assertThisInitialized(_this));
|
|
72
|
-
|
|
73
57
|
_initializerDefineProperty(_this, "editMode", _descriptor5, _assertThisInitialized(_this));
|
|
74
|
-
|
|
75
58
|
_initializerDefineProperty(_this, "required", _descriptor6, _assertThisInitialized(_this));
|
|
76
|
-
|
|
77
59
|
_initializerDefineProperty(_this, "ariaLabelledBy", _descriptor7, _assertThisInitialized(_this));
|
|
78
|
-
|
|
79
60
|
_initializerDefineProperty(_this, "contentDisplay", _descriptor8, _assertThisInitialized(_this));
|
|
80
|
-
|
|
81
61
|
_initializerDefineProperty(_this, "contentEdit", _descriptor9, _assertThisInitialized(_this));
|
|
82
|
-
|
|
83
62
|
return _this;
|
|
84
63
|
}
|
|
85
|
-
|
|
86
64
|
var _proto = FieldWrapper.prototype;
|
|
87
|
-
|
|
88
65
|
_proto.enhanceAccessibilityState = function enhanceAccessibilityState(oElement, mAriaProps) {
|
|
89
66
|
var oParent = this.getParent();
|
|
90
|
-
|
|
91
67
|
if (oParent && oParent.enhanceAccessibilityState) {
|
|
92
68
|
// use FieldWrapper as control, but aria properties of rendered inner control.
|
|
93
69
|
oParent.enhanceAccessibilityState(this, mAriaProps);
|
|
94
70
|
}
|
|
95
|
-
|
|
96
71
|
return mAriaProps;
|
|
97
72
|
};
|
|
98
|
-
|
|
99
73
|
_proto.getAccessibilityInfo = function getAccessibilityInfo() {
|
|
100
74
|
var oContent;
|
|
101
|
-
|
|
102
75
|
if (this.editMode === "Display") {
|
|
103
76
|
oContent = this.contentDisplay;
|
|
104
77
|
} else {
|
|
105
78
|
oContent = this.contentEdit.length ? this.contentEdit[0] : null;
|
|
106
79
|
}
|
|
107
|
-
|
|
108
80
|
return oContent && oContent.getAccessibilityInfo ? oContent.getAccessibilityInfo() : {};
|
|
109
81
|
}
|
|
82
|
+
|
|
110
83
|
/**
|
|
111
84
|
* Returns the DOMNode ID to be used for the "labelFor" attribute.
|
|
112
85
|
*
|
|
113
86
|
* We forward the call of this method to the content control.
|
|
114
87
|
*
|
|
115
88
|
* @returns ID to be used for the <code>labelFor</code>
|
|
116
|
-
|
|
117
|
-
;
|
|
118
|
-
|
|
89
|
+
*/;
|
|
119
90
|
_proto.getIdForLabel = function getIdForLabel() {
|
|
120
91
|
var _oContent;
|
|
121
|
-
|
|
122
92
|
var oContent;
|
|
123
|
-
|
|
124
93
|
if (this.editMode === "Display") {
|
|
125
94
|
oContent = this.contentDisplay;
|
|
126
95
|
} else {
|
|
127
96
|
oContent = this.contentEdit.length ? this.contentEdit[0] : null;
|
|
128
97
|
}
|
|
129
|
-
|
|
130
98
|
return (_oContent = oContent) === null || _oContent === void 0 ? void 0 : _oContent.getIdForLabel();
|
|
131
99
|
};
|
|
132
|
-
|
|
133
100
|
_proto._setAriaLabelledBy = function _setAriaLabelledBy(oContent) {
|
|
134
101
|
if (oContent && oContent.addAriaLabelledBy) {
|
|
135
102
|
var aAriaLabelledBy = this.ariaLabelledBy;
|
|
136
|
-
|
|
137
103
|
for (var i = 0; i < aAriaLabelledBy.length; i++) {
|
|
138
104
|
var sId = aAriaLabelledBy[i];
|
|
139
105
|
var aAriaLabelledBys = oContent.getAriaLabelledBy() || [];
|
|
140
|
-
|
|
141
106
|
if (aAriaLabelledBys.indexOf(sId) === -1) {
|
|
142
107
|
oContent.addAriaLabelledBy(sId);
|
|
143
108
|
}
|
|
144
109
|
}
|
|
145
110
|
}
|
|
146
111
|
};
|
|
147
|
-
|
|
148
112
|
_proto.onBeforeRendering = function onBeforeRendering() {
|
|
149
113
|
// before calling the renderer of the FieldWrapper parent control may have set ariaLabelledBy
|
|
150
114
|
// we ensure it is passed to its inner controls
|
|
151
115
|
this._setAriaLabelledBy(this.contentDisplay);
|
|
152
|
-
|
|
153
116
|
var aContentEdit = this.contentEdit;
|
|
154
|
-
|
|
155
117
|
for (var i = 0; i < aContentEdit.length; i++) {
|
|
156
118
|
this._setAriaLabelledBy(aContentEdit[i]);
|
|
157
119
|
}
|
|
158
120
|
};
|
|
159
|
-
|
|
160
121
|
FieldWrapper.render = function render(oRm, oControl) {
|
|
161
122
|
oRm.openStart("div", oControl);
|
|
162
123
|
oRm.style("text-align", oControl.textAlign);
|
|
163
|
-
|
|
164
124
|
if (oControl.editMode === "Display") {
|
|
165
125
|
oRm.style("width", oControl.width);
|
|
166
126
|
oRm.openEnd();
|
|
167
127
|
oRm.renderControl(oControl.contentDisplay); // render the child Control for display
|
|
168
128
|
} else {
|
|
169
|
-
var aContentEdit = oControl.contentEdit;
|
|
129
|
+
var aContentEdit = oControl.contentEdit;
|
|
130
|
+
|
|
131
|
+
// if (aContentEdit.length > 1) {
|
|
170
132
|
// oRm.class("sapUiMdcFieldBaseMoreFields");
|
|
171
133
|
// }
|
|
172
|
-
|
|
173
134
|
oRm.style("width", oControl.width);
|
|
174
135
|
oRm.openEnd();
|
|
175
|
-
|
|
176
136
|
for (var i = 0; i < aContentEdit.length; i++) {
|
|
177
137
|
var oContent = aContentEdit[i]; // render the child Control for edit
|
|
178
|
-
|
|
179
138
|
oRm.renderControl(oContent);
|
|
180
139
|
}
|
|
181
140
|
}
|
|
182
|
-
|
|
183
141
|
oRm.close("div"); // end of the complete Control
|
|
184
142
|
};
|
|
185
|
-
|
|
186
143
|
return FieldWrapper;
|
|
187
144
|
}(Control), (_descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
|
|
188
145
|
configurable: true,
|
|
@@ -234,4 +191,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/ui/core/Control"], funct
|
|
|
234
191
|
})), _class2)) || _class);
|
|
235
192
|
return FieldWrapper;
|
|
236
193
|
}, false);
|
|
237
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJkZWZpbmVVSTVDbGFzcyIsImltcGxlbWVudEludGVyZmFjZSIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImFzc29jaWF0aW9uIiwibXVsdGlwbGUiLCJzaW5ndWxhck5hbWUiLCJhZ2dyZWdhdGlvbiIsImlzRGVmYXVsdCIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJvRWxlbWVudCIsIm1BcmlhUHJvcHMiLCJvUGFyZW50IiwiZ2V0UGFyZW50IiwiZ2V0QWNjZXNzaWJpbGl0eUluZm8iLCJvQ29udGVudCIsImVkaXRNb2RlIiwiY29udGVudERpc3BsYXkiLCJjb250ZW50RWRpdCIsImxlbmd0aCIsImdldElkRm9yTGFiZWwiLCJfc2V0QXJpYUxhYmVsbGVkQnkiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImFBcmlhTGFiZWxsZWRCeSIsImFyaWFMYWJlbGxlZEJ5IiwiaSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImluZGV4T2YiLCJvbkJlZm9yZVJlbmRlcmluZyIsImFDb250ZW50RWRpdCIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWVsZFdyYXBwZXJcIilcbmNsYXNzIEZpZWxkV3JhcHBlciBleHRlbmRzIENvbnRyb2wgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50OiBib29sZWFuID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRleHRBbGlnblwiIH0pXG5cdHRleHRBbGlnbiE6IFRleHRBbGlnbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLkNTU1NpemVcIiwgZGVmYXVsdFZhbHVlOiBudWxsIH0pXG5cdHdpZHRoITogQ1NTU2l6ZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIkRpc3BsYXlcIiB9KVxuXHRlZGl0TW9kZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRyZXF1aXJlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogQ29udHJvbFtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50RGlzcGxheSE6IENvbnRyb2w7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGNvbnRlbnRFZGl0ITogQ29udHJvbFtdO1xuXG5cdGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQ6IGFueSwgbUFyaWFQcm9wczogYW55KSB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCkgYXMgYW55O1xuXG5cdFx0aWYgKG9QYXJlbnQgJiYgb1BhcmVudC5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKSB7XG5cdFx0XHQvLyB1c2UgRmllbGRXcmFwcGVyIGFzIGNvbnRyb2wsIGJ1dCBhcmlhIHByb3BlcnRpZXMgb2YgcmVuZGVyZWQgaW5uZXIgY29udHJvbC5cblx0XHRcdG9QYXJlbnQuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSh0aGlzLCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXHRnZXRBY2Nlc3NpYmlsaXR5SW5mbygpIHtcblx0XHRsZXQgb0NvbnRlbnQ7XG5cdFx0aWYgKHRoaXMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudERpc3BsYXk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RWRpdC5sZW5ndGggPyB0aGlzLmNvbnRlbnRFZGl0WzBdIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIG9Db250ZW50ICYmIG9Db250ZW50LmdldEFjY2Vzc2liaWxpdHlJbmZvID8gb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKSA6IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0Z2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpPy5nZXRJZEZvckxhYmVsKCk7XG5cdH1cblxuXHRfc2V0QXJpYUxhYmVsbGVkQnkob0NvbnRlbnQ6IGFueSkge1xuXHRcdGlmIChvQ29udGVudCAmJiBvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5hcmlhTGFiZWxsZWRCeTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQXJpYUxhYmVsbGVkQnkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc0lkID0gYUFyaWFMYWJlbGxlZEJ5W2ldO1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gb0NvbnRlbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKSB8fCBbXTtcblx0XHRcdFx0aWYgKGFBcmlhTGFiZWxsZWRCeXMuaW5kZXhPZihzSWQpID09PSAtMSkge1xuXHRcdFx0XHRcdG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0Ly8gYmVmb3JlIGNhbGxpbmcgdGhlIHJlbmRlcmVyIG9mIHRoZSBGaWVsZFdyYXBwZXIgcGFyZW50IGNvbnRyb2wgbWF5IGhhdmUgc2V0IGFyaWFMYWJlbGxlZEJ5XG5cdFx0Ly8gd2UgZW5zdXJlIGl0IGlzIHBhc3NlZCB0byBpdHMgaW5uZXIgY29udHJvbHNcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmNvbnRlbnREaXNwbGF5KTtcblx0XHRjb25zdCBhQ29udGVudEVkaXQgPSB0aGlzLmNvbnRlbnRFZGl0O1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUNvbnRlbnRFZGl0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeShhQ29udGVudEVkaXRbaV0pO1xuXHRcdH1cblx0fVxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IEZpZWxkV3JhcHBlcikge1xuXHRcdG9SbS5vcGVuU3RhcnQoXCJkaXZcIiwgb0NvbnRyb2wpO1xuXHRcdG9SbS5zdHlsZShcInRleHQtYWxpZ25cIiwgb0NvbnRyb2wudGV4dEFsaWduKTtcblx0XHRpZiAob0NvbnRyb2wuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvUm0uc3R5bGUoXCJ3aWR0aFwiLCBvQ29udHJvbC53aWR0aCk7XG5cdFx0XHRvUm0ub3BlbkVuZCgpO1xuXHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRyb2wuY29udGVudERpc3BsYXkpOyAvLyByZW5kZXIgdGhlIGNoaWxkIENvbnRyb2wgZm9yIGRpc3BsYXlcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYUNvbnRlbnRFZGl0ID0gb0NvbnRyb2wuY29udGVudEVkaXQ7XG5cblx0XHRcdC8vIGlmIChhQ29udGVudEVkaXQubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gXHRvUm0uY2xhc3MoXCJzYXBVaU1kY0ZpZWxkQmFzZU1vcmVGaWVsZHNcIik7XG5cdFx0XHQvLyB9XG5cdFx0XHRvUm0uc3R5bGUoXCJ3aWR0aFwiLCBvQ29udHJvbC53aWR0aCk7XG5cdFx0XHRvUm0ub3BlbkVuZCgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQ29udGVudEVkaXQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRlbnQgPSBhQ29udGVudEVkaXRbaV07IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BTU1BLFksV0FETEMsY0FBYyxDQUFDLG1DQUFELEMsVUFFYkMsa0JBQWtCLENBQUMsMEJBQUQsQyxVQUdsQkMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFSLENBQUQsQyxVQUdSRCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLHFCQUFSO0lBQStCQyxZQUFZLEVBQUU7RUFBN0MsQ0FBRCxDLFVBR1JGLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUUsU0FBUjtJQUFtQkMsWUFBWSxFQUFFO0VBQWpDLENBQUQsQyxVQUdSRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVI7SUFBa0JDLFlBQVksRUFBRTtFQUFoQyxDQUFELEMsVUFHUkYsUUFBUSxD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
|
|
194
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGaWVsZFdyYXBwZXIiLCJkZWZpbmVVSTVDbGFzcyIsImltcGxlbWVudEludGVyZmFjZSIsInByb3BlcnR5IiwidHlwZSIsImRlZmF1bHRWYWx1ZSIsImFzc29jaWF0aW9uIiwibXVsdGlwbGUiLCJzaW5ndWxhck5hbWUiLCJhZ2dyZWdhdGlvbiIsImlzRGVmYXVsdCIsImVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUiLCJvRWxlbWVudCIsIm1BcmlhUHJvcHMiLCJvUGFyZW50IiwiZ2V0UGFyZW50IiwiZ2V0QWNjZXNzaWJpbGl0eUluZm8iLCJvQ29udGVudCIsImVkaXRNb2RlIiwiY29udGVudERpc3BsYXkiLCJjb250ZW50RWRpdCIsImxlbmd0aCIsImdldElkRm9yTGFiZWwiLCJfc2V0QXJpYUxhYmVsbGVkQnkiLCJhZGRBcmlhTGFiZWxsZWRCeSIsImFBcmlhTGFiZWxsZWRCeSIsImFyaWFMYWJlbGxlZEJ5IiwiaSIsInNJZCIsImFBcmlhTGFiZWxsZWRCeXMiLCJnZXRBcmlhTGFiZWxsZWRCeSIsImluZGV4T2YiLCJvbkJlZm9yZVJlbmRlcmluZyIsImFDb250ZW50RWRpdCIsInJlbmRlciIsIm9SbSIsIm9Db250cm9sIiwib3BlblN0YXJ0Iiwic3R5bGUiLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsIm9wZW5FbmQiLCJyZW5kZXJDb250cm9sIiwiY2xvc2UiLCJDb250cm9sIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFdyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWdncmVnYXRpb24sIGFzc29jaWF0aW9uLCBkZWZpbmVVSTVDbGFzcywgaW1wbGVtZW50SW50ZXJmYWNlLCBwcm9wZXJ0eSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgQ1NTU2l6ZSwgSUZvcm1Db250ZW50LCBUZXh0QWxpZ24gfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgUmVuZGVyTWFuYWdlciBmcm9tIFwic2FwL3VpL2NvcmUvUmVuZGVyTWFuYWdlclwiO1xuXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9scy5GaWVsZFdyYXBwZXJcIilcbmNsYXNzIEZpZWxkV3JhcHBlciBleHRlbmRzIENvbnRyb2wgaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50OiBib29sZWFuID0gdHJ1ZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLlRleHRBbGlnblwiIH0pXG5cdHRleHRBbGlnbiE6IFRleHRBbGlnbjtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC51aS5jb3JlLkNTU1NpemVcIiwgZGVmYXVsdFZhbHVlOiBudWxsIH0pXG5cdHdpZHRoITogQ1NTU2l6ZTtcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRmb3JtRG9Ob3RBZGp1c3RXaWR0aCE6IGJvb2xlYW47XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiwgZGVmYXVsdFZhbHVlOiBcIkRpc3BsYXlcIiB9KVxuXHRlZGl0TW9kZSE6IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImJvb2xlYW5cIiwgZGVmYXVsdFZhbHVlOiBmYWxzZSB9KVxuXHRyZXF1aXJlZCE6IGJvb2xlYW47XG5cblx0LyoqXG5cdCAqIEFzc29jaWF0aW9uIHRvIGNvbnRyb2xzIC8gSURzIHRoYXQgbGFiZWwgdGhpcyBjb250cm9sIChzZWUgV0FJLUFSSUEgYXR0cmlidXRlIGFyaWEtbGFiZWxsZWRieSkuXG5cdCAqL1xuXHRAYXNzb2NpYXRpb24oeyB0eXBlOiBcInNhcC51aS5jb3JlLkNvbnRyb2xcIiwgbXVsdGlwbGU6IHRydWUsIHNpbmd1bGFyTmFtZTogXCJhcmlhTGFiZWxsZWRCeVwiIH0pXG5cdGFyaWFMYWJlbGxlZEJ5ITogQ29udHJvbFtdO1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiLCBtdWx0aXBsZTogZmFsc2UsIGlzRGVmYXVsdDogdHJ1ZSB9KVxuXHRjb250ZW50RGlzcGxheSE6IENvbnRyb2w7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiB0cnVlIH0pXG5cdGNvbnRlbnRFZGl0ITogQ29udHJvbFtdO1xuXG5cdGVuaGFuY2VBY2Nlc3NpYmlsaXR5U3RhdGUob0VsZW1lbnQ6IGFueSwgbUFyaWFQcm9wczogYW55KSB7XG5cdFx0Y29uc3Qgb1BhcmVudCA9IHRoaXMuZ2V0UGFyZW50KCkgYXMgYW55O1xuXG5cdFx0aWYgKG9QYXJlbnQgJiYgb1BhcmVudC5lbmhhbmNlQWNjZXNzaWJpbGl0eVN0YXRlKSB7XG5cdFx0XHQvLyB1c2UgRmllbGRXcmFwcGVyIGFzIGNvbnRyb2wsIGJ1dCBhcmlhIHByb3BlcnRpZXMgb2YgcmVuZGVyZWQgaW5uZXIgY29udHJvbC5cblx0XHRcdG9QYXJlbnQuZW5oYW5jZUFjY2Vzc2liaWxpdHlTdGF0ZSh0aGlzLCBtQXJpYVByb3BzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbUFyaWFQcm9wcztcblx0fVxuXHRnZXRBY2Nlc3NpYmlsaXR5SW5mbygpIHtcblx0XHRsZXQgb0NvbnRlbnQ7XG5cdFx0aWYgKHRoaXMuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvQ29udGVudCA9IHRoaXMuY29udGVudERpc3BsYXk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RWRpdC5sZW5ndGggPyB0aGlzLmNvbnRlbnRFZGl0WzBdIDogbnVsbDtcblx0XHR9XG5cdFx0cmV0dXJuIG9Db250ZW50ICYmIG9Db250ZW50LmdldEFjY2Vzc2liaWxpdHlJbmZvID8gb0NvbnRlbnQuZ2V0QWNjZXNzaWJpbGl0eUluZm8oKSA6IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIERPTU5vZGUgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIFwibGFiZWxGb3JcIiBhdHRyaWJ1dGUuXG5cdCAqXG5cdCAqIFdlIGZvcndhcmQgdGhlIGNhbGwgb2YgdGhpcyBtZXRob2QgdG8gdGhlIGNvbnRlbnQgY29udHJvbC5cblx0ICpcblx0ICogQHJldHVybnMgSUQgdG8gYmUgdXNlZCBmb3IgdGhlIDxjb2RlPmxhYmVsRm9yPC9jb2RlPlxuXHQgKi9cblx0Z2V0SWRGb3JMYWJlbCgpOiBzdHJpbmcge1xuXHRcdGxldCBvQ29udGVudDtcblx0XHRpZiAodGhpcy5lZGl0TW9kZSA9PT0gXCJEaXNwbGF5XCIpIHtcblx0XHRcdG9Db250ZW50ID0gdGhpcy5jb250ZW50RGlzcGxheTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b0NvbnRlbnQgPSB0aGlzLmNvbnRlbnRFZGl0Lmxlbmd0aCA/IHRoaXMuY29udGVudEVkaXRbMF0gOiBudWxsO1xuXHRcdH1cblx0XHRyZXR1cm4gKG9Db250ZW50IGFzIENvbnRyb2wpPy5nZXRJZEZvckxhYmVsKCk7XG5cdH1cblxuXHRfc2V0QXJpYUxhYmVsbGVkQnkob0NvbnRlbnQ6IGFueSkge1xuXHRcdGlmIChvQ29udGVudCAmJiBvQ29udGVudC5hZGRBcmlhTGFiZWxsZWRCeSkge1xuXHRcdFx0Y29uc3QgYUFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5hcmlhTGFiZWxsZWRCeTtcblxuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQXJpYUxhYmVsbGVkQnkubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgc0lkID0gYUFyaWFMYWJlbGxlZEJ5W2ldO1xuXHRcdFx0XHRjb25zdCBhQXJpYUxhYmVsbGVkQnlzID0gb0NvbnRlbnQuZ2V0QXJpYUxhYmVsbGVkQnkoKSB8fCBbXTtcblx0XHRcdFx0aWYgKGFBcmlhTGFiZWxsZWRCeXMuaW5kZXhPZihzSWQpID09PSAtMSkge1xuXHRcdFx0XHRcdG9Db250ZW50LmFkZEFyaWFMYWJlbGxlZEJ5KHNJZCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0b25CZWZvcmVSZW5kZXJpbmcoKSB7XG5cdFx0Ly8gYmVmb3JlIGNhbGxpbmcgdGhlIHJlbmRlcmVyIG9mIHRoZSBGaWVsZFdyYXBwZXIgcGFyZW50IGNvbnRyb2wgbWF5IGhhdmUgc2V0IGFyaWFMYWJlbGxlZEJ5XG5cdFx0Ly8gd2UgZW5zdXJlIGl0IGlzIHBhc3NlZCB0byBpdHMgaW5uZXIgY29udHJvbHNcblx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeSh0aGlzLmNvbnRlbnREaXNwbGF5KTtcblx0XHRjb25zdCBhQ29udGVudEVkaXQgPSB0aGlzLmNvbnRlbnRFZGl0O1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYUNvbnRlbnRFZGl0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR0aGlzLl9zZXRBcmlhTGFiZWxsZWRCeShhQ29udGVudEVkaXRbaV0pO1xuXHRcdH1cblx0fVxuXHRzdGF0aWMgcmVuZGVyKG9SbTogUmVuZGVyTWFuYWdlciwgb0NvbnRyb2w6IEZpZWxkV3JhcHBlcikge1xuXHRcdG9SbS5vcGVuU3RhcnQoXCJkaXZcIiwgb0NvbnRyb2wpO1xuXHRcdG9SbS5zdHlsZShcInRleHQtYWxpZ25cIiwgb0NvbnRyb2wudGV4dEFsaWduKTtcblx0XHRpZiAob0NvbnRyb2wuZWRpdE1vZGUgPT09IFwiRGlzcGxheVwiKSB7XG5cdFx0XHRvUm0uc3R5bGUoXCJ3aWR0aFwiLCBvQ29udHJvbC53aWR0aCk7XG5cdFx0XHRvUm0ub3BlbkVuZCgpO1xuXHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRyb2wuY29udGVudERpc3BsYXkpOyAvLyByZW5kZXIgdGhlIGNoaWxkIENvbnRyb2wgZm9yIGRpc3BsYXlcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYUNvbnRlbnRFZGl0ID0gb0NvbnRyb2wuY29udGVudEVkaXQ7XG5cblx0XHRcdC8vIGlmIChhQ29udGVudEVkaXQubGVuZ3RoID4gMSkge1xuXHRcdFx0Ly8gXHRvUm0uY2xhc3MoXCJzYXBVaU1kY0ZpZWxkQmFzZU1vcmVGaWVsZHNcIik7XG5cdFx0XHQvLyB9XG5cdFx0XHRvUm0uc3R5bGUoXCJ3aWR0aFwiLCBvQ29udHJvbC53aWR0aCk7XG5cdFx0XHRvUm0ub3BlbkVuZCgpO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhQ29udGVudEVkaXQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0Y29uc3Qgb0NvbnRlbnQgPSBhQ29udGVudEVkaXRbaV07IC8vIHJlbmRlciB0aGUgY2hpbGQgQ29udHJvbCAgZm9yIGVkaXRcblx0XHRcdFx0b1JtLnJlbmRlckNvbnRyb2wob0NvbnRlbnQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRvUm0uY2xvc2UoXCJkaXZcIik7IC8vIGVuZCBvZiB0aGUgY29tcGxldGUgQ29udHJvbFxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEZpZWxkV3JhcHBlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztNQU1NQSxZQUFZLFdBRGpCQyxjQUFjLENBQUMsbUNBQW1DLENBQUMsVUFFbERDLGtCQUFrQixDQUFDLDBCQUEwQixDQUFDLFVBRzlDQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQXdCLENBQUMsQ0FBQyxVQUczQ0QsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRSxxQkFBcUI7SUFBRUMsWUFBWSxFQUFFO0VBQUssQ0FBQyxDQUFDLFVBRzdERixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFNBQVM7SUFBRUMsWUFBWSxFQUFFO0VBQU0sQ0FBQyxDQUFDLFVBR2xERixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFLFFBQVE7SUFBRUMsWUFBWSxFQUFFO0VBQVUsQ0FBQyxD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
|