@sapui5/sap.fe.core 1.103.0 → 1.106.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/ActionRuntime.js +121 -0
- package/src/sap/fe/core/ActionRuntime.ts +122 -0
- package/src/sap/fe/core/AppComponent.js +24 -11
- package/src/sap/fe/core/AppComponent.ts +17 -5
- package/src/sap/fe/core/AppStateHandler.js +74 -62
- package/src/sap/fe/core/AppStateHandler.ts +24 -29
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/CommonUtils.js +147 -180
- package/src/sap/fe/core/CommonUtils.ts +166 -193
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/TemplateComponent.js +21 -10
- package/src/sap/fe/core/TemplateComponent.ts +3 -0
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +11 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +7 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +194 -43
- package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +162 -24
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.js +14 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockFormatter.ts +5 -0
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +609 -227
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +268 -119
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +111 -76
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +96 -76
- package/src/sap/fe/core/controllerextensions/BusyLocker.js +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +723 -637
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +361 -398
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +83 -55
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +42 -44
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +29 -27
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +35 -30
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +171 -74
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +167 -76
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +5 -21
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -17
- package/src/sap/fe/core/controllerextensions/MassEdit.js +3 -3
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +1 -1
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +2 -2
- package/src/sap/fe/core/controllerextensions/PageReady.js +3 -3
- package/src/sap/fe/core/controllerextensions/PageReady.ts +5 -1
- package/src/sap/fe/core/controllerextensions/Paginator.js +13 -13
- package/src/sap/fe/core/controllerextensions/Paginator.ts +11 -11
- package/src/sap/fe/core/controllerextensions/Placeholder.js +2 -2
- package/src/sap/fe/core/controllerextensions/Routing.js +2 -2
- package/src/sap/fe/core/controllerextensions/RoutingListener.js +1 -1
- package/src/sap/fe/core/controllerextensions/Share.js +154 -123
- package/src/sap/fe/core/controllerextensions/Share.ts +93 -95
- package/src/sap/fe/core/controllerextensions/SideEffects.js +157 -97
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +151 -95
- package/src/sap/fe/core/controllerextensions/ViewState.js +151 -80
- package/src/sap/fe/core/controllerextensions/ViewState.ts +95 -93
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +9 -9
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.ts +6 -7
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +26 -11
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +30 -11
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +57 -40
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.ts +55 -47
- package/src/sap/fe/core/controllerextensions/collaboration/ManageDialog.fragment.xml +31 -32
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1376 -914
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +654 -714
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +372 -326
- package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +210 -276
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +309 -0
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +320 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +670 -521
- package/src/sap/fe/core/controllerextensions/editFlow/operations.ts +537 -535
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +85 -65
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +16 -21
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +25 -13
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +53 -43
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +18 -27
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +9 -15
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +19 -3
- package/src/sap/fe/core/controls/ActionParameterDialogFieldValueHelp.fragment.xml +35 -0
- package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +26 -16
- package/src/sap/fe/core/controls/Any.js +1 -1
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +5 -5
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +0 -3
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +1 -1
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FileWrapper.js +8 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +5 -1
- package/src/sap/fe/core/controls/FilterBar.js +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +2 -2
- package/src/sap/fe/core/controls/MassEditSelect.js +1 -1
- package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +1 -1
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +48 -17
- package/src/sap/fe/core/controls/filterbar/FilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +2 -2
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +2 -2
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +3 -3
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +22 -35
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +2 -2
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +1 -1
- package/src/sap/fe/core/converters/ConverterContext.js +23 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +34 -9
- package/src/sap/fe/core/converters/ManifestSettings.js +19 -18
- package/src/sap/fe/core/converters/ManifestSettings.ts +53 -47
- package/src/sap/fe/core/converters/ManifestWrapper.js +1 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +32 -10
- package/src/sap/fe/core/converters/MetaModelConverter.ts +42 -19
- package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
- package/src/sap/fe/core/converters/annotations/DataField.js +5 -2
- package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +69 -23
- package/src/sap/fe/core/converters/controls/Common/Action.js +98 -51
- package/src/sap/fe/core/converters/controls/Common/Action.ts +121 -44
- package/src/sap/fe/core/converters/controls/Common/Chart.js +31 -34
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +26 -34
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +43 -7
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +60 -33
- package/src/sap/fe/core/converters/controls/Common/Form.js +8 -6
- package/src/sap/fe/core/converters/controls/Common/Form.ts +11 -14
- package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +16 -15
- package/src/sap/fe/core/converters/controls/Common/Table.js +188 -157
- package/src/sap/fe/core/converters/controls/Common/Table.ts +279 -230
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +1 -1
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +57 -21
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +71 -18
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +30 -8
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +24 -7
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +43 -34
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +37 -25
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +85 -49
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +74 -50
- package/src/sap/fe/core/converters/helpers/Aggregation.js +54 -4
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +56 -8
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +6 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +10 -2
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +182 -0
- package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +167 -0
- package/src/sap/fe/core/converters/helpers/ID.js +3 -1
- package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
- package/src/sap/fe/core/converters/helpers/IssueManager.js +1 -1
- package/src/sap/fe/core/converters/helpers/Key.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +2 -3
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +8 -14
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +6 -9
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +31 -31
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +54 -47
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +44 -15
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +64 -30
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +1 -1
- package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
- package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
- package/src/sap/fe/core/formatters/StandardFormatter.js +13 -6
- package/src/sap/fe/core/formatters/StandardFormatter.ts +20 -14
- package/src/sap/fe/core/formatters/TableFormatter.js +1 -1
- package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
- package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
- package/src/sap/fe/core/fpm/Component.js +33 -7
- package/src/sap/fe/core/fpm/Component.ts +14 -0
- package/src/sap/fe/core/helpers/AnnotationEnum.js +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +5 -4
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +4 -3
- package/src/sap/fe/core/helpers/BindingToolkit.js +56 -24
- package/src/sap/fe/core/helpers/BindingToolkit.ts +67 -21
- package/src/sap/fe/core/helpers/ClassSupport.js +31 -3
- package/src/sap/fe/core/helpers/ClassSupport.ts +24 -1
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -1
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +1 -1
- package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +1 -1
- package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +1 -1
- package/src/sap/fe/core/helpers/LoaderUtils.js +39 -0
- package/src/sap/fe/core/helpers/LoaderUtils.ts +14 -0
- package/src/sap/fe/core/helpers/MassEditHelper.js +475 -99
- package/src/sap/fe/core/helpers/MassEditHelper.ts +468 -155
- package/src/sap/fe/core/helpers/MessageStrip.js +81 -0
- package/src/sap/fe/core/helpers/MessageStrip.ts +79 -0
- package/src/sap/fe/core/helpers/ModelHelper.js +1 -1
- package/src/sap/fe/core/helpers/PasteHelper.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +82 -36
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +52 -36
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +1 -1
- package/src/sap/fe/core/helpers/SideEffectsHelper.js +146 -0
- package/src/sap/fe/core/helpers/SideEffectsHelper.ts +128 -0
- package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
- package/src/sap/fe/core/helpers/Synchronization.js +1 -1
- package/src/sap/fe/core/helpers/ToES6Promise.js +32 -0
- package/src/sap/fe/core/helpers/ToES6Promise.ts +19 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.js +16 -0
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +3 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +109 -0
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +47 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +119 -0
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +98 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +105 -0
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +89 -0
- package/src/sap/fe/core/jsx-runtime/jsx.js +12 -90
- package/src/sap/fe/core/jsx-runtime/jsx.ts +24 -85
- package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +179 -0
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +150 -0
- package/src/sap/fe/core/library.js +2 -2
- package/src/sap/fe/core/library.support.js +1 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +1 -1
- package/src/sap/fe/core/messagebundle.properties +4 -41
- package/src/sap/fe/core/messagebundle_ar.properties +22 -45
- package/src/sap/fe/core/messagebundle_bg.properties +22 -45
- package/src/sap/fe/core/messagebundle_ca.properties +22 -45
- package/src/sap/fe/core/messagebundle_cs.properties +22 -45
- package/src/sap/fe/core/messagebundle_cy.properties +21 -44
- package/src/sap/fe/core/messagebundle_da.properties +22 -45
- package/src/sap/fe/core/messagebundle_de.properties +22 -45
- package/src/sap/fe/core/messagebundle_el.properties +22 -45
- package/src/sap/fe/core/messagebundle_en.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_GB.properties +21 -44
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +21 -42
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +20 -40
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +21 -42
- package/src/sap/fe/core/messagebundle_es.properties +22 -45
- package/src/sap/fe/core/messagebundle_es_MX.properties +22 -45
- package/src/sap/fe/core/messagebundle_et.properties +22 -45
- package/src/sap/fe/core/messagebundle_fi.properties +22 -45
- package/src/sap/fe/core/messagebundle_fr.properties +21 -44
- package/src/sap/fe/core/messagebundle_fr_CA.properties +20 -43
- package/src/sap/fe/core/messagebundle_hi.properties +22 -45
- package/src/sap/fe/core/messagebundle_hr.properties +22 -45
- package/src/sap/fe/core/messagebundle_hu.properties +22 -45
- package/src/sap/fe/core/messagebundle_id.properties +22 -45
- package/src/sap/fe/core/messagebundle_it.properties +22 -45
- package/src/sap/fe/core/messagebundle_iw.properties +22 -45
- package/src/sap/fe/core/messagebundle_ja.properties +22 -45
- package/src/sap/fe/core/messagebundle_kk.properties +22 -45
- package/src/sap/fe/core/messagebundle_ko.properties +27 -50
- package/src/sap/fe/core/messagebundle_lt.properties +22 -45
- package/src/sap/fe/core/messagebundle_lv.properties +22 -45
- package/src/sap/fe/core/messagebundle_ms.properties +22 -45
- package/src/sap/fe/core/messagebundle_nl.properties +24 -47
- package/src/sap/fe/core/messagebundle_no.properties +22 -45
- package/src/sap/fe/core/messagebundle_pl.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt.properties +23 -46
- package/src/sap/fe/core/messagebundle_pt_PT.properties +22 -45
- package/src/sap/fe/core/messagebundle_ro.properties +22 -45
- package/src/sap/fe/core/messagebundle_ru.properties +22 -45
- package/src/sap/fe/core/messagebundle_sh.properties +22 -45
- package/src/sap/fe/core/messagebundle_sk.properties +22 -45
- package/src/sap/fe/core/messagebundle_sl.properties +22 -45
- package/src/sap/fe/core/messagebundle_sv.properties +22 -45
- package/src/sap/fe/core/messagebundle_th.properties +20 -43
- package/src/sap/fe/core/messagebundle_tr.properties +22 -45
- package/src/sap/fe/core/messagebundle_uk.properties +22 -45
- package/src/sap/fe/core/messagebundle_vi.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_CN.properties +22 -45
- package/src/sap/fe/core/messagebundle_zh_TW.properties +22 -45
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +102 -74
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +62 -63
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/NavigationServiceFactory.js +11 -8
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -7
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ShellServicesFactory.js +22 -2
- package/src/sap/fe/core/services/ShellServicesFactory.ts +19 -0
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +4 -4
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +2 -2
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +251 -200
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +160 -144
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/support/AnnotationIssue.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +1 -1
- package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +1 -1
- package/src/sap/fe/core/support/CommonHelper.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/InvalidAnnotationColumnKey.support.js +1 -1
- package/src/sap/fe/core/templating/CommonFormatters.js +4 -3
- package/src/sap/fe/core/templating/CommonFormatters.ts +5 -1
- package/src/sap/fe/core/templating/CriticalityFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.js +8 -1
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +5 -2
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/EntitySetHelper.js +4 -5
- package/src/sap/fe/core/templating/EntitySetHelper.ts +4 -3
- package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
- package/src/sap/fe/core/templating/FilterHelper.js +34 -15
- package/src/sap/fe/core/templating/FilterHelper.ts +28 -12
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
- package/src/sap/fe/core/templating/PropertyHelper.js +1 -1
- package/src/sap/fe/core/templating/UIFormatters.js +5 -3
- package/src/sap/fe/core/templating/UIFormatters.ts +7 -5
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/Email.js +2 -2
|
@@ -787,7 +787,7 @@ export function getExpressionFromAnnotation<T extends PrimitiveType>(
|
|
|
787
787
|
if (annotationValue === undefined) {
|
|
788
788
|
return wrapPrimitive(defaultValue as T);
|
|
789
789
|
}
|
|
790
|
-
|
|
790
|
+
annotationValue = annotationValue?.valueOf() as PropertyAnnotationValue<T>;
|
|
791
791
|
if (!isComplexAnnotationExpression(annotationValue)) {
|
|
792
792
|
return constant(annotationValue);
|
|
793
793
|
}
|
|
@@ -881,7 +881,7 @@ function parseAnnotationCondition<T extends PrimitiveType>(
|
|
|
881
881
|
) as BindingToolkitExpression<T>;
|
|
882
882
|
} else if (annotationValue.hasOwnProperty("$Not")) {
|
|
883
883
|
return not(
|
|
884
|
-
parseAnnotationCondition((annotationValue as NotConditionalExpression).$Not
|
|
884
|
+
parseAnnotationCondition((annotationValue as NotConditionalExpression).$Not, visitedNavigationPaths, pathVisitor)
|
|
885
885
|
) as BindingToolkitExpression<T>;
|
|
886
886
|
} else if (annotationValue.hasOwnProperty("$Eq")) {
|
|
887
887
|
return equal(
|
|
@@ -1253,7 +1253,22 @@ export function ifElse<T extends PrimitiveType>(
|
|
|
1253
1253
|
if (isTrue(onTrueExpression)) {
|
|
1254
1254
|
return or(conditionExpression, onFalseExpression as BindingToolkitExpression<boolean>) as BindingToolkitExpression<T>;
|
|
1255
1255
|
}
|
|
1256
|
-
|
|
1256
|
+
if (isComplexTypeExpression(condition) || isComplexTypeExpression(onTrue) || isComplexTypeExpression(onFalse)) {
|
|
1257
|
+
let pathIdx = 0;
|
|
1258
|
+
const myIfElseExpression = formatResult([condition, onTrue, onFalse], "sap.fe.core.formatters.StandardFormatter#ifElse");
|
|
1259
|
+
const allParts = [];
|
|
1260
|
+
transformRecursively(
|
|
1261
|
+
myIfElseExpression,
|
|
1262
|
+
"PathInModel",
|
|
1263
|
+
(constantPath: PathInModelExpression<any>) => {
|
|
1264
|
+
allParts.push(constantPath);
|
|
1265
|
+
return pathInModel(`\$${pathIdx++}`, "$");
|
|
1266
|
+
},
|
|
1267
|
+
true
|
|
1268
|
+
);
|
|
1269
|
+
allParts.unshift(constant(JSON.stringify(myIfElseExpression)));
|
|
1270
|
+
return formatResult(allParts, "sap.fe.core.formatters.StandardFormatter#evaluateComplexExpression");
|
|
1271
|
+
}
|
|
1257
1272
|
return {
|
|
1258
1273
|
_type: "IfElse",
|
|
1259
1274
|
condition: conditionExpression,
|
|
@@ -1365,12 +1380,12 @@ export function formatResult<T, U extends Fn<T>>(
|
|
|
1365
1380
|
}
|
|
1366
1381
|
|
|
1367
1382
|
/**
|
|
1368
|
-
* Calls a complex type
|
|
1369
|
-
* If requireContext is set to true and no context is passed a default context will be added automatically.
|
|
1383
|
+
* Calls a complex type to process the parameters.
|
|
1384
|
+
* If requireContext is set to true and no context is passed, a default context will be added automatically.
|
|
1370
1385
|
*
|
|
1371
1386
|
* @template T
|
|
1372
1387
|
* @template U
|
|
1373
|
-
* @param parameters The list of
|
|
1388
|
+
* @param parameters The list of parameters that should match the type for the complex type=
|
|
1374
1389
|
* @param type The complex type to use
|
|
1375
1390
|
* @param [contextEntityType] The context entity type to consider
|
|
1376
1391
|
* @param oFormatOptions
|
|
@@ -1396,17 +1411,24 @@ export function addTypeInformation<T, U extends Fn<T>>(
|
|
|
1396
1411
|
}
|
|
1397
1412
|
}
|
|
1398
1413
|
// if showMeasure is set to false we want to not parse as string to see the 0
|
|
1414
|
+
// we do that also for all bindings because otherwise the mdc Field isn't editable
|
|
1399
1415
|
if (
|
|
1400
|
-
oFormatOptions
|
|
1416
|
+
!(oFormatOptions && oFormatOptions.showNumber === false) &&
|
|
1401
1417
|
((parameters[0] as any)?.type?.indexOf("sap.ui.model.odata.type.Int") === 0 ||
|
|
1402
1418
|
(parameters[0] as any)?.type?.indexOf("sap.ui.model.odata.type.Decimal") === 0 ||
|
|
1403
1419
|
(parameters[0] as any)?.type?.indexOf("sap.ui.model.odata.type.Double") === 0)
|
|
1404
1420
|
) {
|
|
1405
|
-
if (
|
|
1421
|
+
if (
|
|
1422
|
+
(parameters[0] as any)?.type === "sap.ui.model.odata.type.Int64" ||
|
|
1423
|
+
(parameters[0] as any)?.type === "sap.ui.model.odata.type.Decimal"
|
|
1424
|
+
) {
|
|
1406
1425
|
//sap.ui.model.odata.type.Int64 do not support parseAsString false
|
|
1407
|
-
oFormatOptions = { emptyString: "", showMeasure: false };
|
|
1426
|
+
oFormatOptions = oFormatOptions?.showMeasure === false ? { emptyString: "", showMeasure: false } : { emptyString: "" };
|
|
1408
1427
|
} else {
|
|
1409
|
-
oFormatOptions =
|
|
1428
|
+
oFormatOptions =
|
|
1429
|
+
oFormatOptions?.showMeasure === false
|
|
1430
|
+
? { parseAsString: false, emptyString: "", showMeasure: false }
|
|
1431
|
+
: { parseAsString: false, emptyString: "" };
|
|
1410
1432
|
}
|
|
1411
1433
|
}
|
|
1412
1434
|
if (type === "sap.ui.model.odata.type.Unit") {
|
|
@@ -1455,13 +1477,15 @@ export function fn<T, U extends FunctionOrName<T>>(
|
|
|
1455
1477
|
* Shortcut function to determine if a binding value is null, undefined or empty.
|
|
1456
1478
|
*
|
|
1457
1479
|
* @param expression
|
|
1458
|
-
* @returns A
|
|
1480
|
+
* @returns A Boolean expression evaluating the fact that the current element is empty
|
|
1459
1481
|
*/
|
|
1460
1482
|
export function isEmpty(expression: BindingToolkitExpression<string>): BindingToolkitExpression<boolean> {
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1483
|
+
const aBindings: ExpressionOrPrimitive<boolean>[] = [];
|
|
1484
|
+
transformRecursively(expression, "PathInModel", (expr) => {
|
|
1485
|
+
aBindings.push(or(equal(expr, ""), equal(expr, undefined), equal(expr, null)));
|
|
1486
|
+
return expr;
|
|
1487
|
+
});
|
|
1488
|
+
return and(...aBindings);
|
|
1465
1489
|
}
|
|
1466
1490
|
|
|
1467
1491
|
export function concat(...inExpressions: ExpressionOrPrimitive<string>[]): BindingToolkitExpression<string> {
|
|
@@ -1481,7 +1505,7 @@ export function concat(...inExpressions: ExpressionOrPrimitive<string>[]): Bindi
|
|
|
1481
1505
|
const allParts = [];
|
|
1482
1506
|
transformRecursively(myConcatExpression, "PathInModel", (constantPath: PathInModelExpression<any>) => {
|
|
1483
1507
|
allParts.push(constantPath);
|
|
1484
|
-
return
|
|
1508
|
+
return pathInModel(`\$${pathIdx++}`, "$");
|
|
1485
1509
|
});
|
|
1486
1510
|
allParts.unshift(constant(JSON.stringify(myConcatExpression)));
|
|
1487
1511
|
return formatResult(allParts, "sap.fe.core.formatters.StandardFormatter#evaluateComplexExpression");
|
|
@@ -1537,9 +1561,13 @@ export function transformRecursively<T extends PrimitiveType | unknown>(
|
|
|
1537
1561
|
break;
|
|
1538
1562
|
case "Set":
|
|
1539
1563
|
if (includeAllExpression) {
|
|
1540
|
-
|
|
1564
|
+
const operands = expression.operands.map((operand) =>
|
|
1541
1565
|
transformRecursively(operand, expressionType, transformFunction, includeAllExpression)
|
|
1542
1566
|
);
|
|
1567
|
+
expression =
|
|
1568
|
+
expression.operator === "||"
|
|
1569
|
+
? (or(...operands) as BindingToolkitExpression<T>)
|
|
1570
|
+
: (and(...operands) as BindingToolkitExpression<T>);
|
|
1543
1571
|
}
|
|
1544
1572
|
break;
|
|
1545
1573
|
case "Comparison":
|
|
@@ -1603,14 +1631,32 @@ function compileConstantObject(expr: ConstantExpression<object>, isNullable = fa
|
|
|
1603
1631
|
* @param expr
|
|
1604
1632
|
* @param embeddedInBinding
|
|
1605
1633
|
* @param isNullable
|
|
1634
|
+
* @param doNotStringify
|
|
1606
1635
|
* @returns The compiled string
|
|
1607
1636
|
*/
|
|
1608
|
-
function compileConstant<T extends PrimitiveType>(
|
|
1637
|
+
export function compileConstant<T extends PrimitiveType>(
|
|
1638
|
+
expr: ConstantExpression<T>,
|
|
1639
|
+
embeddedInBinding: boolean,
|
|
1640
|
+
isNullable?: boolean,
|
|
1641
|
+
doNotStringify?: false
|
|
1642
|
+
): string;
|
|
1643
|
+
export function compileConstant<T extends PrimitiveType>(
|
|
1644
|
+
expr: ConstantExpression<T>,
|
|
1645
|
+
embeddedInBinding: boolean,
|
|
1646
|
+
isNullable?: boolean,
|
|
1647
|
+
doNotStringify?: true
|
|
1648
|
+
): any;
|
|
1649
|
+
export function compileConstant<T extends PrimitiveType>(
|
|
1650
|
+
expr: ConstantExpression<T>,
|
|
1651
|
+
embeddedInBinding: boolean,
|
|
1652
|
+
isNullable = false,
|
|
1653
|
+
doNotStringify: boolean = false
|
|
1654
|
+
): string | any {
|
|
1609
1655
|
if (expr.value === null) {
|
|
1610
|
-
return "null";
|
|
1656
|
+
return doNotStringify ? null : "null";
|
|
1611
1657
|
}
|
|
1612
1658
|
if (expr.value === undefined) {
|
|
1613
|
-
return "undefined";
|
|
1659
|
+
return doNotStringify ? undefined : "undefined";
|
|
1614
1660
|
}
|
|
1615
1661
|
if (typeof expr.value === "object") {
|
|
1616
1662
|
if (Array.isArray(expr.value)) {
|
|
@@ -1633,7 +1679,7 @@ function compileConstant<T extends PrimitiveType>(expr: ConstantExpression<T>, e
|
|
|
1633
1679
|
return "";
|
|
1634
1680
|
}
|
|
1635
1681
|
} else {
|
|
1636
|
-
return expr.value.toString();
|
|
1682
|
+
return doNotStringify ? expr.value : expr.value.toString();
|
|
1637
1683
|
}
|
|
1638
1684
|
}
|
|
1639
1685
|
|
|
@@ -291,7 +291,7 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/ObjectPath", "sap/base/util
|
|
|
291
291
|
|
|
292
292
|
if (args && args.length) {
|
|
293
293
|
var currentTarget = currentConstructor.getAPI(args[0]);
|
|
294
|
-
currentTarget[propertykey.toString()].apply(currentTarget, args);
|
|
294
|
+
currentTarget === null || currentTarget === void 0 ? void 0 : currentTarget[propertykey.toString()].apply(currentTarget, args);
|
|
295
295
|
}
|
|
296
296
|
};
|
|
297
297
|
};
|
|
@@ -322,6 +322,34 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/ObjectPath", "sap/base/util
|
|
|
322
322
|
return registerUI5Metadata(constructor, sTarget, constructor.prototype);
|
|
323
323
|
};
|
|
324
324
|
}
|
|
325
|
+
|
|
326
|
+
_exports.defineUI5Class = defineUI5Class;
|
|
327
|
+
|
|
328
|
+
function createReference() {
|
|
329
|
+
return {
|
|
330
|
+
current: undefined,
|
|
331
|
+
setCurrent: function (oControlInstance) {
|
|
332
|
+
this.current = oControlInstance;
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Defines that the following object will hold a reference to a control through jsx templating.
|
|
338
|
+
*
|
|
339
|
+
* @returns The decorated property.
|
|
340
|
+
*/
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
_exports.createReference = createReference;
|
|
344
|
+
|
|
345
|
+
function defineReference() {
|
|
346
|
+
return function (target, propertyKey, propertyDescriptor) {
|
|
347
|
+
delete propertyDescriptor.writable;
|
|
348
|
+
delete propertyDescriptor.initializer;
|
|
349
|
+
propertyDescriptor.initializer = createReference;
|
|
350
|
+
return propertyDescriptor;
|
|
351
|
+
}; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.;
|
|
352
|
+
}
|
|
325
353
|
/**
|
|
326
354
|
* Internal heavy lifting that will take care of creating the class property for ui5 to use.
|
|
327
355
|
*
|
|
@@ -332,7 +360,7 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/ObjectPath", "sap/base/util
|
|
|
332
360
|
*/
|
|
333
361
|
|
|
334
362
|
|
|
335
|
-
_exports.
|
|
363
|
+
_exports.defineReference = defineReference;
|
|
336
364
|
|
|
337
365
|
function registerUI5Metadata(clazz, name, inObj) {
|
|
338
366
|
var _clazz$getMetadata, _inObj$metadata, _clazz$metadata, _obj$metadata;
|
|
@@ -473,4 +501,4 @@ sap.ui.define(["sap/base/util/merge", "sap/base/util/ObjectPath", "sap/base/util
|
|
|
473
501
|
|
|
474
502
|
return _exports;
|
|
475
503
|
}, false);
|
|
476
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsIm1ldGFkYXRhIiwibWVyZ2UiLCJjb250cm9sbGVyRXh0ZW5zaW9ucyIsInByb3BlcnRpZXMiLCJtYWNyb0NvbnRleHRzIiwiYWdncmVnYXRpb25zIiwiYXNzb2NpYXRpb25zIiwibWV0aG9kcyIsImV2ZW50cyIsImludGVyZmFjZXMiLCJtZXRob2RPdmVycmlkZSIsImV4dGVuc2lvbk5hbWUiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsInRvU3RyaW5nIiwiZXh0ZW5zaWJsZSIsIm92ZXJyaWRlRXhlY3V0aW9uVHlwZSIsIm92ZXJyaWRlRXhlY3V0aW9uIiwicHVibGljRXh0ZW5zaW9uIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdWJsaWMiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZmluYWxFeHRlbnNpb24iLCJmaW5hbCIsInVzaW5nRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uQ2xhc3MiLCJwcm9wZXJ0eURlc2NyaXB0b3IiLCJpbml0aWFsaXplciIsImV2ZW50IiwiZXZlbnRLZXkiLCJwcm9wZXJ0eSIsInVpNVByb3BlcnR5TWV0YWRhdGEiLCJ3cml0YWJsZSIsImFnZ3JlZ2F0aW9uIiwidWk1QWdncmVnYXRpb25NZXRhZGF0YSIsIm11bHRpcGxlIiwidW5kZWZpbmVkIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwiYXNzb2NpYXRpb24iLCJ1aTVBc3NvY2lhdGlvbk1ldGFkYXRhIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiaW50ZXJmYWNlTmFtZSIsInB1c2giLCJ4bWxFdmVudEhhbmRsZXIiLCJwcm9wZXJ0eWtleSIsImN1cnJlbnRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImxlbmd0aCIsImdldEFQSSIsImRlZmluZVVJNUNsYXNzIiwic1RhcmdldCIsIm1ldGFkYXRhRGVmaW5pdGlvbiIsInByb3RvdHlwZSIsImtleSIsInJlZ2lzdGVyVUk1TWV0YWRhdGEiLCJjbGF6eiIsIm5hbWUiLCJpbk9iaiIsImdldE1ldGFkYXRhIiwiaXNBIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJvYmpOYW1lIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqIiwiYmFzZVR5cGUiLCJnZXRQcm90b3R5cGVPZiIsImdldE5hbWUiLCJnZXRTdGVyZW90eXBlIiwicmVuZGVyZXJEZWZpbml0aW9uIiwicmVuZGVyZXIiLCJyZW5kZXIiLCJhcGlWZXJzaW9uIiwia2V5cyIsImUiLCJjRXh0TmFtZSIsIm91dHB1dCIsImV4dGVuZCIsImZuSW5pdCIsImluaXQiLCJhcHBseSIsImFQcm9wZXJ0eUtleXMiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiYUFnZ3JlZ2F0aW9uS2V5cyIsImFnZ3JlZ2F0aW9uS2V5Iiwic2V0QWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImFBc3NvY2lhdGlvbktleXMiLCJhc3NvY2lhdGlvbktleSIsInNldEFzc29jaWF0aW9uIiwiZ2V0QXNzb2NpYXRpb24iLCJvRXh0ZW5zaW9uIiwicG9sIiwib0NsYXNzIiwiTWV0YWRhdGEiLCJjcmVhdGVDbGFzcyIsInVpZCIsIkNvbnRyb2xsZXJNZXRhZGF0YSIsIl9zdGF0aWNPdmVycmlkZSIsIl9vdmVycmlkZSIsIk9iamVjdFBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7OztBQW1FQSxNQUFNQSxjQUFjLEdBQUcsVUFBVUMsTUFBVixFQUFpQztBQUN2REEsSUFBQUEsTUFBTSxDQUFDQyxRQUFQLEdBQWtCQyxLQUFLLENBQ3RCO0FBQ0NDLE1BQUFBLG9CQUFvQixFQUFFLEVBRHZCO0FBRUNDLE1BQUFBLFVBQVUsRUFBRSxF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QzNDLFVBQU1DLEdBQUcsR0FBRyxFQUFaOztBQUNDQSxNQUFBQSxHQUFELENBQWF2RCxXQUFiLEdBQTJCLFlBQTBCO0FBQUEsMkNBQWJDLElBQWE7QUFBYkEsVUFBQUEsSUFBYTtBQUFBOztBQUNwRCxlQUFPUyxLQUFLLENBQUMwQixLQUFOLENBQVksSUFBWixFQUFrQm5DLElBQWxCLENBQVA7QUFDQSxPQUZEOztBQUdBLFVBQU11RCxNQUFNLEdBQUlDLFFBQUQsQ0FBa0JDLFdBQWxCLENBQThCaEQsS0FBOUIsK0JBQTJEaUQsR0FBRyxFQUE5RCxHQUFvRUosR0FBcEUsRUFBeUVLLGtCQUF6RSxDQUFmO0FBQ0FKLE1BQUFBLE1BQU0sQ0FBQzNDLFdBQVAsR0FBcUJnRCxlQUFyQixHQUF1Q1AsVUFBdkM7QUFDQUUsTUFBQUEsTUFBTSxDQUFDM0MsV0FBUCxHQUFxQmlELFNBQXJCLEdBQWlDcEQsS0FBSyxDQUFDRyxXQUFOLEdBQW9CaUQsU0FBckQ7QUFDQSxhQUFPTixNQUFQO0FBQ0EsS0FURDs7QUFXQU8sSUFBQUEsVUFBVSxDQUFDdkIsR0FBWCxDQUFlN0IsSUFBZixFQUFxQnFCLE1BQXJCO0FBQ0EsV0FBT0EsTUFBUDtBQUNBIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWV0YWRhdGFcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgQ29udHJvbGxlck1ldGFkYXRhIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlck1ldGFkYXRhXCI7XG5pbXBvcnQgdHlwZSBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5cbnR5cGUgT3ZlcnJpZGVEZWZpbml0aW9uID0gUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+O1xudHlwZSBVSTVDb250cm9sbGVyTWV0aG9kRGVmaW5pdGlvbiA9IHtcblx0b3ZlcnJpZGVFeGVjdXRpb24/OiBPdmVycmlkZUV4ZWN1dGlvbjtcblx0cHVibGljPzogYm9vbGVhbjtcblx0ZmluYWw/OiBib29sZWFuO1xufTtcbnR5cGUgVUk1UHJvcGVydHlNZXRhZGF0YSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cdGdyb3VwPzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWU/OiBhbnk7XG59O1xudHlwZSBVSTVBZ2dyZWdhdGlvbk1ldGFkYXRhID0ge1xuXHR0eXBlOiBzdHJpbmc7XG5cdG11bHRpcGxlPzogYm9vbGVhbjtcblx0aXNEZWZhdWx0PzogYm9vbGVhbjtcblx0c2luZ3VsYXJOYW1lPzogc3RyaW5nO1xuXHR2aXNpYmlsaXR5Pzogc3RyaW5nO1xufTtcbnR5cGUgVUk1QXNzb2NpYXRpb25NZXRhZGF0YSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRtdWx0aXBsZT86IGJvb2xlYW47XG5cdHNpbmd1bGFyTmFtZT86IHN0cmluZztcbn07XG50eXBlIFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb24gPSB7XG5cdGRlZmF1bHRBZ2dyZWdhdGlvbj86IHN0cmluZztcblx0Y29udHJvbGxlckV4dGVuc2lvbnM6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBDb250cm9sbGVyRXh0ZW5zaW9uIHwgRnVuY3Rpb24+O1xuXHRwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBVSTVQcm9wZXJ0eU1ldGFkYXRhPjtcblx0bWFjcm9Db250ZXh0czogUmVjb3JkPHN0cmluZywgVUk1UHJvcGVydHlNZXRhZGF0YT47XG5cdGFnZ3JlZ2F0aW9uczogUmVjb3JkPHN0cmluZywgVUk1QWdncmVnYXRpb25NZXRhZGF0YT47XG5cdGFzc29jaWF0aW9uczogUmVjb3JkPHN0cmluZywgVUk1QXNzb2NpYXRpb25NZXRhZGF0YT47XG5cdG1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFVJNUNvbnRyb2xsZXJNZXRob2REZWZpbml0aW9uPjtcblx0ZXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCB7fT47XG5cdGludGVyZmFjZXM6IHN0cmluZ1tdO1xufTtcbnR5cGUgVUk1Q29udHJvbGxlciA9IHtcblx0b3ZlcnJpZGU/OiB7IGV4dGVuc2lvbj86IFJlY29yZDxzdHJpbmcsIE92ZXJyaWRlRGVmaW5pdGlvbj4gfSAmIHtcblx0XHRbazogc3RyaW5nXTogRnVuY3Rpb247XG5cdH07XG5cdG1ldGFkYXRhPzogVUk1Q29udHJvbE1ldGFkYXRhRGVmaW5pdGlvbjtcbn07XG5cbnR5cGUgVUk1Q29udHJvbCA9IHtcblx0bWV0YWRhdGE/OiBVSTVDb250cm9sTWV0YWRhdGFEZWZpbml0aW9uO1xufTtcblxudHlwZSBVSTVBUElDb250cm9sID0gVUk1Q29udHJvbCAmIHtcblx0Z2V0QVBJKGV2ZW50OiBVSTVFdmVudCk6IFVJNUFQSUNvbnRyb2w7XG5cdFtrOiBzdHJpbmddOiBGdW5jdGlvbjtcbn07XG5cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgUHJvcGVydGllc09mPFQ+ID0gUGFydGlhbDxQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+Pj47XG5leHBvcnQgdHlwZSBTdHJpY3RQcm9wZXJ0aWVzT2Y8VD4gPSBQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+PjtcbmV4cG9ydCB0eXBlIEVuaGFuY2VXaXRoVUk1PFQ+ID0gVCAmIHtcblx0Ly8gQWRkIGFsbCB0aGUgZ2V0WFhYIG1ldGhvZCwgbWlnaHQgYWRkIHRvbyBtdWNoIGFzIGknbSBub3QgZmlsdGVyaW5nIG9uIGFjdHVhbCBwcm9wZXJ0aWVzIGFjdHVhbGx5Li4uXG5cdFtQIGluIGtleW9mIFQgYXMgYGdldCR7Q2FwaXRhbGl6ZTxzdHJpbmcgJiBQPn1gXTogKCkgPT4gVFtQXTtcbn07XG5jb25zdCBlbnN1cmVNZXRhZGF0YSA9IGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIpIHtcblx0dGFyZ2V0Lm1ldGFkYXRhID0gbWVyZ2UoXG5cdFx0e1xuXHRcdFx0Y29udHJvbGxlckV4dGVuc2lvbnM6IHt9LFxuXHRcdFx0cHJvcGVydGllczoge30sXG5cdFx0XHRtYWNyb0NvbnRleHRzOiB7fSxcblx0XHRcdGFnZ3JlZ2F0aW9uczoge30sXG5cdFx0XHRhc3NvY2lhdGlvbnM6IHt9LFxuXHRcdFx0bWV0aG9kczoge30sXG5cdFx0XHRldmVudHM6IHt9LFxuXHRcdFx0aW50ZXJmYWNlczogW11cblx0XHR9LFxuXHRcdHRhcmdldC5tZXRhZGF0YSB8fCB7fVxuXHQpIGFzIFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb247XG5cdHJldHVybiB0YXJnZXQubWV0YWRhdGE7XG59O1xuXG4vKiAjcmVnaW9uIENPTlRST0xMRVIgRVhURU5TSU9OUyAqL1xuXG4vKipcbiAqIERlZmluZXMgdGhhdCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbiBvdmVycmlkZSBmb3IgdGhlIG1ldGhvZCBuYW1lIHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgc3BlY2lmaWMgY29udHJvbGxlciBleHRlbnNpb24gb3IgYmFzZSBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoYXQgd2lsbCBiZSBvdmVycmlkZW5cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRob2RPdmVycmlkZShleHRlbnNpb25OYW1lPzogc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5KSB7XG5cdFx0aWYgKCF0YXJnZXQub3ZlcnJpZGUpIHtcblx0XHRcdHRhcmdldC5vdmVycmlkZSA9IHt9O1xuXHRcdH1cblx0XHRsZXQgY3VycmVudFRhcmdldCA9IHRhcmdldC5vdmVycmlkZTtcblx0XHRpZiAoZXh0ZW5zaW9uTmFtZSkge1xuXHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbikge1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbiA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbltleHRlbnNpb25OYW1lXSkge1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbltleHRlbnNpb25OYW1lXSA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW2V4dGVuc2lvbk5hbWVdO1xuXHRcdH1cblx0XHRjdXJyZW50VGFyZ2V0W3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0gKHRhcmdldCBhcyBhbnkpW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldO1xuXHR9O1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhhdCB0aGUgbWV0aG9kIGNhbiBiZSBleHRlbmRlZCBieSBvdGhlciBjb250cm9sbGVyIGV4dGVuc2lvbiBiYXNlZCBvbiB0aGUgZGVmaW5lZCBvdmVycmlkZUV4ZWN1dGlvblR5cGUuXG4gKlxuICogQHBhcmFtIG92ZXJyaWRlRXhlY3V0aW9uVHlwZSBUaGUgT3ZlcnJpZGVFeGVjdXRpb24gZGVmaW5pbmcgd2hlbiB0aGUgb3ZlcnJpZGUgc2hvdWxkIHJ1biAoQmVmb3JlIC8gQWZ0ZXIgLyBJbnN0ZWFkKVxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuc2libGUob3ZlcnJpZGVFeGVjdXRpb25UeXBlPzogT3ZlcnJpZGVFeGVjdXRpb24pOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlciwgcHJvcGVydHlLZXkpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ub3ZlcnJpZGVFeGVjdXRpb24gPSBvdmVycmlkZUV4ZWN1dGlvblR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBtZXRob2Qgd2lsbCBiZSBwdWJsaWNseSBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHVzYWdlLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaWNFeHRlbnNpb24oKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ucHVibGljID0gdHJ1ZTtcblx0fTtcbn1cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBtZXRob2Qgd2lsbCBiZSBvbmx5IGF2YWlsYWJsZSBmb3IgaW50ZXJuYWwgdXNhZ2Ugb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlRXh0ZW5zaW9uKCk6IE1ldGhvZERlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sbGVyLCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRkZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlO1xuXHRcdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSkge1xuXHRcdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSA9IHt9O1xuXHRcdH1cblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldLnB1YmxpYyA9IGZhbHNlO1xuXHR9O1xufVxuLyoqXG4gKiBEZWZpbmVzIHRoYXQgdGhlIG1ldGhvZCBjYW5ub3QgYmUgZnVydGhlciBleHRlbmRlZCBieSBvdGhlciBjb250cm9sbGVyIGV4dGVuc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluYWxFeHRlbnNpb24oKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0uZmluYWwgPSB0cnVlO1xuXHR9O1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gdXNlIGluc3RhbnRpYXRlIGEgY29udHJvbGxlciBleHRlbnNpb24gdW5kZXIgdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb25DbGFzcyBUaGUgY29udHJvbGxlciBleHRlbnNpb24gdGhhdCB3aWxsIGJlIGluc3RhbnRpYXRlZFxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNpbmdFeHRlbnNpb24oZXh0ZW5zaW9uQ2xhc3M6IHR5cGVvZiBDb250cm9sbGVyRXh0ZW5zaW9uIHwgRnVuY3Rpb24pOiBQcm9wZXJ0eURlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sbGVyLCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT4pIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHRtZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9uc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSA9IGV4dGVuc2lvbkNsYXNzO1xuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC5cbn1cblxuLyogI2VuZHJlZ2lvbiAqL1xuXG4vKiAjcmVnaW9uIENPTlRST0wgKi9cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIHByb3BlcnR5IHNoYWxsIGJlIGRlY2xhcmVkIGFzIGFuIGV2ZW50IG9uIHRoZSBjb250cm9sIG1ldGFkYXRhLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50KCk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIGV2ZW50S2V5KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuZXZlbnRzW2V2ZW50S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXkudG9TdHJpbmcoKV0gPSB7fTtcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5IGluIHRoZSBjb250cm9sIG1ldGF0YWRhLlxuICpcbiAqIEBwYXJhbSB1aTVQcm9wZXJ0eU1ldGFkYXRhIFRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHkodWk1UHJvcGVydHlNZXRhZGF0YTogVUk1UHJvcGVydHlNZXRhZGF0YSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSA9IHVpNVByb3BlcnR5TWV0YWRhdGE7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC47XG59XG4vKipcbiAqIERlZmluZXMgYW5kIGNvbmZpZ3VyZSB0aGUgZm9sbG93aW5nIGFnZ3JlZ2F0aW9uIGluIHRoZSBjb250cm9sIG1ldGF0YWRhLlxuICpcbiAqIEBwYXJhbSB1aTVBZ2dyZWdhdGlvbk1ldGFkYXRhIFRoZSBhZ2dyZWdhdGlvbiBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWdncmVnYXRpb24odWk1QWdncmVnYXRpb25NZXRhZGF0YTogVUk1QWdncmVnYXRpb25NZXRhZGF0YSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAodWk1QWdncmVnYXRpb25NZXRhZGF0YS5tdWx0aXBsZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBVSTUgZGVmYXVsdHMgdGhpcyB0byB0cnVlIGJ1dCB0aGlzIGlzIGp1c3Qgd2VpcmQuLi5cblx0XHRcdHVpNUFnZ3JlZ2F0aW9uTWV0YWRhdGEubXVsdGlwbGUgPSBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKCFtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldID0gdWk1QWdncmVnYXRpb25NZXRhZGF0YTtcblx0XHR9XG5cdFx0aWYgKHVpNUFnZ3JlZ2F0aW9uTWV0YWRhdGEuaXNEZWZhdWx0KSB7XG5cdFx0XHRtZXRhZGF0YS5kZWZhdWx0QWdncmVnYXRpb24gPSBwcm9wZXJ0eUtleTtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fSBhcyBhbnk7IC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gYWNjZXNzb3IgZGVjb3JhdG9yLCBidXQgc29tZWhvdyB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlIGl0IGlmIGkgZGVjbGFyZSBpdCBhcyBzdWNoLjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuZCBjb25maWd1cmUgdGhlIGZvbGxvd2luZyBhc3NvY2lhdGlvbiBpbiB0aGUgY29udHJvbCBtZXRhdGFkYS5cbiAqXG4gKiBAcGFyYW0gdWk1QXNzb2NpYXRpb25NZXRhZGF0YSBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgYXNzb2NpYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NvY2lhdGlvbih1aTVBc3NvY2lhdGlvbk1ldGFkYXRhOiBVSTVBc3NvY2lhdGlvbk1ldGFkYXRhKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSA9IHVpNUFzc29jaWF0aW9uTWV0YWRhdGE7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC47XG59XG5cbi8qKlxuICogRGVmaW5lcyBpbiB0aGUgbWV0YWRhdGEgdGhhdCB0aGlzIGNvbnRyb2wgaW1wbGVtZW50cyBhIHNwZWNpZmljIGludGVyZmFjZS5cbiAqXG4gKiBAcGFyYW0gaW50ZXJmYWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgaW1wbGVtZW50ZWQgaW50ZXJmYWNlXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW1wbGVtZW50SW50ZXJmYWNlKGludGVyZmFjZU5hbWU6IHN0cmluZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cblx0XHRtZXRhZGF0YS5pbnRlcmZhY2VzLnB1c2goaW50ZXJmYWNlTmFtZSk7XG5cdH07XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGZvbGxvd2luZyBtZXRob2Qgc2hvdWxkIGFsc28gYmUgZXhwb3NlZCBzdGF0aWNhbGx5IHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gWE1MLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4bWxFdmVudEhhbmRsZXIoKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5a2V5KSB7XG5cdFx0Y29uc3QgY3VycmVudENvbnN0cnVjdG9yOiBVSTVBUElDb250cm9sID0gdGFyZ2V0LmNvbnN0cnVjdG9yIGFzIHVua25vd24gYXMgVUk1QVBJQ29udHJvbDtcblx0XHRjdXJyZW50Q29uc3RydWN0b3JbcHJvcGVydHlrZXkudG9TdHJpbmcoKV0gPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50Q29uc3RydWN0b3IuZ2V0QVBJKGFyZ3NbMF0gYXMgVUk1RXZlbnQpO1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0W3Byb3BlcnR5a2V5LnRvU3RyaW5nKCldKC4uLmFyZ3MpO1xuXHRcdFx0fVxuXHRcdH07XG5cdH07XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGZvbGxvd2luZyBjbGFzcyBzaG91bGQgZGVmaW5lIGEgVUk1IGNvbnRyb2wgb2YgdGhlIHNwZWNpZmllZCBuYW1lLlxuICpcbiAqIEBwYXJhbSBzVGFyZ2V0IFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbWFjcm8gQVBJXG4gKiBAcGFyYW0gbWV0YWRhdGFEZWZpbml0aW9uIElubGluZSBtZXRhZGF0YSBkZWZpbml0aW9uXG4gKiBAY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZVVJNUNsYXNzKHNUYXJnZXQ6IHN0cmluZywgbWV0YWRhdGFEZWZpbml0aW9uPzogYW55KTogQ2xhc3NEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKGNvbnN0cnVjdG9yOiBGdW5jdGlvbikge1xuXHRcdGlmICghY29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhKSB7XG5cdFx0XHRjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEgPSB7fTtcblx0XHR9XG5cdFx0aWYgKG1ldGFkYXRhRGVmaW5pdGlvbikge1xuXHRcdFx0Zm9yIChjb25zdCBrZXkgaW4gbWV0YWRhdGFEZWZpbml0aW9uKSB7XG5cdFx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YVtrZXldID0gbWV0YWRhdGFEZWZpbml0aW9uW2tleSBhcyBrZXlvZiBVSTVDb250cm9sTWV0YWRhdGFEZWZpbml0aW9uXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlZ2lzdGVyVUk1TWV0YWRhdGEoY29uc3RydWN0b3IsIHNUYXJnZXQsIGNvbnN0cnVjdG9yLnByb3RvdHlwZSk7XG5cdH07XG59XG5cbi8qKlxuICogSW50ZXJuYWwgaGVhdnkgbGlmdGluZyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGNyZWF0aW5nIHRoZSBjbGFzcyBwcm9wZXJ0eSBmb3IgdWk1IHRvIHVzZS5cbiAqXG4gKiBAcGFyYW0gY2xhenogVGhlIGNsYXNzIHByb3RvdHlwZVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRvIGNyZWF0ZVxuICogQHBhcmFtIGluT2JqIFRoZSBtZXRhZGF0YSBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSBjbGFzc1xuICovXG5mdW5jdGlvbiByZWdpc3RlclVJNU1ldGFkYXRhKGNsYXp6OiBhbnksIG5hbWU6IHN0cmluZywgaW5PYmo6IGFueSk6IGFueSB7XG5cdGlmIChjbGF6ei5nZXRNZXRhZGF0YSAmJiBjbGF6ei5nZXRNZXRhZGF0YSgpLmlzQShcInNhcC51aS5jb3JlLm12Yy5Db250cm9sbGVyRXh0ZW5zaW9uXCIpKSB7XG5cdFx0T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5PYmopLmZvckVhY2goKG9iak5hbWUpID0+IHtcblx0XHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGluT2JqLCBvYmpOYW1lKTtcblx0XHRcdGlmIChkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLmVudW1lcmFibGUpIHtcblx0XHRcdFx0ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0XHRcdFx0Ly9cdFx0TG9nLmVycm9yKGBQcm9wZXJ0eSAke29iak5hbWV9IGZyb20gJHtuYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIGFzIHB1YmxpY2ApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG9iajogYW55ID0ge307XG5cdG9iai5tZXRhZGF0YSA9IGluT2JqLm1ldGFkYXRhIHx8IHt9O1xuXHRvYmoub3ZlcnJpZGUgPSBpbk9iai5vdmVycmlkZTtcblx0b2JqLmNvbnN0cnVjdG9yID0gY2xheno7XG5cdG9iai5tZXRhZGF0YS5iYXNlVHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGF6ei5wcm90b3R5cGUpLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpO1xuXG5cdGlmIChjbGF6ej8uZ2V0TWV0YWRhdGEoKT8uZ2V0U3RlcmVvdHlwZSgpID09PSBcImNvbnRyb2xcIikge1xuXHRcdGNvbnN0IHJlbmRlcmVyRGVmaW5pdGlvbiA9IGluT2JqLnJlbmRlcmVyIHx8IGNsYXp6LnJlbmRlcmVyIHx8IGNsYXp6LnJlbmRlcjtcblx0XHRvYmoucmVuZGVyZXIgPSB7IGFwaVZlcnNpb246IDIgfTtcblx0XHRpZiAodHlwZW9mIHJlbmRlcmVyRGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRvYmoucmVuZGVyZXIucmVuZGVyID0gcmVuZGVyZXJEZWZpbml0aW9uO1xuXHRcdH0gZWxzZSBpZiAocmVuZGVyZXJEZWZpbml0aW9uICE9IHVuZGVmaW5lZCkge1xuXHRcdFx0b2JqLnJlbmRlcmVyID0gcmVuZGVyZXJEZWZpbml0aW9uO1xuXHRcdH1cblx0fVxuXHRvYmoubWV0YWRhdGEuaW50ZXJmYWNlcyA9IGluT2JqLm1ldGFkYXRhPy5pbnRlcmZhY2VzIHx8IGNsYXp6Lm1ldGFkYXRhPy5pbnRlcmZhY2VzO1xuXHRPYmplY3Qua2V5cyhjbGF6ei5wcm90b3R5cGUpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGlmIChrZXkgIT09IFwibWV0YWRhdGFcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0b2JqW2tleV0gPSBjbGF6ei5wcm90b3R5cGVba2V5XTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRpZiAob2JqLm1ldGFkYXRhPy5jb250cm9sbGVyRXh0ZW5zaW9ucyAmJiBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEuY29udHJvbGxlckV4dGVuc2lvbnMpLmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKGNvbnN0IGNFeHROYW1lIGluIG9iai5tZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9ucykge1xuXHRcdFx0b2JqW2NFeHROYW1lXSA9IG9iai5tZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9uc1tjRXh0TmFtZV07XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG91dHB1dCA9IGNsYXp6LmV4dGVuZChuYW1lLCBvYmopO1xuXHRjb25zdCBmbkluaXQgPSBvdXRwdXQucHJvdG90eXBlLmluaXQ7XG5cdG91dHB1dC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuXHRcdGlmIChmbkluaXQpIHtcblx0XHRcdGZuSW5pdC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHR9XG5cdFx0dGhpcy5tZXRhZGF0YSA9IG9iai5tZXRhZGF0YTtcblxuXHRcdGlmIChvYmoubWV0YWRhdGEucHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgYVByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKG9iai5tZXRhZGF0YS5wcm9wZXJ0aWVzKTtcblx0XHRcdGFQcm9wZXJ0eUtleXMuZm9yRWFjaCgocHJvcGVydHlLZXkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNldDogKHY6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHYpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgYUFnZ3JlZ2F0aW9uS2V5cyA9IE9iamVjdC5rZXlzKG9iai5tZXRhZGF0YS5hZ2dyZWdhdGlvbnMpO1xuXHRcdFx0YUFnZ3JlZ2F0aW9uS2V5cy5mb3JFYWNoKChhZ2dyZWdhdGlvbktleSkgPT4ge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgYWdncmVnYXRpb25LZXksIHtcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0c2V0OiAodjogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbktleSwgdik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IHRoaXMuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25LZXkpO1xuXHRcdFx0XHRcdFx0aWYgKG9iai5tZXRhZGF0YS5hZ2dyZWdhdGlvbnNbYWdncmVnYXRpb25LZXldLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhZ2dyZWdhdGlvbkNvbnRlbnQgfHwgW107XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYWdncmVnYXRpb25Db250ZW50O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGFBc3NvY2lhdGlvbktleXMgPSBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEuYXNzb2NpYXRpb25zKTtcblx0XHRcdGFBc3NvY2lhdGlvbktleXMuZm9yRWFjaCgoYXNzb2NpYXRpb25LZXkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGFzc29jaWF0aW9uS2V5LCB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNldDogKHY6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0QXNzb2NpYXRpb24oYXNzb2NpYXRpb25LZXksIHYpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFzc29jaWF0aW9uKGFzc29jaWF0aW9uS2V5KTtcblx0XHRcdFx0XHRcdGlmIChvYmoubWV0YWRhdGEuYXNzb2NpYXRpb25zW2Fzc29jaWF0aW9uS2V5XS5tdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYWdncmVnYXRpb25Db250ZW50IHx8IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFnZ3JlZ2F0aW9uQ29udGVudDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXHRjbGF6ei5vdmVycmlkZSA9IGZ1bmN0aW9uIChvRXh0ZW5zaW9uOiBhbnkpIHtcblx0XHRjb25zdCBwb2wgPSB7fTtcblx0XHQocG9sIGFzIGFueSkuY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdHJldHVybiBjbGF6ei5hcHBseSh0aGlzLCBhcmdzIGFzIGFueSk7XG5cdFx0fTtcblx0XHRjb25zdCBvQ2xhc3MgPSAoTWV0YWRhdGEgYXMgYW55KS5jcmVhdGVDbGFzcyhjbGF6eiwgYGFub255bW91c0V4dGVuc2lvbn4ke3VpZCgpfWAsIHBvbCwgQ29udHJvbGxlck1ldGFkYXRhKTtcblx0XHRvQ2xhc3MuZ2V0TWV0YWRhdGEoKS5fc3RhdGljT3ZlcnJpZGUgPSBvRXh0ZW5zaW9uO1xuXHRcdG9DbGFzcy5nZXRNZXRhZGF0YSgpLl9vdmVycmlkZSA9IGNsYXp6LmdldE1ldGFkYXRhKCkuX292ZXJyaWRlO1xuXHRcdHJldHVybiBvQ2xhc3M7XG5cdH07XG5cblx0T2JqZWN0UGF0aC5zZXQobmFtZSwgb3V0cHV0KTtcblx0cmV0dXJuIG91dHB1dDtcbn1cbiJdfQ==
|
|
504
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnN1cmVNZXRhZGF0YSIsInRhcmdldCIsIm1ldGFkYXRhIiwibWVyZ2UiLCJjb250cm9sbGVyRXh0ZW5zaW9ucyIsInByb3BlcnRpZXMiLCJtYWNyb0NvbnRleHRzIiwiYWdncmVnYXRpb25zIiwiYXNzb2NpYXRpb25zIiwibWV0aG9kcyIsImV2ZW50cyIsImludGVyZmFjZXMiLCJtZXRob2RPdmVycmlkZSIsImV4dGVuc2lvbk5hbWUiLCJwcm9wZXJ0eUtleSIsIm92ZXJyaWRlIiwiY3VycmVudFRhcmdldCIsImV4dGVuc2lvbiIsInRvU3RyaW5nIiwiZXh0ZW5zaWJsZSIsIm92ZXJyaWRlRXhlY3V0aW9uVHlwZSIsIm92ZXJyaWRlRXhlY3V0aW9uIiwicHVibGljRXh0ZW5zaW9uIiwiZGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdWJsaWMiLCJwcml2YXRlRXh0ZW5zaW9uIiwiZmluYWxFeHRlbnNpb24iLCJmaW5hbCIsInVzaW5nRXh0ZW5zaW9uIiwiZXh0ZW5zaW9uQ2xhc3MiLCJwcm9wZXJ0eURlc2NyaXB0b3IiLCJpbml0aWFsaXplciIsImV2ZW50IiwiZXZlbnRLZXkiLCJwcm9wZXJ0eSIsInVpNVByb3BlcnR5TWV0YWRhdGEiLCJ3cml0YWJsZSIsImFnZ3JlZ2F0aW9uIiwidWk1QWdncmVnYXRpb25NZXRhZGF0YSIsIm11bHRpcGxlIiwidW5kZWZpbmVkIiwiaXNEZWZhdWx0IiwiZGVmYXVsdEFnZ3JlZ2F0aW9uIiwiYXNzb2NpYXRpb24iLCJ1aTVBc3NvY2lhdGlvbk1ldGFkYXRhIiwiaW1wbGVtZW50SW50ZXJmYWNlIiwiaW50ZXJmYWNlTmFtZSIsInB1c2giLCJ4bWxFdmVudEhhbmRsZXIiLCJwcm9wZXJ0eWtleSIsImN1cnJlbnRDb25zdHJ1Y3RvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImxlbmd0aCIsImdldEFQSSIsImRlZmluZVVJNUNsYXNzIiwic1RhcmdldCIsIm1ldGFkYXRhRGVmaW5pdGlvbiIsInByb3RvdHlwZSIsImtleSIsInJlZ2lzdGVyVUk1TWV0YWRhdGEiLCJjcmVhdGVSZWZlcmVuY2UiLCJjdXJyZW50Iiwic2V0Q3VycmVudCIsIm9Db250cm9sSW5zdGFuY2UiLCJkZWZpbmVSZWZlcmVuY2UiLCJjbGF6eiIsIm5hbWUiLCJpbk9iaiIsImdldE1ldGFkYXRhIiwiaXNBIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvckVhY2giLCJvYmpOYW1lIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwib2JqIiwiYmFzZVR5cGUiLCJnZXRQcm90b3R5cGVPZiIsImdldE5hbWUiLCJnZXRTdGVyZW90eXBlIiwicmVuZGVyZXJEZWZpbml0aW9uIiwicmVuZGVyZXIiLCJyZW5kZXIiLCJhcGlWZXJzaW9uIiwia2V5cyIsImUiLCJjRXh0TmFtZSIsIm91dHB1dCIsImV4dGVuZCIsImZuSW5pdCIsImluaXQiLCJhcHBseSIsImFQcm9wZXJ0eUtleXMiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsInNldCIsInYiLCJzZXRQcm9wZXJ0eSIsImdldCIsImdldFByb3BlcnR5IiwiYUFnZ3JlZ2F0aW9uS2V5cyIsImFnZ3JlZ2F0aW9uS2V5Iiwic2V0QWdncmVnYXRpb24iLCJhZ2dyZWdhdGlvbkNvbnRlbnQiLCJnZXRBZ2dyZWdhdGlvbiIsImFBc3NvY2lhdGlvbktleXMiLCJhc3NvY2lhdGlvbktleSIsInNldEFzc29jaWF0aW9uIiwiZ2V0QXNzb2NpYXRpb24iLCJvRXh0ZW5zaW9uIiwicG9sIiwib0NsYXNzIiwiTWV0YWRhdGEiLCJjcmVhdGVDbGFzcyIsInVpZCIsIkNvbnRyb2xsZXJNZXRhZGF0YSIsIl9zdGF0aWNPdmVycmlkZSIsIl9vdmVycmlkZSIsIk9iamVjdFBhdGgiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNsYXNzU3VwcG9ydC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCBNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWV0YWRhdGFcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgQ29udHJvbGxlck1ldGFkYXRhIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlck1ldGFkYXRhXCI7XG5pbXBvcnQgdHlwZSBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5cbnR5cGUgT3ZlcnJpZGVEZWZpbml0aW9uID0gUmVjb3JkPHN0cmluZywgRnVuY3Rpb24+O1xudHlwZSBVSTVDb250cm9sbGVyTWV0aG9kRGVmaW5pdGlvbiA9IHtcblx0b3ZlcnJpZGVFeGVjdXRpb24/OiBPdmVycmlkZUV4ZWN1dGlvbjtcblx0cHVibGljPzogYm9vbGVhbjtcblx0ZmluYWw/OiBib29sZWFuO1xufTtcbnR5cGUgVUk1UHJvcGVydHlNZXRhZGF0YSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cdGdyb3VwPzogc3RyaW5nO1xuXHRkZWZhdWx0VmFsdWU/OiBhbnk7XG59O1xudHlwZSBVSTVBZ2dyZWdhdGlvbk1ldGFkYXRhID0ge1xuXHR0eXBlOiBzdHJpbmc7XG5cdG11bHRpcGxlPzogYm9vbGVhbjtcblx0aXNEZWZhdWx0PzogYm9vbGVhbjtcblx0c2luZ3VsYXJOYW1lPzogc3RyaW5nO1xuXHR2aXNpYmlsaXR5Pzogc3RyaW5nO1xufTtcbnR5cGUgVUk1QXNzb2NpYXRpb25NZXRhZGF0YSA9IHtcblx0dHlwZTogc3RyaW5nO1xuXHRtdWx0aXBsZT86IGJvb2xlYW47XG5cdHNpbmd1bGFyTmFtZT86IHN0cmluZztcbn07XG50eXBlIFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb24gPSB7XG5cdGRlZmF1bHRBZ2dyZWdhdGlvbj86IHN0cmluZztcblx0Y29udHJvbGxlckV4dGVuc2lvbnM6IFJlY29yZDxzdHJpbmcsIHR5cGVvZiBDb250cm9sbGVyRXh0ZW5zaW9uIHwgRnVuY3Rpb24+O1xuXHRwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBVSTVQcm9wZXJ0eU1ldGFkYXRhPjtcblx0bWFjcm9Db250ZXh0czogUmVjb3JkPHN0cmluZywgVUk1UHJvcGVydHlNZXRhZGF0YT47XG5cdGFnZ3JlZ2F0aW9uczogUmVjb3JkPHN0cmluZywgVUk1QWdncmVnYXRpb25NZXRhZGF0YT47XG5cdGFzc29jaWF0aW9uczogUmVjb3JkPHN0cmluZywgVUk1QXNzb2NpYXRpb25NZXRhZGF0YT47XG5cdG1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFVJNUNvbnRyb2xsZXJNZXRob2REZWZpbml0aW9uPjtcblx0ZXZlbnRzOiBSZWNvcmQ8c3RyaW5nLCB7fT47XG5cdGludGVyZmFjZXM6IHN0cmluZ1tdO1xufTtcbnR5cGUgVUk1Q29udHJvbGxlciA9IHtcblx0b3ZlcnJpZGU/OiB7IGV4dGVuc2lvbj86IFJlY29yZDxzdHJpbmcsIE92ZXJyaWRlRGVmaW5pdGlvbj4gfSAmIHtcblx0XHRbazogc3RyaW5nXTogRnVuY3Rpb247XG5cdH07XG5cdG1ldGFkYXRhPzogVUk1Q29udHJvbE1ldGFkYXRhRGVmaW5pdGlvbjtcbn07XG5cbnR5cGUgVUk1Q29udHJvbCA9IHtcblx0bWV0YWRhdGE/OiBVSTVDb250cm9sTWV0YWRhdGFEZWZpbml0aW9uO1xufTtcblxudHlwZSBVSTVBUElDb250cm9sID0gVUk1Q29udHJvbCAmIHtcblx0Z2V0QVBJKGV2ZW50OiBVSTVFdmVudCk6IFVJNUFQSUNvbnRyb2w7XG5cdFtrOiBzdHJpbmddOiBGdW5jdGlvbjtcbn07XG5cbnR5cGUgQ29udHJvbFByb3BlcnR5TmFtZXM8VD4gPSB7XG5cdFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgRnVuY3Rpb24gPyBuZXZlciA6IEs7XG59W2tleW9mIFRdO1xuZXhwb3J0IHR5cGUgUHJvcGVydGllc09mPFQ+ID0gUGFydGlhbDxQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+Pj47XG5leHBvcnQgdHlwZSBTdHJpY3RQcm9wZXJ0aWVzT2Y8VD4gPSBQaWNrPFQsIENvbnRyb2xQcm9wZXJ0eU5hbWVzPFQ+PjtcbmV4cG9ydCB0eXBlIEVuaGFuY2VXaXRoVUk1PFQ+ID0gVCAmIHtcblx0Ly8gQWRkIGFsbCB0aGUgZ2V0WFhYIG1ldGhvZCwgbWlnaHQgYWRkIHRvbyBtdWNoIGFzIGknbSBub3QgZmlsdGVyaW5nIG9uIGFjdHVhbCBwcm9wZXJ0aWVzIGFjdHVhbGx5Li4uXG5cdFtQIGluIGtleW9mIFQgYXMgYGdldCR7Q2FwaXRhbGl6ZTxzdHJpbmcgJiBQPn1gXTogKCkgPT4gVFtQXTtcbn07XG5jb25zdCBlbnN1cmVNZXRhZGF0YSA9IGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIpIHtcblx0dGFyZ2V0Lm1ldGFkYXRhID0gbWVyZ2UoXG5cdFx0e1xuXHRcdFx0Y29udHJvbGxlckV4dGVuc2lvbnM6IHt9LFxuXHRcdFx0cHJvcGVydGllczoge30sXG5cdFx0XHRtYWNyb0NvbnRleHRzOiB7fSxcblx0XHRcdGFnZ3JlZ2F0aW9uczoge30sXG5cdFx0XHRhc3NvY2lhdGlvbnM6IHt9LFxuXHRcdFx0bWV0aG9kczoge30sXG5cdFx0XHRldmVudHM6IHt9LFxuXHRcdFx0aW50ZXJmYWNlczogW11cblx0XHR9LFxuXHRcdHRhcmdldC5tZXRhZGF0YSB8fCB7fVxuXHQpIGFzIFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb247XG5cdHJldHVybiB0YXJnZXQubWV0YWRhdGE7XG59O1xuXG4vKiAjcmVnaW9uIENPTlRST0xMRVIgRVhURU5TSU9OUyAqL1xuXG4vKipcbiAqIERlZmluZXMgdGhhdCB0aGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbiBvdmVycmlkZSBmb3IgdGhlIG1ldGhvZCBuYW1lIHdpdGggdGhlIHNhbWUgbmFtZSBpbiB0aGUgc3BlY2lmaWMgY29udHJvbGxlciBleHRlbnNpb24gb3IgYmFzZSBpbXBsZW1lbnRhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZXh0ZW5zaW9uTmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoYXQgd2lsbCBiZSBvdmVycmlkZW5cbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXRob2RPdmVycmlkZShleHRlbnNpb25OYW1lPzogc3RyaW5nKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5KSB7XG5cdFx0aWYgKCF0YXJnZXQub3ZlcnJpZGUpIHtcblx0XHRcdHRhcmdldC5vdmVycmlkZSA9IHt9O1xuXHRcdH1cblx0XHRsZXQgY3VycmVudFRhcmdldCA9IHRhcmdldC5vdmVycmlkZTtcblx0XHRpZiAoZXh0ZW5zaW9uTmFtZSkge1xuXHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbikge1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbiA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbltleHRlbnNpb25OYW1lXSkge1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0LmV4dGVuc2lvbltleHRlbnNpb25OYW1lXSA9IHt9O1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQuZXh0ZW5zaW9uW2V4dGVuc2lvbk5hbWVdO1xuXHRcdH1cblx0XHRjdXJyZW50VGFyZ2V0W3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0gKHRhcmdldCBhcyBhbnkpW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldO1xuXHR9O1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhhdCB0aGUgbWV0aG9kIGNhbiBiZSBleHRlbmRlZCBieSBvdGhlciBjb250cm9sbGVyIGV4dGVuc2lvbiBiYXNlZCBvbiB0aGUgZGVmaW5lZCBvdmVycmlkZUV4ZWN1dGlvblR5cGUuXG4gKlxuICogQHBhcmFtIG92ZXJyaWRlRXhlY3V0aW9uVHlwZSBUaGUgT3ZlcnJpZGVFeGVjdXRpb24gZGVmaW5pbmcgd2hlbiB0aGUgb3ZlcnJpZGUgc2hvdWxkIHJ1biAoQmVmb3JlIC8gQWZ0ZXIgLyBJbnN0ZWFkKVxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBtZXRob2RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dGVuc2libGUob3ZlcnJpZGVFeGVjdXRpb25UeXBlPzogT3ZlcnJpZGVFeGVjdXRpb24pOiBNZXRob2REZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbGxlciwgcHJvcGVydHlLZXkpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ub3ZlcnJpZGVFeGVjdXRpb24gPSBvdmVycmlkZUV4ZWN1dGlvblR5cGU7XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBtZXRob2Qgd2lsbCBiZSBwdWJsaWNseSBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHVzYWdlLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaWNFeHRlbnNpb24oKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKTogdm9pZCB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0ucHVibGljID0gdHJ1ZTtcblx0fTtcbn1cbi8qKlxuICogRGVmaW5lcyB0aGF0IHRoZSBtZXRob2Qgd2lsbCBiZSBvbmx5IGF2YWlsYWJsZSBmb3IgaW50ZXJuYWwgdXNhZ2Ugb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcml2YXRlRXh0ZW5zaW9uKCk6IE1ldGhvZERlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sbGVyLCBwcm9wZXJ0eUtleSwgZGVzY3JpcHRvcikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRkZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlO1xuXHRcdGlmICghbWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSkge1xuXHRcdFx0bWV0YWRhdGEubWV0aG9kc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSA9IHt9O1xuXHRcdH1cblx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldLnB1YmxpYyA9IGZhbHNlO1xuXHR9O1xufVxuLyoqXG4gKiBEZWZpbmVzIHRoYXQgdGhlIG1ldGhvZCBjYW5ub3QgYmUgZnVydGhlciBleHRlbmRlZCBieSBvdGhlciBjb250cm9sbGVyIGV4dGVuc2lvbi5cbiAqXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluYWxFeHRlbnNpb24oKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2xsZXIsIHByb3BlcnR5S2V5LCBkZXNjcmlwdG9yKSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG5cdFx0aWYgKCFtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5tZXRob2RzW3Byb3BlcnR5S2V5LnRvU3RyaW5nKCldID0ge307XG5cdFx0fVxuXHRcdG1ldGFkYXRhLm1ldGhvZHNbcHJvcGVydHlLZXkudG9TdHJpbmcoKV0uZmluYWwgPSB0cnVlO1xuXHR9O1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gdXNlIGluc3RhbnRpYXRlIGEgY29udHJvbGxlciBleHRlbnNpb24gdW5kZXIgdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBuYW1lLlxuICpcbiAqIEBwYXJhbSBleHRlbnNpb25DbGFzcyBUaGUgY29udHJvbGxlciBleHRlbnNpb24gdGhhdCB3aWxsIGJlIGluc3RhbnRpYXRlZFxuICogQHJldHVybnMgVGhlIGRlY29yYXRlZCBwcm9wZXJ0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNpbmdFeHRlbnNpb24oZXh0ZW5zaW9uQ2xhc3M6IHR5cGVvZiBDb250cm9sbGVyRXh0ZW5zaW9uIHwgRnVuY3Rpb24pOiBQcm9wZXJ0eURlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBVSTVDb250cm9sbGVyLCBwcm9wZXJ0eUtleTogc3RyaW5nLCBwcm9wZXJ0eURlc2NyaXB0b3I6IFR5cGVkUHJvcGVydHlEZXNjcmlwdG9yPGFueT4pIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblx0XHRtZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9uc1twcm9wZXJ0eUtleS50b1N0cmluZygpXSA9IGV4dGVuc2lvbkNsYXNzO1xuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC5cbn1cblxuLyogI2VuZHJlZ2lvbiAqL1xuXG4vKiAjcmVnaW9uIENPTlRST0wgKi9cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIHByb3BlcnR5IHNoYWxsIGJlIGRlY2xhcmVkIGFzIGFuIGV2ZW50IG9uIHRoZSBjb250cm9sIG1ldGFkYXRhLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50KCk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIGV2ZW50S2V5KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuZXZlbnRzW2V2ZW50S2V5LnRvU3RyaW5nKCldKSB7XG5cdFx0XHRtZXRhZGF0YS5ldmVudHNbZXZlbnRLZXkudG9TdHJpbmcoKV0gPSB7fTtcblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgZm9sbG93aW5nIHByb3BlcnR5IGluIHRoZSBjb250cm9sIG1ldGF0YWRhLlxuICpcbiAqIEBwYXJhbSB1aTVQcm9wZXJ0eU1ldGFkYXRhIFRoZSBwcm9wZXJ0eSBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHkodWk1UHJvcGVydHlNZXRhZGF0YTogVUk1UHJvcGVydHlNZXRhZGF0YSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAoIW1ldGFkYXRhLnByb3BlcnRpZXNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5wcm9wZXJ0aWVzW3Byb3BlcnR5S2V5XSA9IHVpNVByb3BlcnR5TWV0YWRhdGE7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC47XG59XG4vKipcbiAqIERlZmluZXMgYW5kIGNvbmZpZ3VyZSB0aGUgZm9sbG93aW5nIGFnZ3JlZ2F0aW9uIGluIHRoZSBjb250cm9sIG1ldGF0YWRhLlxuICpcbiAqIEBwYXJhbSB1aTVBZ2dyZWdhdGlvbk1ldGFkYXRhIFRoZSBhZ2dyZWdhdGlvbiBkZWZpbml0aW9uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWdncmVnYXRpb24odWk1QWdncmVnYXRpb25NZXRhZGF0YTogVUk1QWdncmVnYXRpb25NZXRhZGF0YSk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5S2V5OiBzdHJpbmcsIHByb3BlcnR5RGVzY3JpcHRvcjogVHlwZWRQcm9wZXJ0eURlc2NyaXB0b3I8YW55Pikge1xuXHRcdGNvbnN0IG1ldGFkYXRhID0gZW5zdXJlTWV0YWRhdGEodGFyZ2V0KTtcblx0XHRpZiAodWk1QWdncmVnYXRpb25NZXRhZGF0YS5tdWx0aXBsZSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHQvLyBVSTUgZGVmYXVsdHMgdGhpcyB0byB0cnVlIGJ1dCB0aGlzIGlzIGp1c3Qgd2VpcmQuLi5cblx0XHRcdHVpNUFnZ3JlZ2F0aW9uTWV0YWRhdGEubXVsdGlwbGUgPSBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKCFtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldKSB7XG5cdFx0XHRtZXRhZGF0YS5hZ2dyZWdhdGlvbnNbcHJvcGVydHlLZXldID0gdWk1QWdncmVnYXRpb25NZXRhZGF0YTtcblx0XHR9XG5cdFx0aWYgKHVpNUFnZ3JlZ2F0aW9uTWV0YWRhdGEuaXNEZWZhdWx0KSB7XG5cdFx0XHRtZXRhZGF0YS5kZWZhdWx0QWdncmVnYXRpb24gPSBwcm9wZXJ0eUtleTtcblx0XHR9XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXG5cdFx0cmV0dXJuIHByb3BlcnR5RGVzY3JpcHRvcjtcblx0fSBhcyBhbnk7IC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gYWNjZXNzb3IgZGVjb3JhdG9yLCBidXQgc29tZWhvdyB0aGUgY29tcGlsZXIgZG9lc24ndCBsaWtlIGl0IGlmIGkgZGVjbGFyZSBpdCBhcyBzdWNoLjtcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGFuZCBjb25maWd1cmUgdGhlIGZvbGxvd2luZyBhc3NvY2lhdGlvbiBpbiB0aGUgY29udHJvbCBtZXRhdGFkYS5cbiAqXG4gKiBAcGFyYW0gdWk1QXNzb2NpYXRpb25NZXRhZGF0YSBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgYXNzb2NpYXRpb24uXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIHByb3BlcnR5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NvY2lhdGlvbih1aTVBc3NvY2lhdGlvbk1ldGFkYXRhOiBVSTVBc3NvY2lhdGlvbk1ldGFkYXRhKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+KSB7XG5cdFx0Y29uc3QgbWV0YWRhdGEgPSBlbnN1cmVNZXRhZGF0YSh0YXJnZXQpO1xuXHRcdGlmICghbWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSkge1xuXHRcdFx0bWV0YWRhdGEuYXNzb2NpYXRpb25zW3Byb3BlcnR5S2V5XSA9IHVpNUFzc29jaWF0aW9uTWV0YWRhdGE7XG5cdFx0fVxuXHRcdGRlbGV0ZSBwcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGU7XG5cdFx0ZGVsZXRlIChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplcjtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC47XG59XG5cbi8qKlxuICogRGVmaW5lcyBpbiB0aGUgbWV0YWRhdGEgdGhhdCB0aGlzIGNvbnRyb2wgaW1wbGVtZW50cyBhIHNwZWNpZmljIGludGVyZmFjZS5cbiAqXG4gKiBAcGFyYW0gaW50ZXJmYWNlTmFtZSBUaGUgbmFtZSBvZiB0aGUgaW1wbGVtZW50ZWQgaW50ZXJmYWNlXG4gKiBAcmV0dXJucyBUaGUgZGVjb3JhdGVkIG1ldGhvZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW1wbGVtZW50SW50ZXJmYWNlKGludGVyZmFjZU5hbWU6IHN0cmluZyk6IFByb3BlcnR5RGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wpIHtcblx0XHRjb25zdCBtZXRhZGF0YSA9IGVuc3VyZU1ldGFkYXRhKHRhcmdldCk7XG5cblx0XHRtZXRhZGF0YS5pbnRlcmZhY2VzLnB1c2goaW50ZXJmYWNlTmFtZSk7XG5cdH07XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoYXQgdGhlIGZvbGxvd2luZyBtZXRob2Qgc2hvdWxkIGFsc28gYmUgZXhwb3NlZCBzdGF0aWNhbGx5IHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gWE1MLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgbWV0aG9kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4bWxFdmVudEhhbmRsZXIoKTogTWV0aG9kRGVjb3JhdG9yIHtcblx0cmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQ6IFVJNUNvbnRyb2wsIHByb3BlcnR5a2V5KSB7XG5cdFx0Y29uc3QgY3VycmVudENvbnN0cnVjdG9yOiBVSTVBUElDb250cm9sID0gdGFyZ2V0LmNvbnN0cnVjdG9yIGFzIHVua25vd24gYXMgVUk1QVBJQ29udHJvbDtcblx0XHRjdXJyZW50Q29uc3RydWN0b3JbcHJvcGVydHlrZXkudG9TdHJpbmcoKV0gPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdGlmIChhcmdzICYmIGFyZ3MubGVuZ3RoKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnRUYXJnZXQgPSBjdXJyZW50Q29uc3RydWN0b3IuZ2V0QVBJKGFyZ3NbMF0gYXMgVUk1RXZlbnQpO1xuXHRcdFx0XHRjdXJyZW50VGFyZ2V0Py5bcHJvcGVydHlrZXkudG9TdHJpbmcoKV0oLi4uYXJncyk7XG5cdFx0XHR9XG5cdFx0fTtcblx0fTtcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZm9sbG93aW5nIGNsYXNzIHNob3VsZCBkZWZpbmUgYSBVSTUgY29udHJvbCBvZiB0aGUgc3BlY2lmaWVkIG5hbWUuXG4gKlxuICogQHBhcmFtIHNUYXJnZXQgVGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBtYWNybyBBUElcbiAqIEBwYXJhbSBtZXRhZGF0YURlZmluaXRpb24gSW5saW5lIG1ldGFkYXRhIGRlZmluaXRpb25cbiAqIEBjbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lVUk1Q2xhc3Moc1RhcmdldDogc3RyaW5nLCBtZXRhZGF0YURlZmluaXRpb24/OiBhbnkpOiBDbGFzc0RlY29yYXRvciB7XG5cdHJldHVybiBmdW5jdGlvbiAoY29uc3RydWN0b3I6IEZ1bmN0aW9uKSB7XG5cdFx0aWYgKCFjb25zdHJ1Y3Rvci5wcm90b3R5cGUubWV0YWRhdGEpIHtcblx0XHRcdGNvbnN0cnVjdG9yLnByb3RvdHlwZS5tZXRhZGF0YSA9IHt9O1xuXHRcdH1cblx0XHRpZiAobWV0YWRhdGFEZWZpbml0aW9uKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBtZXRhZGF0YURlZmluaXRpb24pIHtcblx0XHRcdFx0Y29uc3RydWN0b3IucHJvdG90eXBlLm1ldGFkYXRhW2tleV0gPSBtZXRhZGF0YURlZmluaXRpb25ba2V5IGFzIGtleW9mIFVJNUNvbnRyb2xNZXRhZGF0YURlZmluaXRpb25dO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVnaXN0ZXJVSTVNZXRhZGF0YShjb25zdHJ1Y3Rvciwgc1RhcmdldCwgY29uc3RydWN0b3IucHJvdG90eXBlKTtcblx0fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlZmVyZW5jZTxUPigpIHtcblx0cmV0dXJuIHtcblx0XHRjdXJyZW50OiB1bmRlZmluZWQgYXMgYW55IGFzIFQsXG5cdFx0c2V0Q3VycmVudDogZnVuY3Rpb24gKG9Db250cm9sSW5zdGFuY2U6IFQpOiB2b2lkIHtcblx0XHRcdHRoaXMuY3VycmVudCA9IG9Db250cm9sSW5zdGFuY2U7XG5cdFx0fVxuXHR9O1xufVxuLyoqXG4gKiBEZWZpbmVzIHRoYXQgdGhlIGZvbGxvd2luZyBvYmplY3Qgd2lsbCBob2xkIGEgcmVmZXJlbmNlIHRvIGEgY29udHJvbCB0aHJvdWdoIGpzeCB0ZW1wbGF0aW5nLlxuICpcbiAqIEByZXR1cm5zIFRoZSBkZWNvcmF0ZWQgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVSZWZlcmVuY2UoKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuXHRyZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogVUk1Q29udHJvbCwgcHJvcGVydHlLZXk6IHN0cmluZywgcHJvcGVydHlEZXNjcmlwdG9yOiBUeXBlZFByb3BlcnR5RGVzY3JpcHRvcjxhbnk+KSB7XG5cdFx0ZGVsZXRlIHByb3BlcnR5RGVzY3JpcHRvci53cml0YWJsZTtcblx0XHRkZWxldGUgKHByb3BlcnR5RGVzY3JpcHRvciBhcyBhbnkpLmluaXRpYWxpemVyO1xuXHRcdChwcm9wZXJ0eURlc2NyaXB0b3IgYXMgYW55KS5pbml0aWFsaXplciA9IGNyZWF0ZVJlZmVyZW5jZTtcblxuXHRcdHJldHVybiBwcm9wZXJ0eURlc2NyaXB0b3I7XG5cdH0gYXMgYW55OyAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGFuIGFjY2Vzc29yIGRlY29yYXRvciwgYnV0IHNvbWVob3cgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgbGlrZSBpdCBpZiBpIGRlY2xhcmUgaXQgYXMgc3VjaC47XG59XG5cbi8qKlxuICogSW50ZXJuYWwgaGVhdnkgbGlmdGluZyB0aGF0IHdpbGwgdGFrZSBjYXJlIG9mIGNyZWF0aW5nIHRoZSBjbGFzcyBwcm9wZXJ0eSBmb3IgdWk1IHRvIHVzZS5cbiAqXG4gKiBAcGFyYW0gY2xhenogVGhlIGNsYXNzIHByb3RvdHlwZVxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRvIGNyZWF0ZVxuICogQHBhcmFtIGluT2JqIFRoZSBtZXRhZGF0YSBvYmplY3RcbiAqIEByZXR1cm5zIFRoZSBtZXRhZGF0YSBjbGFzc1xuICovXG5mdW5jdGlvbiByZWdpc3RlclVJNU1ldGFkYXRhKGNsYXp6OiBhbnksIG5hbWU6IHN0cmluZywgaW5PYmo6IGFueSk6IGFueSB7XG5cdGlmIChjbGF6ei5nZXRNZXRhZGF0YSAmJiBjbGF6ei5nZXRNZXRhZGF0YSgpLmlzQShcInNhcC51aS5jb3JlLm12Yy5Db250cm9sbGVyRXh0ZW5zaW9uXCIpKSB7XG5cdFx0T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5PYmopLmZvckVhY2goKG9iak5hbWUpID0+IHtcblx0XHRcdGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGluT2JqLCBvYmpOYW1lKTtcblx0XHRcdGlmIChkZXNjcmlwdG9yICYmICFkZXNjcmlwdG9yLmVudW1lcmFibGUpIHtcblx0XHRcdFx0ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcblx0XHRcdFx0Ly9cdFx0TG9nLmVycm9yKGBQcm9wZXJ0eSAke29iak5hbWV9IGZyb20gJHtuYW1lfSBzaG91bGQgYmUgZGVjb3JhdGVkIGFzIHB1YmxpY2ApO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdGNvbnN0IG9iajogYW55ID0ge307XG5cdG9iai5tZXRhZGF0YSA9IGluT2JqLm1ldGFkYXRhIHx8IHt9O1xuXHRvYmoub3ZlcnJpZGUgPSBpbk9iai5vdmVycmlkZTtcblx0b2JqLmNvbnN0cnVjdG9yID0gY2xheno7XG5cdG9iai5tZXRhZGF0YS5iYXNlVHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihjbGF6ei5wcm90b3R5cGUpLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpO1xuXG5cdGlmIChjbGF6ej8uZ2V0TWV0YWRhdGEoKT8uZ2V0U3RlcmVvdHlwZSgpID09PSBcImNvbnRyb2xcIikge1xuXHRcdGNvbnN0IHJlbmRlcmVyRGVmaW5pdGlvbiA9IGluT2JqLnJlbmRlcmVyIHx8IGNsYXp6LnJlbmRlcmVyIHx8IGNsYXp6LnJlbmRlcjtcblx0XHRvYmoucmVuZGVyZXIgPSB7IGFwaVZlcnNpb246IDIgfTtcblx0XHRpZiAodHlwZW9mIHJlbmRlcmVyRGVmaW5pdGlvbiA9PT0gXCJmdW5jdGlvblwiKSB7XG5cdFx0XHRvYmoucmVuZGVyZXIucmVuZGVyID0gcmVuZGVyZXJEZWZpbml0aW9uO1xuXHRcdH0gZWxzZSBpZiAocmVuZGVyZXJEZWZpbml0aW9uICE9IHVuZGVmaW5lZCkge1xuXHRcdFx0b2JqLnJlbmRlcmVyID0gcmVuZGVyZXJEZWZpbml0aW9uO1xuXHRcdH1cblx0fVxuXHRvYmoubWV0YWRhdGEuaW50ZXJmYWNlcyA9IGluT2JqLm1ldGFkYXRhPy5pbnRlcmZhY2VzIHx8IGNsYXp6Lm1ldGFkYXRhPy5pbnRlcmZhY2VzO1xuXHRPYmplY3Qua2V5cyhjbGF6ei5wcm90b3R5cGUpLmZvckVhY2goKGtleSkgPT4ge1xuXHRcdGlmIChrZXkgIT09IFwibWV0YWRhdGFcIikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0b2JqW2tleV0gPSBjbGF6ei5wcm90b3R5cGVba2V5XTtcblx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xuXHRpZiAob2JqLm1ldGFkYXRhPy5jb250cm9sbGVyRXh0ZW5zaW9ucyAmJiBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEuY29udHJvbGxlckV4dGVuc2lvbnMpLmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKGNvbnN0IGNFeHROYW1lIGluIG9iai5tZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9ucykge1xuXHRcdFx0b2JqW2NFeHROYW1lXSA9IG9iai5tZXRhZGF0YS5jb250cm9sbGVyRXh0ZW5zaW9uc1tjRXh0TmFtZV07XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG91dHB1dCA9IGNsYXp6LmV4dGVuZChuYW1lLCBvYmopO1xuXHRjb25zdCBmbkluaXQgPSBvdXRwdXQucHJvdG90eXBlLmluaXQ7XG5cdG91dHB1dC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuXHRcdGlmIChmbkluaXQpIHtcblx0XHRcdGZuSW5pdC5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHR9XG5cdFx0dGhpcy5tZXRhZGF0YSA9IG9iai5tZXRhZGF0YTtcblxuXHRcdGlmIChvYmoubWV0YWRhdGEucHJvcGVydGllcykge1xuXHRcdFx0Y29uc3QgYVByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKG9iai5tZXRhZGF0YS5wcm9wZXJ0aWVzKTtcblx0XHRcdGFQcm9wZXJ0eUtleXMuZm9yRWFjaCgocHJvcGVydHlLZXkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIHByb3BlcnR5S2V5LCB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNldDogKHY6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0UHJvcGVydHkocHJvcGVydHlLZXksIHYpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eShwcm9wZXJ0eUtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdFx0Y29uc3QgYUFnZ3JlZ2F0aW9uS2V5cyA9IE9iamVjdC5rZXlzKG9iai5tZXRhZGF0YS5hZ2dyZWdhdGlvbnMpO1xuXHRcdFx0YUFnZ3JlZ2F0aW9uS2V5cy5mb3JFYWNoKChhZ2dyZWdhdGlvbktleSkgPT4ge1xuXHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgYWdncmVnYXRpb25LZXksIHtcblx0XHRcdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRcdFx0c2V0OiAodjogYW55KSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRBZ2dyZWdhdGlvbihhZ2dyZWdhdGlvbktleSwgdik7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXQ6ICgpID0+IHtcblx0XHRcdFx0XHRcdGNvbnN0IGFnZ3JlZ2F0aW9uQ29udGVudCA9IHRoaXMuZ2V0QWdncmVnYXRpb24oYWdncmVnYXRpb25LZXkpO1xuXHRcdFx0XHRcdFx0aWYgKG9iai5tZXRhZGF0YS5hZ2dyZWdhdGlvbnNbYWdncmVnYXRpb25LZXldLm11bHRpcGxlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBhZ2dyZWdhdGlvbkNvbnRlbnQgfHwgW107XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYWdncmVnYXRpb25Db250ZW50O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdGNvbnN0IGFBc3NvY2lhdGlvbktleXMgPSBPYmplY3Qua2V5cyhvYmoubWV0YWRhdGEuYXNzb2NpYXRpb25zKTtcblx0XHRcdGFBc3NvY2lhdGlvbktleXMuZm9yRWFjaCgoYXNzb2NpYXRpb25LZXkpID0+IHtcblx0XHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIGFzc29jaWF0aW9uS2V5LCB7XG5cdFx0XHRcdFx0Y29uZmlndXJhYmxlOiB0cnVlLFxuXHRcdFx0XHRcdHNldDogKHY6IGFueSkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0QXNzb2NpYXRpb24oYXNzb2NpYXRpb25LZXksIHYpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0OiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBhZ2dyZWdhdGlvbkNvbnRlbnQgPSB0aGlzLmdldEFzc29jaWF0aW9uKGFzc29jaWF0aW9uS2V5KTtcblx0XHRcdFx0XHRcdGlmIChvYmoubWV0YWRhdGEuYXNzb2NpYXRpb25zW2Fzc29jaWF0aW9uS2V5XS5tdWx0aXBsZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gYWdncmVnYXRpb25Db250ZW50IHx8IFtdO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGFnZ3JlZ2F0aW9uQ29udGVudDtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xuXHRjbGF6ei5vdmVycmlkZSA9IGZ1bmN0aW9uIChvRXh0ZW5zaW9uOiBhbnkpIHtcblx0XHRjb25zdCBwb2wgPSB7fTtcblx0XHQocG9sIGFzIGFueSkuY29uc3RydWN0b3IgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcblx0XHRcdHJldHVybiBjbGF6ei5hcHBseSh0aGlzLCBhcmdzIGFzIGFueSk7XG5cdFx0fTtcblx0XHRjb25zdCBvQ2xhc3MgPSAoTWV0YWRhdGEgYXMgYW55KS5jcmVhdGVDbGFzcyhjbGF6eiwgYGFub255bW91c0V4dGVuc2lvbn4ke3VpZCgpfWAsIHBvbCwgQ29udHJvbGxlck1ldGFkYXRhKTtcblx0XHRvQ2xhc3MuZ2V0TWV0YWRhdGEoKS5fc3RhdGljT3ZlcnJpZGUgPSBvRXh0ZW5zaW9uO1xuXHRcdG9DbGFzcy5nZXRNZXRhZGF0YSgpLl9vdmVycmlkZSA9IGNsYXp6LmdldE1ldGFkYXRhKCkuX292ZXJyaWRlO1xuXHRcdHJldHVybiBvQ2xhc3M7XG5cdH07XG5cblx0T2JqZWN0UGF0aC5zZXQobmFtZSwgb3V0cHV0KTtcblx0cmV0dXJuIG91dHB1dDtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7O0VBcUVBLElBQU1BLGNBQWMsR0FBRyxVQUFVQyxNQUFWLEVBQWlDO0lBQ3ZEQSxNQUFNLENBQUNDLFFBQVAsR0FBa0JDLEtBQUssQ0FDdEI7TUFDQ0Msb0JBQW9CLEVBQUUsRUFEdkI7TUFFQ0MsVUFB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
|
|
@@ -293,7 +293,7 @@ export function xmlEventHandler(): MethodDecorator {
|
|
|
293
293
|
currentConstructor[propertykey.toString()] = function (...args: any[]) {
|
|
294
294
|
if (args && args.length) {
|
|
295
295
|
const currentTarget = currentConstructor.getAPI(args[0] as UI5Event);
|
|
296
|
-
currentTarget[propertykey.toString()](...args);
|
|
296
|
+
currentTarget?.[propertykey.toString()](...args);
|
|
297
297
|
}
|
|
298
298
|
};
|
|
299
299
|
};
|
|
@@ -320,6 +320,29 @@ export function defineUI5Class(sTarget: string, metadataDefinition?: any): Class
|
|
|
320
320
|
};
|
|
321
321
|
}
|
|
322
322
|
|
|
323
|
+
export function createReference<T>() {
|
|
324
|
+
return {
|
|
325
|
+
current: undefined as any as T,
|
|
326
|
+
setCurrent: function (oControlInstance: T): void {
|
|
327
|
+
this.current = oControlInstance;
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Defines that the following object will hold a reference to a control through jsx templating.
|
|
333
|
+
*
|
|
334
|
+
* @returns The decorated property.
|
|
335
|
+
*/
|
|
336
|
+
export function defineReference(): PropertyDecorator {
|
|
337
|
+
return function (target: UI5Control, propertyKey: string, propertyDescriptor: TypedPropertyDescriptor<any>) {
|
|
338
|
+
delete propertyDescriptor.writable;
|
|
339
|
+
delete (propertyDescriptor as any).initializer;
|
|
340
|
+
(propertyDescriptor as any).initializer = createReference;
|
|
341
|
+
|
|
342
|
+
return propertyDescriptor;
|
|
343
|
+
} as any; // This is technically an accessor decorator, but somehow the compiler doesn't like it if i declare it as such.;
|
|
344
|
+
}
|
|
345
|
+
|
|
323
346
|
/**
|
|
324
347
|
* Internal heavy lifting that will take care of creating the class property for ui5 to use.
|
|
325
348
|
*
|
|
@@ -63,4 +63,4 @@ sap.ui.define(["sap/ui/base/BindingParser"], function (BindingParser) {
|
|
|
63
63
|
_exports.resolveDynamicExpression = resolveDynamicExpression;
|
|
64
64
|
return _exports;
|
|
65
65
|
}, false);
|
|
66
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRPYmplY3QiLCJvT2JqZWN0Iiwic1BhdGgiLCJzUGF0aFNwbGl0Iiwic3BsaXQiLCJsZW5ndGgiLCJzcGxpY2UiLCJqb2luIiwicmVzb2x2ZUR5bmFtaWNFeHByZXNzaW9uIiwic0Fubm90YXRpb25QYXRoIiwib01ldGFNb2RlbCIsImluZGV4T2YiLCJmaXJzdEJyYWNrZXQiLCJzU3RhYmxlQnJhY2tldCIsInN1YnN0ciIsInNSZXN0IiwibGFzdEJyYWNrZXQiLCJhVmFsdWUiLCJvRXhwcmVzc2lvbiIsIkJpbmRpbmdQYXJzZXIiLCJwYXJzZUV4cHJlc3Npb24iLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJwYXJ0cyIsInBhdGgiLCJpIiwiYkZvdW5kIiwib09iamVjdFZhbHVlIiwiYlJlc3VsdCIsImZvcm1hdHRlciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRHluYW1pY0Fubm90YXRpb25QYXRoSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCaW5kaW5nUGFyc2VyIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nUGFyc2VyXCI7XG5cbmZ1bmN0aW9uIGdldE9iamVjdChvT2JqZWN0OiBhbnksIHNQYXRoOiBhbnkpOiBhbnkge1xuXHRpZiAoIW9PYmplY3QpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXHRjb25zdCBzUGF0aFNwbGl0ID0gc1BhdGguc3BsaXQoXCIvXCIpO1xuXHRpZiAoc1BhdGhTcGxpdC5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gb09iamVjdFtzUGF0aF07XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGdldE9iamVjdChvT2JqZWN0W3NQYXRoU3BsaXRbMF1dLCBzUGF0aFNwbGl0LnNwbGljZSgxKS5qb2luKFwiL1wiKSk7XG5cdH1cbn1cbi8qKlxuICogUmVzb2x2ZSBhIGR5bmFtaWMgYW5ub3RhdGlvbiBwYXRoIGRvd24gdG8gYSBzdGFuZGFyZCBhbm5vdGF0aW9uIHBhdGguXG4gKlxuICogQHBhcmFtIHNBbm5vdGF0aW9uUGF0aFxuICogQHBhcmFtIG9NZXRhTW9kZWxcbiAqIEByZXR1cm5zIFRoZSBub24gZHluYW1pYyB2ZXJzaW9uIG9mIHRoZSBhbm5vdGF0aW9uIHBhdGhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVEeW5hbWljRXhwcmVzc2lvbihzQW5ub3RhdGlvblBhdGg6IGFueSwgb01ldGFNb2RlbDogYW55KSB7XG5cdGlmIChzQW5ub3RhdGlvblBhdGguaW5kZXhPZihcIltcIikgIT09IC0xKSB7XG5cdFx0Y29uc3QgZmlyc3RCcmFja2V0ID0gc0Fubm90YXRpb25QYXRoLmluZGV4T2YoXCJbXCIpO1xuXHRcdGNvbnN0IHNTdGFibGVCcmFja2V0ID0gc0Fubm90YXRpb25QYXRoLnN1YnN0cigwLCBmaXJzdEJyYWNrZXQpO1xuXHRcdGNvbnN0IHNSZXN0ID0gc0Fubm90YXRpb25QYXRoLnN1YnN0cihmaXJzdEJyYWNrZXQgKyAxKTtcblx0XHRjb25zdCBsYXN0QnJhY2tldCA9IHNSZXN0LmluZGV4T2YoXCJdXCIpO1xuXHRcdGNvbnN0IGFWYWx1ZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KHNTdGFibGVCcmFja2V0KTtcblx0XHRjb25zdCBvRXhwcmVzc2lvbiA9IEJpbmRpbmdQYXJzZXIucGFyc2VFeHByZXNzaW9uKHNSZXN0LnN1YnN0cigwLCBsYXN0QnJhY2tldCkpO1xuXHRcdGlmIChcblx0XHRcdEFycmF5LmlzQXJyYXkoYVZhbHVlKSAmJlxuXHRcdFx0b0V4cHJlc3Npb24gJiZcblx0XHRcdG9FeHByZXNzaW9uLnJlc3VsdCAmJlxuXHRcdFx0b0V4cHJlc3Npb24ucmVzdWx0LnBhcnRzICYmXG5cdFx0XHRvRXhwcmVzc2lvbi5yZXN1bHQucGFydHNbMF0gJiZcblx0XHRcdG9FeHByZXNzaW9uLnJlc3VsdC5wYXJ0c1swXS5wYXRoXG5cdFx0KSB7XG5cdFx0XHRsZXQgaTtcblx0XHRcdGxldCBiRm91bmQgPSBmYWxzZTtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBhVmFsdWUubGVuZ3RoICYmICFiRm91bmQ7IGkrKykge1xuXHRcdFx0XHRjb25zdCBvT2JqZWN0VmFsdWUgPSBnZXRPYmplY3QoYVZhbHVlW2ldLCBvRXhwcmVzc2lvbi5yZXN1bHQucGFydHNbMF0ucGF0aCk7XG5cdFx0XHRcdGNvbnN0IGJSZXN1bHQgPSBvRXhwcmVzc2lvbi5yZXN1bHQuZm9ybWF0dGVyKG9PYmplY3RWYWx1ZSk7XG5cdFx0XHRcdGlmIChiUmVzdWx0KSB7XG5cdFx0XHRcdFx0YkZvdW5kID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGJGb3VuZCkge1xuXHRcdFx0XHRzQW5ub3RhdGlvblBhdGggPSByZXNvbHZlRHluYW1pY0V4cHJlc3Npb24oc1N0YWJsZUJyYWNrZXQgKyAoaSAtIDEpICsgc1Jlc3Quc3Vic3RyKGxhc3RCcmFja2V0ICsgMSksIG9NZXRhTW9kZWwpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gc0Fubm90YXRpb25QYXRoO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7RUFFQSxTQUFTQSxTQUFULENBQW1CQyxPQUFuQixFQUFpQ0MsS0FBakMsRUFBa0Q7SUFDakQsSUFBSSxDQUFDRCxPQUFMLEVBQWM7TUFDYixPQUFPLElBQVA7SUFDQTs7SUFDRCxJQUFNRSxVQUFVLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLEdBQVosQ0FBbkI7O0lBQ0EsSUFBSUQsVUFBVSxDQUFDRSxNQUFYLEtBQXNCLENBQTFCLEVBQTZCO01BQzVCLE9BQU9KLE9BQU8sQ0FBQ0MsS0FBRCxDQUFkO0lBQ0EsQ0FGRCxNQUVPO01BQ04sT0FBT0YsU0FBUyxDQUFDQyxPQUFPLENBQUNFLFVBQVUsQ0FBQyxDQUFELENBQVgsQ0FBUixFQUF5QkEsVUFBVSxDQUFDRyxNQUFYLENBQWtCLENBQWxCLEVBQXFCQyxJQUFyQixDQUEwQixHQUExQixDQUF6QixDQUFoQjtJQUNBO0VBQ0Q7RUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0VBQ08sU0FBU0Msd0JBQVQsQ0FBa0NDLGVBQWxDLEVBQXdEQyxVQUF4RCxFQUF5RTtJQUMvRSxJQUFJRCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLEdBQXhCLE1BQWlDLENBQUMsQ0FBdEMsRUFBeUM7TUFDeEMsSUFBTUMsWUFBWSxHQUFHSCxlQUFlLENBQUNFLE9BQWhCLENBQXdCLEdBQXhCLENBQXJCO01BQ0EsSUFBTUUsY0FBYyxHQUFHSixlQUFlLENBQUNLLE1BQWhCLENBQXVCLENBQXZCLEVBQTBCRixZQUExQixDQUF2QjtNQUNBLElBQU1HLEtBQUssR0FBR04sZUFBZSxDQUFDSyxNQUFoQixDQUF1QkYsWUFBWSxHQUFHLENBQXRDLENBQWQ7TUFDQSxJQUFNSSxXQUFXLEdBQUdELEtBQUssQ0FBQ0osT0FBTixDQUFjLEdBQWQsQ0FBcEI7TUFDQSxJQUFNTSxNQUFNLEdBQUdQLFVBQVUsQ0FBQ1YsU0FBWCxDQUFxQmEsY0FBckIsQ0FBZjtNQUNBLElBQU1LLFdBQVcsR0FBR0MsYUFBYSxDQUFDQyxlQUFkLENBQThCTCxLQUFLLENBQUNELE1BQU4sQ0FBYSxDQUFiLEVBQWdCRSxXQUFoQixDQUE5QixDQUFwQjs7TUFDQSxJQUNDSyxLQUFLLENBQUNDLE9BQU4sQ0FBY0wsTUFBZCxLQUNBQyxXQURBLElBRUFBLFdBQVcsQ0FBQ0ssTUFGWixJQUdBTCxXQUFXLENBQUNLLE1BQVosQ0FBbUJDLEtBSG5CLElBSUFOLFdBQVcsQ0FBQ0ssTUFBWixDQUFtQkMsS0FBbkIsQ0FBeUIsQ0FBekIsQ0FKQSxJQUtBTixXQUFXLENBQUNLLE1BQVosQ0FBbUJDLEtBQW5CLENBQXlCLENBQXpCLEVBQTRCQyxJQU43QixFQU9FO1FBQ0QsSUFBSUMsQ0FBSjtRQUNBLElBQUlDLE1BQU0sR0FBRyxLQUFiOztRQUNBLEtBQUtELENBQUMsR0FBRyxDQUFULEVBQVlBLENBQUMsR0FBR1QsTUFBTSxDQUFDWixNQUFYLElBQXFCLENBQUNzQixNQUFsQyxFQUEwQ0QsQ0FBQyxFQUEzQyxFQUErQztVQUM5QyxJQUFNRSxZQUFZLEdBQUc1QixTQUFTLENBQUNpQixNQUFNLENBQUNTLENBQUQsQ0FBUCxFQUFZUixXQUFXLENBQUNLLE1BQVosQ0FBbUJDLEtBQW5CLENBQXlCLENBQXpCLEVBQTRCQyxJQUF4QyxDQUE5QjtVQUNBLElBQU1JLE9BQU8sR0FBR1gsV0FBVyxDQUFDSyxNQUFaLENBQW1CTyxTQUFuQixDQUE2QkYsWUFBN0IsQ0FBaEI7O1VBQ0EsSUFBSUMsT0FBSixFQUFhO1lBQ1pGLE1BQU0sR0FBRyxJQUFUO1VBQ0E7UUFDRDs7UUFDRCxJQUFJQSxNQUFKLEVBQVk7VUFDWGxCLGVBQWUsR0FBR0Qsd0JBQXdCLENBQUNLLGNBQWMsSUFBSWEsQ0FBQyxHQUFHLENBQVIsQ0FBZCxHQUEyQlgsS0FBSyxDQUFDRCxNQUFOLENBQWFFLFdBQVcsR0FBRyxDQUEzQixDQUE1QixFQUEyRE4sVUFBM0QsQ0FBMUM7UUFDQTtNQUNEO0lBQ0Q7O0lBQ0QsT0FBT0QsZUFBUDtFQUNBIn0=
|
|
@@ -80,4 +80,4 @@ sap.ui.define([], function () {
|
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
82
|
}, false);
|
|
83
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJlbnVtRWRpdFN0YXRlIiwiQ0xFQU4iLCJQUk9DRVNTRUQiLCJESVJUWSIsImN1cnJlbnRFZGl0U3RhdGUiLCJzZXRFZGl0U3RhdGVEaXJ0eSIsInNldEVkaXRTdGF0ZVByb2Nlc3NlZCIsInJlc2V0RWRpdFN0YXRlIiwiaXNFZGl0U3RhdGVEaXJ0eSIsImNsZWFuUHJvY2Vzc2VkRWRpdFN0YXRlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFZGl0U3RhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZW51bUVkaXRTdGF0ZSA9IHtcblx0Q0xFQU46IDAsXG5cdFBST0NFU1NFRDogMSxcblx0RElSVFk6IDJcbn07XG5sZXQgY3VycmVudEVkaXRTdGF0ZSA9IGVudW1FZGl0U3RhdGUuQ0xFQU47XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0LyoqXG5cdCAqIFRoaXMgc2V0cyB0aGUgZWRpdCBzdGF0ZSBhcyBkaXJ0eSwgbWVhbmluZyBiaW5kaW5ncyBoYXZlIHRvIGJlIHJlZnJlc2hlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlI3NldEVkaXRTdGF0ZURpcnR5XG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5oZWxwZXJzLkVkaXRTdGF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRzZXRFZGl0U3RhdGVEaXJ0eTogZnVuY3Rpb24gKCkge1xuXHRcdGN1cnJlbnRFZGl0U3RhdGUgPSBlbnVtRWRpdFN0YXRlLkRJUlRZO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBUaGlzIHNldHMgdGhlIGVkaXQgc3RhdGUgYXMgcHJvY2Vzc2VkLCBtZWFuaW5nIGlzIGNhbiBiZSByZXNldCB0byBjbGVhbiBhZnRlciBhbGwgYmluZGluZ3MgYXJlIHJlZnJlc2hlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlI3NldEVkaXRTdGF0ZVByb2Nlc3NlZFxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0c2V0RWRpdFN0YXRlUHJvY2Vzc2VkOiBmdW5jdGlvbiAoKSB7XG5cdFx0Y3VycmVudEVkaXRTdGF0ZSA9IGVudW1FZGl0U3RhdGUuUFJPQ0VTU0VEO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXNldHMgdGhlIGVkaXQgc3RhdGUgdG8gdGhlIGluaXRpYWwgc3RhdGUuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBzYXAuZmUuY29yZS5oZWxwZXJzLkVkaXRTdGF0ZSNyZXNldEVkaXRTdGF0ZVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0cmVzZXRFZGl0U3RhdGU6IGZ1bmN0aW9uICgpIHtcblx0XHRjdXJyZW50RWRpdFN0YXRlID0gZW51bUVkaXRTdGF0ZS5DTEVBTjtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyB0cnVlIGlmIHRoZSBlZGl0IHN0YXRlIGlzIG5vdCBjbGVhbiwgbWVhbmluZyBiaW5kaW5ncyBoYXZlIHRvIGJlIHJlZnJlc2hlZFxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGUjaXNFZGl0U3RhdGVEaXJ0eVxuXHQgKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuaGVscGVycy5FZGl0U3RhdGVcblx0ICogQHVpNS1yZXN0cmljdGVkXG5cdCAqIEBmaW5hbFxuXHQgKi9cblxuXHRpc0VkaXRTdGF0ZURpcnR5OiBmdW5jdGlvbiAoKSB7XG5cdFx0cmV0dXJuIGN1cnJlbnRFZGl0U3RhdGUgIT09IGVudW1FZGl0U3RhdGUuQ0xFQU47XG5cdH0sXG5cblx0LyoqXG5cdCAqIENsZWFucyB0aGUgZWRpdCBzdGF0ZSBpZiBpdCBoYXMgYmVlbiBwcm9jZXNzZWQsIGkuZS4gYmluZGluZ3MgaGF2ZSBiZWVuIHByb3Blcmx5IHJlZnJlc2hlZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIHNhcC5mZS5jb3JlLmhlbHBlcnMuRWRpdFN0YXRlI2NsZWFuUHJvY2Vzc2VkRWRpdFN0YXRlXG5cdCAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5oZWxwZXJzLkVkaXRTdGF0ZVxuXHQgKiBAdWk1LXJlc3RyaWN0ZWRcblx0ICogQGZpbmFsXG5cdCAqL1xuXHRjbGVhblByb2Nlc3NlZEVkaXRTdGF0ZTogZnVuY3Rpb24gKCkge1xuXHRcdGlmIChjdXJyZW50RWRpdFN0YXRlID09PSBlbnVtRWRpdFN0YXRlLlBST0NFU1NFRCkge1xuXHRcdFx0Y3VycmVudEVkaXRTdGF0ZSA9IGVudW1FZGl0U3RhdGUuQ0xFQU47XG5cdFx0fVxuXHR9XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7O0VBQUEsSUFBTUEsYUFBYSxHQUFHO0lBQ3JCQyxLQUFLLEVBQUUsQ0FEYztJQUVyQkMsU0FBUyxFQUFFLENBRlU7SUFHckJDLEtBQUssRUFBRTtFQUhjLENBQXRCO0VBS0EsSUFBSUMsZ0JBQWdCLEdBQUdKLGFBQWEsQ0FBQ0MsS0FBckM7U0FFZTtJQUNkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDSSxpQkFBaUIsRUFBRSxZQUFZO01BQzlCRCxnQkFBZ0IsR0FBR0osYUFBYSxDQUFDRyxLQUFqQztJQUNBLENBWmE7O0lBY2Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NHLHFCQUFxQixFQUFFLFlBQVk7TUFDbENGLGdCQUFnQixHQUFHSixhQUFhLENBQUNFLFNBQWpDO0lBQ0EsQ0F6QmE7O0lBMkJkO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDSyxjQUFjLEVBQUUsWUFBWTtNQUMzQkgsZ0JBQWdCLEdBQUdKLGFBQWEsQ0FBQ0MsS0FBakM7SUFDQSxDQXRDYTs7SUF3Q2Q7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBRUNPLGdCQUFnQixFQUFFLFlBQVk7TUFDN0IsT0FBT0osZ0JBQWdCLEtBQUtKLGFBQWEsQ0FBQ0MsS0FBMUM7SUFDQSxDQXBEYTs7SUFzRGQ7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0NRLHVCQUF1QixFQUFFLFlBQVk7TUFDcEMsSUFBSUwsZ0JBQWdCLEtBQUtKLGFBQWEsQ0FBQ0UsU0FBdkMsRUFBa0Q7UUFDakRFLGdCQUFnQixHQUFHSixhQUFhLENBQUNDLEtBQWpDO01BQ0E7SUFDRDtFQW5FYSxDIn0=
|
|
@@ -61,4 +61,4 @@ sap.ui.define(["sap/ui/core/format/DateFormat"], function (DateFormat) {
|
|
|
61
61
|
};
|
|
62
62
|
return ExcelFormatHelper;
|
|
63
63
|
}, false);
|
|
64
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeGNlbEZvcm1hdEhlbHBlciIsImdldEV4Y2VsRGF0ZWZyb21KU0RhdGUiLCJzSlNEYXRlRm9ybWF0IiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsIm9Gb3JtYXRPcHRpb25zIiwicGF0dGVybiIsInRvTG93ZXJDYXNlIiwicmVnZXgiLCJleGVjIiwicmVwbGFjZSIsImdldEV4Y2VsRGF0ZVRpbWVmcm9tSlNEYXRlVGltZSIsInNKU0RhdGVUaW1lRm9ybWF0IiwiZ2V0RGF0ZVRpbWVJbnN0YW5jZSIsInJlZ2V4WWVhciIsImluY2x1ZGVzIiwiZ2V0RXhjZWxUaW1lZnJvbUpTVGltZSIsInNKU1RpbWVGb3JtYXQiLCJnZXRUaW1lSW5zdGFuY2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkV4Y2VsRm9ybWF0SGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEYXRlRm9ybWF0IGZyb20gXCJzYXAvdWkvY29yZS9mb3JtYXQvRGF0ZUZvcm1hdFwiO1xuXG5jb25zdCBFeGNlbEZvcm1hdEhlbHBlciA9IHtcblx0LyoqXG5cdCAqIE1ldGhvZCBmb3IgY29udmVydGluZyBKUyBEYXRlIGZvcm1hdCB0byBFeGNlbCBjdXN0b20gZGF0ZSBmb3JtYXQuXG5cdCAqXG5cdCAqIEByZXR1cm5zIEZvcm1hdCBmb3IgdGhlIERhdGUgY29sdW1uIHRvIGJlIHVzZWQgb24gZXhjZWwuXG5cdCAqL1xuXHRnZXRFeGNlbERhdGVmcm9tSlNEYXRlOiBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gR2V0IGRhdGUgRm9ybWF0KHBhdHRlcm4pLCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIGRhdGUgZm9ybWF0IG1hcHBpbmcgYmV0d2VlbiBzYXB1aTUgYW5kIGV4Y2VsLlxuXHRcdC8vIFVJNV9BTllcblx0XHRsZXQgc0pTRGF0ZUZvcm1hdCA9IChEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZSgpIGFzIGFueSkub0Zvcm1hdE9wdGlvbnMucGF0dGVybi50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmIChzSlNEYXRlRm9ybWF0KSB7XG5cdFx0XHQvLyBDaGVja2luZyBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBzaW5nbGUgJ3knIGluIHRoZSBwYXR0ZXJuLlxuXHRcdFx0Y29uc3QgcmVnZXggPSAvXlteeV0qeVteeV0qJC9tO1xuXHRcdFx0aWYgKHJlZ2V4LmV4ZWMoc0pTRGF0ZUZvcm1hdCkpIHtcblx0XHRcdFx0c0pTRGF0ZUZvcm1hdCA9IHNKU0RhdGVGb3JtYXQucmVwbGFjZShcInlcIiwgXCJ5eXl5XCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc0pTRGF0ZUZvcm1hdDtcblx0fSxcblx0Z2V0RXhjZWxEYXRlVGltZWZyb21KU0RhdGVUaW1lOiBmdW5jdGlvbiAoKSB7XG5cdFx0Ly8gR2V0IGRhdGUgRm9ybWF0KHBhdHRlcm4pLCB3aGljaCB3aWxsIGJlIHVzZWQgZm9yIGRhdGUgdGltZSBmb3JtYXQgbWFwcGluZyBiZXR3ZWVuIHNhcHVpNSBhbmQgZXhjZWwuXG5cdFx0Ly8gVUk1X0FOWVxuXHRcdGxldCBzSlNEYXRlVGltZUZvcm1hdCA9IChEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoKSBhcyBhbnkpLm9Gb3JtYXRPcHRpb25zLnBhdHRlcm4udG9Mb3dlckNhc2UoKTtcblx0XHRpZiAoc0pTRGF0ZVRpbWVGb3JtYXQpIHtcblx0XHRcdC8vIENoZWNraW5nIGZvciB0aGUgZXhpc3RlbmNlIG9mIHNpbmdsZSAneScgaW4gdGhlIHBhdHRlcm4uXG5cdFx0XHRjb25zdCByZWdleFllYXIgPSAvXlteeV0qeVteeV0qJC9tO1xuXHRcdFx0aWYgKHJlZ2V4WWVhci5leGVjKHNKU0RhdGVUaW1lRm9ybWF0KSkge1xuXHRcdFx0XHRzSlNEYXRlVGltZUZvcm1hdCA9IHNKU0RhdGVUaW1lRm9ybWF0LnJlcGxhY2UoXCJ5XCIsIFwieXl5eVwiKTtcblx0XHRcdH1cblx0XHRcdGlmIChzSlNEYXRlVGltZUZvcm1hdC5pbmNsdWRlcyhcImFcIikpIHtcblx0XHRcdFx0c0pTRGF0ZVRpbWVGb3JtYXQgPSBzSlNEYXRlVGltZUZvcm1hdC5yZXBsYWNlKFwiYVwiLCBcIkFNL1BNXCIpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc0pTRGF0ZVRpbWVGb3JtYXQ7XG5cdH0sXG5cdGdldEV4Y2VsVGltZWZyb21KU1RpbWU6IGZ1bmN0aW9uICgpIHtcblx0XHQvLyBHZXQgZGF0ZSBGb3JtYXQocGF0dGVybiksIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgZGF0ZSB0aW1lIGZvcm1hdCBtYXBwaW5nIGJldHdlZW4gc2FwdWk1IGFuZCBleGNlbC5cblx0XHQvLyBVSTVfQU5ZXG5cdFx0bGV0IHNKU1RpbWVGb3JtYXQgPSAoRGF0ZUZvcm1hdC5nZXRUaW1lSW5zdGFuY2UoKSBhcyBhbnkpLm9Gb3JtYXRPcHRpb25zLnBhdHRlcm47XG5cdFx0aWYgKHNKU1RpbWVGb3JtYXQgJiYgc0pTVGltZUZvcm1hdC5pbmNsdWRlcyhcImFcIikpIHtcblx0XHRcdHNKU1RpbWVGb3JtYXQgPSBzSlNUaW1lRm9ybWF0LnJlcGxhY2UoXCJhXCIsIFwiQU0vUE1cIik7XG5cdFx0fVxuXHRcdHJldHVybiBzSlNUaW1lRm9ybWF0O1xuXHR9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlbEZvcm1hdEhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQUVBLElBQU1BLGlCQUFpQixHQUFHO0lBQ3pCO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7SUFDQ0Msc0JBQXNCLEVBQUUsWUFBWTtNQUNuQztNQUNBO01BQ0EsSUFBSUMsYUFBYSxHQUFJQyxVQUFVLENBQUNDLGVBQVgsRUFBRCxDQUFzQ0MsY0FBdEMsQ0FBcURDLE9BQXJELENBQTZEQyxXQUE3RCxFQUFwQjs7TUFDQSxJQUFJTCxhQUFKLEVBQW1CO1FBQ2xCO1FBQ0EsSUFBTU0sS0FBSyxHQUFHLGdCQUFkOztRQUNBLElBQUlBLEtBQUssQ0FBQ0MsSUFBTixDQUFXUCxhQUFYLENBQUosRUFBK0I7VUFDOUJBLGFBQWEsR0FBR0EsYUFBYSxDQUFDUSxPQUFkLENBQXNCLEdBQXRCLEVBQTJCLE1BQTNCLENBQWhCO1FBQ0E7TUFDRDs7TUFDRCxPQUFPUixhQUFQO0lBQ0EsQ0FsQndCO0lBbUJ6QlMsOEJBQThCLEVBQUUsWUFBWTtNQUMzQztNQUNBO01BQ0EsSUFBSUMsaUJBQWlCLEdBQUlULFVBQVUsQ0FBQ1UsbUJBQVgsRUFBRCxDQUEwQ1IsY0FBMUMsQ0FBeURDLE9BQXpELENBQWlFQyxXQUFqRSxFQUF4Qjs7TUFDQSxJQUFJSyxpQkFBSixFQUF1QjtRQUN0QjtRQUNBLElBQU1FLFNBQVMsR0FBRyxnQkFBbEI7O1FBQ0EsSUFBSUEsU0FBUyxDQUFDTCxJQUFWLENBQWVHLGlCQUFmLENBQUosRUFBdUM7VUFDdENBLGlCQUFpQixHQUFHQSxpQkFBaUIsQ0FBQ0YsT0FBbEIsQ0FBMEIsR0FBMUIsRUFBK0IsTUFBL0IsQ0FBcEI7UUFDQTs7UUFDRCxJQUFJRSxpQkFBaUIsQ0FBQ0csUUFBbEIsQ0FBMkIsR0FBM0IsQ0FBSixFQUFxQztVQUNwQ0gsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDRixPQUFsQixDQUEwQixHQUExQixFQUErQixPQUEvQixDQUFwQjtRQUNBO01BQ0Q7O01BQ0QsT0FBT0UsaUJBQVA7SUFDQSxDQWxDd0I7SUFtQ3pCSSxzQkFBc0IsRUFBRSxZQUFZO01BQ25DO01BQ0E7TUFDQSxJQUFJQyxhQUFhLEdBQUlkLFVBQVUsQ0FBQ2UsZUFBWCxFQUFELENBQXNDYixjQUF0QyxDQUFxREMsT0FBekU7O01BQ0EsSUFBSVcsYUFBYSxJQUFJQSxhQUFhLENBQUNGLFFBQWQsQ0FBdUIsR0FBdkIsQ0FBckIsRUFBa0Q7UUFDakRFLGFBQWEsR0FBR0EsYUFBYSxDQUFDUCxPQUFkLENBQXNCLEdBQXRCLEVBQTJCLE9BQTNCLENBQWhCO01BQ0E7O01BQ0QsT0FBT08sYUFBUDtJQUNBO0VBM0N3QixDQUExQjtTQThDZWpCLGlCIn0=
|
|
@@ -57,4 +57,4 @@ sap.ui.define(["sap/base/util/ObjectPath", "sap/fe/core/CommonUtils"], function
|
|
|
57
57
|
};
|
|
58
58
|
return FPMHelper;
|
|
59
59
|
}, false);
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGUE1IZWxwZXIiLCJhY3Rpb25XcmFwcGVyIiwib0V2ZW50Iiwic01vZHVsZSIsInNNZXRob2QiLCJvUGFyYW1ldGVycyIsIlByb21pc2UiLCJyZXNvbHZlIiwib1NvdXJjZSIsImdldFNvdXJjZSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3Iiwib0JpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJvRXh0ZW5zaW9uQVBJIiwiYVNlbGVjdGVkQ29udGV4dHMiLCJ1bmRlZmluZWQiLCJjb250ZXh0cyIsImdldENvbnRyb2xsZXJOYW1lIiwiZ2V0Q29udHJvbGxlciIsImdldEV4dGVuc2lvbkFQSSIsInN0YXJ0c1dpdGgiLCJmblRhcmdldCIsIk9iamVjdFBhdGgiLCJnZXQiLCJyZXBsYWNlIiwic3Vic3RyIiwic2FwIiwidWkiLCJyZXF1aXJlIiwibW9kdWxlIiwiYmluZCIsInZhbGlkYXRpb25XcmFwcGVyIiwib1ZhbGlkYXRpb25Db250ZXh0cyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRlBNSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBPYmplY3RQYXRoIGZyb20gXCJzYXAvYmFzZS91dGlsL09iamVjdFBhdGhcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIEV4dGVuc2lvbkFQSSBmcm9tIFwic2FwL2ZlL2NvcmUvRXh0ZW5zaW9uQVBJXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuXG5jb25zdCBGUE1IZWxwZXIgPSB7XG5cdGFjdGlvbldyYXBwZXI6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc01vZHVsZTogYW55LCBzTWV0aG9kOiBhbnksIG9QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHQvL1RoZSBzb3VyY2Ugd291bGQgYmUgY29tbWFuZCBleGVjdXRpb24sIGluIGNhc2UgYSBjb21tYW5kIGlzIGRlZmluZWQgZm9yIHRoZSBhY3Rpb24gaW4gdGhlIG1hbmlmZXN0LlxuXHRcdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UgPyBvRXZlbnQuZ2V0U291cmNlKCkgOiBvRXZlbnQub1NvdXJjZSxcblx0XHRcdFx0b1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2UpLFxuXHRcdFx0XHRvQmluZGluZ0NvbnRleHQgPSBvU291cmNlLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0XHRsZXQgb0V4dGVuc2lvbkFQSTogRXh0ZW5zaW9uQVBJIHwgdW5kZWZpbmVkO1xuXHRcdFx0bGV0IGFTZWxlY3RlZENvbnRleHRzOiBDb250ZXh0W107XG5cblx0XHRcdGlmIChvUGFyYW1ldGVycyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gb1BhcmFtZXRlcnMuY29udGV4dHMgfHwgW107XG5cdFx0XHR9IGVsc2UgaWYgKG9CaW5kaW5nQ29udGV4dCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGFTZWxlY3RlZENvbnRleHRzID0gW29CaW5kaW5nQ29udGV4dF07XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhU2VsZWN0ZWRDb250ZXh0cyA9IFtdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLk9iamVjdFBhZ2VDb250cm9sbGVyXCIgfHxcblx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlck5hbWUoKSA9PT0gXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXJcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdG9FeHRlbnNpb25BUEkgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzTW9kdWxlLnN0YXJ0c1dpdGgoXCIvZXh0ZW5zaW9uL1wiKSkge1xuXHRcdFx0XHRjb25zdCBmblRhcmdldCA9IE9iamVjdFBhdGguZ2V0KHNNb2R1bGUucmVwbGFjZSgvXFwvL2csIFwiLlwiKS5zdWJzdHIoMSksIG9FeHRlbnNpb25BUEkpO1xuXHRcdFx0XHRyZXNvbHZlKGZuVGFyZ2V0W3NNZXRob2RdKG9CaW5kaW5nQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNhcC51aS5yZXF1aXJlKFtzTW9kdWxlXSwgZnVuY3Rpb24gKG1vZHVsZTogYW55KSB7XG5cdFx0XHRcdFx0Ly8gLSB3ZSBiaW5kIHRoZSBhY3Rpb24gdG8gdGhlIGV4dGVuc2lvbkFQSSBvZiB0aGUgY29udHJvbGxlciBzbyBpdCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBjdXN0b20gc2VjdGlvblxuXHRcdFx0XHRcdC8vIC0gd2UgcHJvdmlkZSB0aGUgY29udGV4dCBhcyBBUEksIG1heWJlIGlmIG5lZWRlZCBmdXJ0aGVyIHByb3BlcnRpZXNcblx0XHRcdFx0XHRyZXNvbHZlKG1vZHVsZVtzTWV0aG9kXS5iaW5kKG9FeHRlbnNpb25BUEkpKG9CaW5kaW5nQ29udGV4dCwgYVNlbGVjdGVkQ29udGV4dHMpKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH0sXG5cdHZhbGlkYXRpb25XcmFwcGVyOiBmdW5jdGlvbiAoc01vZHVsZTogYW55LCBzTWV0aG9kOiBhbnksIG9WYWxpZGF0aW9uQ29udGV4dHM6IGFueSwgb1ZpZXc6IGFueSwgb0JpbmRpbmdDb250ZXh0OiBhbnkpIHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmU6ICh2YWx1ZTogYW55KSA9PiB2b2lkKSB7XG5cdFx0XHRsZXQgb0V4dGVuc2lvbkFQSTogRXh0ZW5zaW9uQVBJO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9WaWV3LmdldENvbnRyb2xsZXJOYW1lKCkgPT09IFwic2FwLmZlLnRlbXBsYXRlcy5PYmplY3RQYWdlLk9iamVjdFBhZ2VDb250cm9sbGVyXCIgfHxcblx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlck5hbWUoKSA9PT0gXCJzYXAuZmUudGVtcGxhdGVzLkxpc3RSZXBvcnQuTGlzdFJlcG9ydENvbnRyb2xsZXJcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdG9FeHRlbnNpb25BUEkgPSBvVmlldy5nZXRDb250cm9sbGVyKCkuZ2V0RXh0ZW5zaW9uQVBJKCk7XG5cdFx0XHR9XG5cblx0XHRcdHNhcC51aS5yZXF1aXJlKFtzTW9kdWxlXSwgZnVuY3Rpb24gKG1vZHVsZTogYW55KSB7XG5cdFx0XHRcdC8vIC0gd2UgYmluZCB0aGUgYWN0aW9uIHRvIHRoZSBleHRlbnNpb25BUEkgb2YgdGhlIGNvbnRyb2xsZXIgc28gaXQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgY3VzdG9tIHNlY3Rpb25cblx0XHRcdFx0Ly8gLSB3ZSBwcm92aWRlIHRoZSBjb250ZXh0IGFzIEFQSSwgbWF5YmUgaWYgbmVlZGVkIGZ1cnRoZXIgcHJvcGVydGllc1xuXHRcdFx0XHRyZXNvbHZlKG1vZHVsZVtzTWV0aG9kXS5iaW5kKG9FeHRlbnNpb25BUEkpKG9CaW5kaW5nQ29udGV4dCwgb1ZhbGlkYXRpb25Db250ZXh0cykpO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZQTUhlbHBlcjtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7OztFQUtBLElBQU1BLFNBQVMsR0FBRztJQUNqQkMsYUFBYSxFQUFFLFVBQVVDLE1BQVYsRUFBdUJDLE9BQXZCLEVBQXFDQyxPQUFyQyxFQUFtREMsV0FBbkQsRUFBcUU7TUFDbkYsT0FBTyxJQUFJQyxPQUFKLENBQVksVUFBVUMsT0FBVixFQUF5QztRQUMzRDtRQUNBLElBQU1DLE9BQU8sR0FBR04sTUFBTSxDQUFDTyxTQUFQLEdBQW1CUCxNQUFNLENBQUNPLFNBQVAsRUFBbkIsR0FBd0NQLE1BQU0sQ0FBQ00sT0FBL0Q7UUFBQSxJQUNDRSxLQUFLLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBWixDQUEwQkosT0FBMUIsQ0FEVDtRQUFBLElBRUNLLGVBQWUsR0FBR0wsT0FBTyxDQUFDTSxpQkFBUixFQUZuQjtRQUdBLElBQUlDLGFBQUo7UUFDQSxJQUFJQyxpQkFBSjs7UUFFQSxJQUFJWCxXQUFXLEtBQUtZLFNBQXBCLEVBQStCO1VBQzlCRCxpQkFBaUIsR0FBR1gsV0FBVyxDQUFDYSxRQUFaLElBQXdCLEVBQTVDO1FBQ0EsQ0FGRCxNQUVPLElBQUlMLGVBQWUsS0FBS0ksU0FBeEIsRUFBbUM7VUFDekNELGlCQUFpQixHQUFHLENBQUNILGVBQUQsQ0FBcEI7UUFDQSxDQUZNLE1BRUE7VUFDTkcsaUJBQWlCLEdBQUcsRUFBcEI7UUFDQTs7UUFFRCxJQUNDTixLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO1VBQ0RKLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtRQUNBOztRQUVELElBQUlsQixPQUFPLENBQUNtQixVQUFSLENBQW1CLGFBQW5CLENBQUosRUFBdUM7VUFDdEMsSUFBTUMsUUFBUSxHQUFHQyxVQUFVLENBQUNDLEdBQVgsQ0FBZXRCLE9BQU8sQ0FBQ3VCLE9BQVIsQ0FBZ0IsS0FBaEIsRUFBdUIsR0FBdkIsRUFBNEJDLE1BQTVCLENBQW1DLENBQW5DLENBQWYsRUFBc0RaLGFBQXRELENBQWpCO1VBQ0FSLE9BQU8sQ0FBQ2dCLFFBQVEsQ0FBQ25CLE9BQUQsQ0FBUixDQUFrQlMsZUFBbEIsRUFBbUNHLGlCQUFuQyxDQUFELENBQVA7UUFDQSxDQUhELE1BR087VUFDTlksR0FBRyxDQUFDQyxFQUFKLENBQU9DLE9BQVAsQ0FBZSxDQUFDM0IsT0FBRCxDQUFmLEVBQTBCLFVBQVU0QixNQUFWLEVBQXVCO1lBQ2hEO1lBQ0E7WUFDQXhCLE9BQU8sQ0FBQ3dCLE1BQU0sQ0FBQzNCLE9BQUQsQ0FBTixDQUFnQjRCLElBQWhCLENBQXFCakIsYUFBckIsRUFBb0NGLGVBQXBDLEVBQXFERyxpQkFBckQsQ0FBRCxDQUFQO1VBQ0EsQ0FKRDtRQUtBO01BQ0QsQ0FqQ00sQ0FBUDtJQWtDQSxDQXBDZ0I7SUFxQ2pCaUIsaUJBQWlCLEVBQUUsVUFBVTlCLE9BQVYsRUFBd0JDLE9BQXhCLEVBQXNDOEIsbUJBQXRDLEVBQWdFeEIsS0FBaEUsRUFBNEVHLGVBQTVFLEVBQWtHO01BQ3BILE9BQU8sSUFBSVAsT0FBSixDQUFZLFVBQVVDLE9BQVYsRUFBeUM7UUFDM0QsSUFBSVEsYUFBSjs7UUFFQSxJQUNDTCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUE5QixJQUNBVCxLQUFLLENBQUNTLGlCQUFOLE9BQThCLGtEQUYvQixFQUdFO1VBQ0RKLGFBQWEsR0FBR0wsS0FBSyxDQUFDVSxhQUFOLEdBQXNCQyxlQUF0QixFQUFoQjtRQUNBOztRQUVETyxHQUFHLENBQUNDLEVBQUosQ0FBT0MsT0FBUCxDQUFlLENBQUMzQixPQUFELENBQWYsRUFBMEIsVUFBVTRCLE1BQVYsRUFBdUI7VUFDaEQ7VUFDQTtVQUNBeEIsT0FBTyxDQUFDd0IsTUFBTSxDQUFDM0IsT0FBRCxDQUFOLENBQWdCNEIsSUFBaEIsQ0FBcUJqQixhQUFyQixFQUFvQ0YsZUFBcEMsRUFBcURxQixtQkFBckQsQ0FBRCxDQUFQO1FBQ0EsQ0FKRDtNQUtBLENBZk0sQ0FBUDtJQWdCQTtFQXREZ0IsQ0FBbEI7U0F5RGVsQyxTIn0=
|