@sapui5/sap.fe.core 1.124.2 → 1.126.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +5 -1
- package/src/sap/fe/core/ActionRuntime.js +2 -2
- package/src/sap/fe/core/ActionRuntime.ts +4 -4
- package/src/sap/fe/core/AppComponent.js +2 -2
- package/src/sap/fe/core/AppComponent.ts +1 -1
- package/src/sap/fe/core/AppStateHandler.js +2 -2
- package/src/sap/fe/core/AppStateHandler.ts +1 -1
- package/src/sap/fe/core/BaseController.js +2 -2
- package/src/sap/fe/core/BaseController.ts +1 -1
- package/src/sap/fe/core/CommonUtils.js +3 -3
- package/src/sap/fe/core/CommonUtils.ts +12 -15
- package/src/sap/fe/core/ExtensionAPI.js +2 -2
- package/src/sap/fe/core/ExtensionAPI.ts +4 -3
- package/src/sap/fe/core/PageController.js +2 -2
- package/src/sap/fe/core/PageController.ts +1 -1
- package/src/sap/fe/core/ResourceModel.js +2 -2
- package/src/sap/fe/core/ResourceModel.ts +1 -1
- package/src/sap/fe/core/ReuseComponent.js +172 -0
- package/src/sap/fe/core/ReuseComponent.ts +165 -0
- package/src/sap/fe/core/TemplateComponent.js +2 -2
- package/src/sap/fe/core/TemplateComponent.ts +5 -1
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.js +92 -6
- package/src/sap/fe/core/buildingBlocks/BuildingBlockBase.ts +90 -10
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +30 -3
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +28 -4
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +10 -16
- package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +19 -16
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.js +3 -3
- package/src/sap/fe/core/buildingBlocks/templating/RuntimeBuildingBlockFragment.ts +5 -5
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +2 -2
- package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +1 -1
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +17 -5
- package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +14 -6
- package/src/sap/fe/core/controllerextensions/ContextSharing.js +2 -2
- package/src/sap/fe/core/controllerextensions/ContextSharing.ts +1 -1
- package/src/sap/fe/core/controllerextensions/EditFlow.js +57 -43
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +61 -46
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +2 -2
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +8 -11
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +8 -16
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +10 -7
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +5 -5
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +22 -18
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +28 -23
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +4 -4
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +4 -1
- package/src/sap/fe/core/controllerextensions/PageReady.js +21 -15
- package/src/sap/fe/core/controllerextensions/PageReady.ts +29 -20
- package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
- package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
- package/src/sap/fe/core/controllerextensions/Placeholder.js +12 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +15 -1
- package/src/sap/fe/core/controllerextensions/Recommendations.js +26 -8
- package/src/sap/fe/core/controllerextensions/Recommendations.ts +29 -3
- package/src/sap/fe/core/controllerextensions/Routing.js +5 -7
- package/src/sap/fe/core/controllerextensions/Routing.ts +4 -4
- package/src/sap/fe/core/controllerextensions/Share.js +4 -4
- package/src/sap/fe/core/controllerextensions/Share.ts +10 -6
- package/src/sap/fe/core/controllerextensions/SideEffects.js +20 -5
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +22 -2
- package/src/sap/fe/core/controllerextensions/Telemetry.js +2 -2
- package/src/sap/fe/core/controllerextensions/Telemetry.ts +1 -1
- package/src/sap/fe/core/controllerextensions/ViewState.js +79 -81
- package/src/sap/fe/core/controllerextensions/ViewState.ts +117 -105
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.js +3 -3
- package/src/sap/fe/core/controllerextensions/cards/CollaborationManager.ts +1 -1
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/controllerextensions/collaboration/CollaborationCommon.ts +2 -2
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.js +17 -8
- package/src/sap/fe/core/controllerextensions/dialog/OperationsDialog.block.tsx +8 -2
- package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +10 -9
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +15 -10
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +1 -1
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.js +130 -158
- package/src/sap/fe/core/controllerextensions/editFlow/operations/facade.ts +240 -275
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +2 -2
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +1 -1
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +46 -28
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +60 -32
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +2 -2
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +1 -1
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.js +2 -2
- package/src/sap/fe/core/controllerextensions/viewState/IViewStateContributor.ts +27 -3
- package/src/sap/fe/core/controls/CommandExecution.js +2 -2
- package/src/sap/fe/core/controls/CommandExecution.ts +2 -2
- package/src/sap/fe/core/controls/ComponentLoader.js +3 -3
- package/src/sap/fe/core/controls/ComponentLoader.ts +2 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.js +3 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.block.tsx +2 -2
- package/src/sap/fe/core/controls/EventDelegateHook.js +2 -2
- package/src/sap/fe/core/controls/EventDelegateHook.ts +2 -2
- package/src/sap/fe/core/controls/FormElementWrapper.js +51 -6
- package/src/sap/fe/core/controls/FormElementWrapper.ts +43 -2
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.js +3 -3
- package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.block.tsx +3 -3
- package/src/sap/fe/core/converters/ConverterContext.js +4 -2
- package/src/sap/fe/core/converters/ConverterContext.ts +5 -2
- package/src/sap/fe/core/converters/ManifestSettings.js +8 -2
- package/src/sap/fe/core/converters/ManifestSettings.ts +25 -3
- package/src/sap/fe/core/converters/ManifestWrapper.js +12 -3
- package/src/sap/fe/core/converters/ManifestWrapper.ts +11 -1
- package/src/sap/fe/core/converters/MetaModelConverter.js +7 -6
- package/src/sap/fe/core/converters/MetaModelConverter.ts +6 -2
- package/src/sap/fe/core/converters/annotations/DataField.js +56 -16
- package/src/sap/fe/core/converters/annotations/DataField.ts +74 -25
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +19 -18
- package/src/sap/fe/core/converters/controls/Common/Action.js +5 -5
- package/src/sap/fe/core/converters/controls/Common/Action.ts +14 -14
- package/src/sap/fe/core/converters/controls/Common/Chart.js +40 -7
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +56 -20
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +8 -11
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +23 -27
- package/src/sap/fe/core/converters/controls/Common/Form.js +10 -3
- package/src/sap/fe/core/converters/controls/Common/Form.ts +13 -4
- package/src/sap/fe/core/converters/controls/Common/KPI.js +3 -2
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +6 -2
- package/src/sap/fe/core/converters/controls/Common/Table.js +137 -48
- package/src/sap/fe/core/converters/controls/Common/Table.ts +174 -52
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +73 -21
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +91 -20
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +4 -4
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +2 -2
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +3 -3
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +17 -16
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +18 -17
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.js +2 -2
- package/src/sap/fe/core/converters/helpers/InsightsHelpers.ts +1 -1
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +9 -9
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +12 -12
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +13 -7
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -5
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +9 -73
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +4 -74
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +5 -10
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +3 -12
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +4 -7
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FiscalFormat.js +5 -3
- package/src/sap/fe/core/formatters/FiscalFormat.ts +4 -2
- package/src/sap/fe/core/formatters/StandardFormatter.js +2 -2
- package/src/sap/fe/core/formatters/StandardFormatter.ts +3 -3
- package/src/sap/fe/core/fpm/Component.js +3 -3
- package/src/sap/fe/core/fpm/Component.ts +3 -3
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.js +2 -2
- package/src/sap/fe/core/helpers/AdaptiveCardExpressionCompiler.ts +1 -1
- package/src/sap/fe/core/helpers/BindingHelper.js +2 -2
- package/src/sap/fe/core/helpers/BindingHelper.ts +2 -2
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.js +2 -2
- package/src/sap/fe/core/helpers/BindingToolkitEvaluator.ts +2 -2
- package/src/sap/fe/core/helpers/DeleteHelper.js +7 -4
- package/src/sap/fe/core/helpers/DeleteHelper.ts +9 -3
- package/src/sap/fe/core/helpers/MetaModelFunction.js +5 -5
- package/src/sap/fe/core/helpers/MetaModelFunction.ts +2 -2
- package/src/sap/fe/core/helpers/MetaPath.js +9 -3
- package/src/sap/fe/core/helpers/MetaPath.ts +8 -2
- package/src/sap/fe/core/helpers/ModelHelper.js +149 -3
- package/src/sap/fe/core/helpers/ModelHelper.ts +202 -6
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.js +3 -3
- package/src/sap/fe/core/helpers/StandardRecommendationHelper.ts +2 -2
- package/src/sap/fe/core/helpers/TitleHelper.js +4 -4
- package/src/sap/fe/core/helpers/TitleHelper.ts +4 -4
- package/src/sap/fe/core/library.js +4 -4
- package/src/sap/fe/core/library.ts +2 -1
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +11 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +10 -2
- package/src/sap/fe/core/messagebundle.properties +8 -57
- package/src/sap/fe/core/messagebundle_ar.properties +2 -0
- package/src/sap/fe/core/messagebundle_bg.properties +2 -0
- package/src/sap/fe/core/messagebundle_ca.properties +2 -0
- package/src/sap/fe/core/messagebundle_cnr.properties +2 -0
- package/src/sap/fe/core/messagebundle_cs.properties +2 -0
- package/src/sap/fe/core/messagebundle_cy.properties +4 -2
- package/src/sap/fe/core/messagebundle_da.properties +2 -0
- package/src/sap/fe/core/messagebundle_de.properties +2 -0
- package/src/sap/fe/core/messagebundle_el.properties +2 -0
- package/src/sap/fe/core/messagebundle_en.properties +6 -57
- package/src/sap/fe/core/messagebundle_en_GB.properties +2 -0
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +3 -36
- package/src/sap/fe/core/messagebundle_es.properties +2 -0
- package/src/sap/fe/core/messagebundle_es_MX.properties +2 -0
- package/src/sap/fe/core/messagebundle_et.properties +2 -0
- package/src/sap/fe/core/messagebundle_fi.properties +2 -0
- package/src/sap/fe/core/messagebundle_fr.properties +2 -0
- package/src/sap/fe/core/messagebundle_fr_CA.properties +3 -1
- package/src/sap/fe/core/messagebundle_hi.properties +2 -0
- package/src/sap/fe/core/messagebundle_hr.properties +2 -0
- package/src/sap/fe/core/messagebundle_hu.properties +3 -1
- package/src/sap/fe/core/messagebundle_id.properties +2 -0
- package/src/sap/fe/core/messagebundle_it.properties +2 -0
- package/src/sap/fe/core/messagebundle_iw.properties +3 -1
- package/src/sap/fe/core/messagebundle_ja.properties +2 -0
- package/src/sap/fe/core/messagebundle_kk.properties +2 -0
- package/src/sap/fe/core/messagebundle_ko.properties +2 -0
- package/src/sap/fe/core/messagebundle_lt.properties +2 -0
- package/src/sap/fe/core/messagebundle_lv.properties +2 -0
- package/src/sap/fe/core/messagebundle_mk.properties +2 -0
- package/src/sap/fe/core/messagebundle_ms.properties +2 -0
- package/src/sap/fe/core/messagebundle_nl.properties +2 -0
- package/src/sap/fe/core/messagebundle_no.properties +2 -0
- package/src/sap/fe/core/messagebundle_pl.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt.properties +2 -0
- package/src/sap/fe/core/messagebundle_pt_PT.properties +2 -0
- package/src/sap/fe/core/messagebundle_ro.properties +2 -0
- package/src/sap/fe/core/messagebundle_ru.properties +2 -0
- package/src/sap/fe/core/messagebundle_sh.properties +64 -62
- package/src/sap/fe/core/messagebundle_sk.properties +2 -0
- package/src/sap/fe/core/messagebundle_sl.properties +2 -0
- package/src/sap/fe/core/messagebundle_sr.properties +2 -0
- package/src/sap/fe/core/messagebundle_sv.properties +2 -0
- package/src/sap/fe/core/messagebundle_th.properties +2 -0
- package/src/sap/fe/core/messagebundle_tr.properties +2 -0
- package/src/sap/fe/core/messagebundle_uk.properties +3 -1
- package/src/sap/fe/core/messagebundle_vi.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_CN.properties +2 -0
- package/src/sap/fe/core/messagebundle_zh_TW.properties +2 -0
- package/src/sap/fe/core/operationsHelper.js +3 -3
- package/src/sap/fe/core/operationsHelper.ts +2 -2
- package/src/sap/fe/core/rootView/Fcl.controller.js +3 -3
- package/src/sap/fe/core/rootView/Fcl.controller.ts +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.js +2 -2
- package/src/sap/fe/core/rootView/NavContainer.controller.ts +1 -1
- package/src/sap/fe/core/rootView/RootViewBaseController.js +114 -92
- package/src/sap/fe/core/rootView/RootViewBaseController.ts +120 -106
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CollaborativeToolsServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/NavigationServiceFactory.js +6 -4
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +4 -3
- package/src/sap/fe/core/services/RoutingServiceFactory.js +2 -2
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.js +1 -1
- package/src/sap/fe/core/services/ShellServicesFactory.ts +12 -2
- package/src/sap/fe/core/services/TelemetryServiceFactory.js +8 -2
- package/src/sap/fe/core/services/TelemetryServiceFactory.ts +7 -1
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +16 -9
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +22 -11
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ValueHelpHistoryServiceFactory.ts +1 -1
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +2 -2
- package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
- package/src/sap/fe/core/templating/ActionHelper.js +2 -2
- package/src/sap/fe/core/templating/ActionHelper.ts +2 -2
- package/src/sap/fe/core/templating/CommonFormatters.js +2 -2
- package/src/sap/fe/core/templating/CommonFormatters.ts +3 -3
- package/src/sap/fe/core/templating/CriticalityFormatters.js +2 -2
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataFieldFormatters.js +4 -4
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.js +2 -2
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +2 -2
- package/src/sap/fe/core/templating/EntityTypeHelper.js +2 -2
- package/src/sap/fe/core/templating/EntityTypeHelper.ts +2 -2
- package/src/sap/fe/core/templating/FieldControlHelper.js +2 -2
- package/src/sap/fe/core/templating/FieldControlHelper.ts +2 -2
- package/src/sap/fe/core/templating/SemanticObjectHelper.js +2 -2
- package/src/sap/fe/core/templating/SemanticObjectHelper.ts +2 -2
- package/src/sap/fe/core/templating/UIFormatters.js +7 -7
- package/src/sap/fe/core/templating/UIFormatters.ts +6 -6
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +2 -2
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +1 -1
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +1 -1
- package/src/sap/fe/core/type/FiscalDate.js +2 -2
- package/src/sap/fe/core/type/FiscalDate.ts +1 -1
- package/src/sap/fe/core/type/InputMask.js +124 -0
- package/src/sap/fe/core/type/InputMask.ts +131 -0
- package/ui5.yaml +19 -0
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.js +0 -81
- package/src/sap/fe/core/controllerextensions/editFlow/operations/_internal.ts +0 -117
- package/src/sap/fe/core/helpers/AnnotationEnum.js +0 -33
- package/src/sap/fe/core/helpers/AnnotationEnum.ts +0 -21
- package/src/sap/fe/core/helpers/BindingToolkit.js +0 -1813
- package/src/sap/fe/core/helpers/BindingToolkit.ts +0 -2450
- package/src/sap/fe/core/helpers/ClassSupport.js +0 -584
- package/src/sap/fe/core/helpers/ClassSupport.ts +0 -697
- package/src/sap/fe/core/jsx-runtime/Fragment.js +0 -14
- package/src/sap/fe/core/jsx-runtime/Fragment.ts +0 -3
- package/src/sap/fe/core/jsx-runtime/ViewLoader.js +0 -93
- package/src/sap/fe/core/jsx-runtime/ViewLoader.tsx +0 -86
- package/src/sap/fe/core/jsx-runtime/jsx-control.js +0 -177
- package/src/sap/fe/core/jsx-runtime/jsx-control.ts +0 -197
- package/src/sap/fe/core/jsx-runtime/jsx-xml.js +0 -237
- package/src/sap/fe/core/jsx-runtime/jsx-xml.ts +0 -246
- package/src/sap/fe/core/jsx-runtime/jsx.js +0 -47
- package/src/sap/fe/core/jsx-runtime/jsx.ts +0 -71
- package/src/sap/fe/core/jsx-runtime/jsxs.js +0 -10
- package/src/sap/fe/core/jsx-runtime/jsxs.ts +0 -3
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.js +0 -172
- package/src/sap/fe/core/jsx-runtime/useMDXComponents.tsx +0 -194
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "sap/fe/core/helpers/TypeGuards"], function (BindingToolkit, TypeGuards) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -589,4 +589,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "sap/fe/core/helpers/TypeGu
|
|
|
589
589
|
};
|
|
590
590
|
return _exports;
|
|
591
591
|
}, false);
|
|
592
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRSZWxhdGl2ZVBhdGhzIiwiY29udGV4dFBhdGgiLCJza2lwQ2xlYW51cCIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJ2aXNpdGVkTmF2UHJvcHMiLCJjbGVhblVwTmF2UHJvcCIsIm5hdlByb3BzIiwiY3VycmVudElkeCIsImxlbmd0aCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsImlzTmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsInNwbGljZSIsImdldEFkZGl0aW9uYWxOYXZQcm9wIiwicmVmZXJlbmNlUHJvcHMiLCJvdGhlclByb3BzIiwia2VlcFJlZmVyZW5jZSIsImFkZGl0aW9uYWxOYXZQcm9wcyIsImZvckVhY2giLCJuYXZQcm9wIiwibmF2SW5kZXgiLCJwdXNoIiwicmVtYWluaW5nTmF2UHJvcHMiLCJjb25jYXQiLCJzbGljZSIsImV4dHJhTmF2UHJvcCIsInRhcmdldFR5cGUiLCJmaW5kIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicHJvcGVydHlQYXRoIiwic1Byb3BlcnR5UGF0aCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwicGF0aCIsInRhcmdldCIsIiR0YXJnZXQiLCJjb250YWluc0FDb21wbGV4VHlwZSIsImNvbnZlcnRlZFR5cGVzIiwicmVzb2x2ZVBhdGgiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJ0YXJnZXRFbnRpdHlUeXBlIiwicGF0aFNwbGl0cyIsInNwbGl0IiwibmV3RGF0YU1vZGVsT2JqZWN0UGF0aCIsInBhdGhQYXJ0IiwiZW5oYW5jZUZyb21QYXRoIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RW50aXR5U2V0IiwibmF2aWdhdGlvbkluZGV4IiwicmVmZXJlbmNlRW50aXR5VHlwZSIsImlzRW50aXR5VHlwZSIsImlzQ29tcGxleFR5cGUiLCJjdXJyZW50RW50aXR5U2V0IiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25QYXRoRnJvbVByZXZpb3VzRW50aXR5U2V0IiwiZ2V0TmF2aWdhdGlvbkJpbmRpbmdGcm9tUHJldmlvdXNFbnRpdHlTZXQiLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJwb3RlbnRpYWxDb21wbGV4VHlwZSIsImVudGl0eVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiX3R5cGUiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRpb24iLCJ1bmRlZmluZWQiLCJuYXZpZ2F0aW9uUHJvcGVydHlMZW5ndGgiLCJsYXN0TmF2aWdhdGlvbiIsImlzQ29tcGxleFR5cGVMYXN0TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25QYXRoIiwiaSIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsImdldFRhcmdldEVudGl0eVNldFBhdGgiLCJpbml0aWFsUGF0aCIsInRhcmdldEVudGl0eVNldFBhdGgiLCJyZXBsYWNlIiwiYlJlbGF0aXZlIiwic2V0VHJhaWxpbmdTbGFzaCIsImpvaW4iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaXNTZXJ2aWNlT2JqZWN0IiwiaXNFbnRpdHlTZXQiLCJpc1Byb3BlcnR5IiwiaXNBbm5vdGF0aW9uVGVybSIsInRlcm0iLCJxdWFsaWZpZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZm9yQmluZGluZ0V4cHJlc3Npb24iLCJmb3JGaWx0ZXJDb25kaXRpb25QYXRoIiwiX2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJuYXZQcm9wZXJ0aWVzIiwic29tZSIsImlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkiLCJpc0NvbGxlY3Rpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCJ2YWx1ZSIsImdldENvbnRleHRQcm9wZXJ0eVJlc3RyaWN0aW9uIiwiY2hlY2tGdW5jdGlvbiIsIm9uQ29udGV4dCIsInNvdXJjZSIsImxhc3ROYXZQcm9wIiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImdldEhpZXJhcmNoeVBhcmVudE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJoaWVyYXJjaHlRdWFsaWZpZXIiLCJBZ2dyZWdhdGlvbiIsIlBhcmVudE5hdmlnYXRpb25Qcm9wZXJ0eSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldE5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMiLCJOb25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsIm5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJpc1BhdGhTZWFyY2hhYmxlIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwiU2VhcmNoYWJsZSIsImlzUGF0aERlbGV0YWJsZSIsIkRlbGV0ZVJlc3RyaWN0aW9ucyIsIkRlbGV0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJJbnNlcnRSZXN0cmljdGlvbnMiLCJJbnNlcnRhYmxlIiwiaXNQYXRoRmlsdGVyYWJsZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluY2x1ZGVzIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwidG9TdHJpbmciLCJnZXRUYXJnZXRFbnRpdHlTZXRJbmZvIiwicmVzZXRWaXNpdGVkTmF2UHJvcHMiLCJ2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZSIsInBhcmVudEVudGl0eVNldCIsInBhcmVudE5hdmlnYXRpb25QYXRoIiwiY29udGFpbnNUYXJnZXQiLCJjaGVja09uUGFyZW50TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25Qcm9wcyIsInJlc3RyaWN0aW9ucyIsInJlc3RyaWN0ZWROYXZQcm9wIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwiTmF2aWdhdGlvblByb3BlcnR5IiwicmVzdHJpY3Rpb25EZWZpbml0aW9uIiwidmFsdWVPZiIsImlzQ29uc3RhbnQiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJjb25zdGFudCIsIl9uYXZpZ2F0aW9uUHJvcHMiLCJwYXRoUmVsYXRpdmVMb2NhdGlvbiIsInBhdGhWaXNpdG9yRnVuY3Rpb24iLCJwYXRoVmlzaXRvciIsImdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uIiwiZXF1YWwiLCJjaGVja09uVGFyZ2V0IiwidGFyZ2V0UmVzdHJpY3Rpb25zIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsInVucmVzb2x2YWJsZUV4cHJlc3Npb24iLCJlbmRzV2l0aCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YU1vZGVsUGF0aEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG5cdENvbXBsZXhUeXBlLFxuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFByb3BlcnR5LFxuXHRQcm9wZXJ0eVBhdGgsXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNpbmdsZXRvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdFNpbmdsZXRvbkFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc19FZG1cIjtcbmltcG9ydCB0eXBlIHsgUGFnZUNvbnRleHRQYXRoVGFyZ2V0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvVGVtcGxhdGVDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbnN0YW50LCBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpc0NvbnN0YW50LCB1bnJlc29sdmFibGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7XG5cdGlzQW5ub3RhdGlvblRlcm0sXG5cdGlzQ29tcGxleFR5cGUsXG5cdGlzRW50aXR5U2V0LFxuXHRpc0VudGl0eVR5cGUsXG5cdGlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHksXG5cdGlzTmF2aWdhdGlvblByb3BlcnR5LFxuXHRpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbixcblx0aXNQcm9wZXJ0eSxcblx0aXNQcm9wZXJ0eVBhdGhFeHByZXNzaW9uLFxuXHRpc1NlcnZpY2VPYmplY3Rcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eU9yUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbE9iamVjdENvbnRleHQgPSB7XG5cdHN0YXJ0aW5nRW50aXR5U2V0OiBTaW5nbGV0b24gfCBFbnRpdHlTZXQ7XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW107XG5cdHRhcmdldEVudGl0eVNldD86IFNpbmdsZXRvbiB8IEVudGl0eVNldDtcblx0dGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZTtcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsT2JqZWN0UGF0aDxUPiA9IERhdGFNb2RlbE9iamVjdENvbnRleHQgJiB7XG5cdGNvbnRleHRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdENvbnRleHQ7XG5cdHRhcmdldE9iamVjdD86IFQ7XG59O1xuXG50eXBlIEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoID0ge1xuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT47XG5cdHBhdGhWaXNpdG9yPzogRnVuY3Rpb247XG5cdGlnbm9yZVRhcmdldENvbGxlY3Rpb24/OiBib29sZWFuO1xuXHRhdXRob3JpemVVbnJlc29sdmFibGU/OiBib29sZWFuO1xufTtcblxuLyoqXG4gKiBGdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIHByb3BlcnR5IGZyb20gdGhlIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKlxuICogQHBhcmFtIGNvbnRleHRQYXRoIFRoZSBEYXRhTW9kZWxPYmplY3RQYXRoIG9iamVjdCB0byB0aGUgcHJvcGVydHlcbiAqIEBwYXJhbSBza2lwQ2xlYW51cCBEb24ndCBjbGVhbiB1cCBjaXJjdWxhciBuYXZpZ2F0aW9uIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIFRoZSBwYXRoIGZyb20gdGhlIHJvb3QgZW50aXR5IHNldFxuICovXG5leHBvcnQgY29uc3QgZ2V0UmVsYXRpdmVQYXRocyA9IGZ1bmN0aW9uIChjb250ZXh0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IHVuZGVmaW5lZCwgc2tpcENsZWFudXA/OiBib29sZWFuKTogc3RyaW5nW10ge1xuXHRyZXR1cm4gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oY29udGV4dFBhdGg/LmNvbnRleHRMb2NhdGlvbiwgY29udGV4dFBhdGg/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzLCBza2lwQ2xlYW51cCkubWFwKChucCkgPT4gbnAubmFtZSk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdmlnYXRpb24gcHJvcGVydGllcyBmcm9tIGEgZGF0YU1vZGVsT2JqZWN0UGF0aCB0byB0aGUgdGFyZ2V0ZWQgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIHZpc2l0ZWROYXZQcm9wcyBUaGUgdGFyZ2V0ZWQgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0gc2tpcENsZWFudXAgRG9uJ3QgY2xlYW4gdXAgY2lyY3VsYXIgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgdG8gcmVhY2ggdGhlIHRhcmdldGVkIG5hdmlnYXRpb24gcHJvcGVydGllc1xuICovXG5leHBvcnQgY29uc3QgZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24gPSBmdW5jdGlvbiAoXG5cdGNvbnRleHRQYXRoPzogRGF0YU1vZGVsT2JqZWN0Q29udGV4dCxcblx0dmlzaXRlZE5hdlByb3BzOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10gPSBbXSxcblx0c2tpcENsZWFudXAgPSBmYWxzZVxuKTogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdIHtcblx0Y29uc3QgY2xlYW5VcE5hdlByb3AgPSAobmF2UHJvcHM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSk6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSA9PiB7XG5cdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdHdoaWxlIChuYXZQcm9wcy5sZW5ndGggPiAxICYmIGN1cnJlbnRJZHggIT0gbmF2UHJvcHMubGVuZ3RoIC0gMSkge1xuXHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IG5hdlByb3BzW2N1cnJlbnRJZHhdO1xuXHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSBuYXZQcm9wc1tjdXJyZW50SWR4ICsgMV07XG5cdFx0XHRpZiAoaXNOYXZpZ2F0aW9uUHJvcGVydHkoY3VycmVudE5hdikgJiYgY3VycmVudE5hdi5wYXJ0bmVyID09PSBuZXh0TmF2UHJvcC5uYW1lKSB7XG5cdFx0XHRcdG5hdlByb3BzLnNwbGljZSgwLCAyKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGN1cnJlbnRJZHgrKztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG5hdlByb3BzO1xuXHR9O1xuXG5cdGNvbnN0IGdldEFkZGl0aW9uYWxOYXZQcm9wID0gKFxuXHRcdHJlZmVyZW5jZVByb3BzOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10sXG5cdFx0b3RoZXJQcm9wczogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdLFxuXHRcdGtlZXBSZWZlcmVuY2U6IGJvb2xlYW5cblx0KTogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdID0+IHtcblx0XHRjb25zdCBhZGRpdGlvbmFsTmF2UHJvcHM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSA9IFtdO1xuXHRcdHJlZmVyZW5jZVByb3BzLmZvckVhY2goKG5hdlByb3AsIG5hdkluZGV4KSA9PiB7XG5cdFx0XHRpZiAob3RoZXJQcm9wc1tuYXZJbmRleF0gIT09IG5hdlByb3ApIHtcblx0XHRcdFx0YWRkaXRpb25hbE5hdlByb3BzLnB1c2goa2VlcFJlZmVyZW5jZSA/IG5hdlByb3AgOiBvdGhlclByb3BzW25hdkluZGV4XSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGFkZGl0aW9uYWxOYXZQcm9wcztcblx0fTtcblxuXHRpZiAoIWNvbnRleHRQYXRoKSB7XG5cdFx0cmV0dXJuIHZpc2l0ZWROYXZQcm9wcztcblx0fVxuXHRpZiAodmlzaXRlZE5hdlByb3BzLmxlbmd0aCA+PSBjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRsZXQgcmVtYWluaW5nTmF2UHJvcHMgPSBnZXRBZGRpdGlvbmFsTmF2UHJvcChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcywgdmlzaXRlZE5hdlByb3BzLCBmYWxzZSk7XG5cdFx0cmVtYWluaW5nTmF2UHJvcHMgPSByZW1haW5pbmdOYXZQcm9wcy5jb25jYXQodmlzaXRlZE5hdlByb3BzLnNsaWNlKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkpO1xuXHRcdHJldHVybiBza2lwQ2xlYW51cCA/IHJlbWFpbmluZ05hdlByb3BzIDogY2xlYW5VcE5hdlByb3AocmVtYWluaW5nTmF2UHJvcHMpO1xuXHR9XG5cdGxldCBleHRyYU5hdlByb3AgPSBnZXRBZGRpdGlvbmFsTmF2UHJvcCh2aXNpdGVkTmF2UHJvcHMsIGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLCB0cnVlKTtcblx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLmNvbmNhdChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoKSk7XG5cdGlmICghc2tpcENsZWFudXApIHtcblx0XHRjbGVhblVwTmF2UHJvcChleHRyYU5hdlByb3ApO1xuXHR9XG5cdGV4dHJhTmF2UHJvcCA9IGV4dHJhTmF2UHJvcC5tYXAoKG5hdlByb3ApID0+IHtcblx0XHRyZXR1cm4gaXNOYXZpZ2F0aW9uUHJvcGVydHkobmF2UHJvcClcblx0XHRcdD8gKG5hdlByb3AudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChucCkgPT4gbnAubmFtZSA9PT0gbmF2UHJvcC5wYXJ0bmVyKSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpXG5cdFx0XHQ6IG5hdlByb3A7XG5cdH0pO1xuXHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xufTtcblxuLyoqXG4gKiBHZXRzIGEgbmV3IGVuaGFuY2VkIGRhdGFNb2RlbE9iamVjdFBhdGggbWF0Y2hpbmcgd2l0aCB0aGUgcHJvdmlkZWQgcHJvcGVydHkuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGluaXRpYWwgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIHByb3BlcnR5UGF0aCBUaGUgcHJvcGVydHkgcGF0aCBvciBwcm9wZXJ0eSB0byByZWFjaFxuICogQHJldHVybnMgQSBuZXcgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICovXG5leHBvcnQgY29uc3QgZW5oYW5jZURhdGFNb2RlbFBhdGggPSBmdW5jdGlvbiA8VD4oXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4gfCBEYXRhTW9kZWxPYmplY3RDb250ZXh0LFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT5cbik6IERhdGFNb2RlbE9iamVjdFBhdGg8VD4ge1xuXHRsZXQgc1Byb3BlcnR5UGF0aCA9IFwiXCI7XG5cdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aC5wYXRoO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBwcm9wZXJ0eVBhdGggPT09IFwic3RyaW5nXCIpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoO1xuXHR9XG5cdGxldCB0YXJnZXQ7XG5cdGlmIChpc1BhdGhBbm5vdGF0aW9uRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSB7XG5cdFx0dGFyZ2V0ID0gcHJvcGVydHlQYXRoLiR0YXJnZXQ7XG5cdH0gZWxzZSBpZiAoY29udGFpbnNBQ29tcGxleFR5cGUoZGF0YU1vZGVsT2JqZWN0UGF0aCkpIHtcblx0XHR0YXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnZlcnRlZFR5cGVzLnJlc29sdmVQYXRoKGAke2dldFRhcmdldE5hdmlnYXRpb25QYXRoKGRhdGFNb2RlbE9iamVjdFBhdGgpfS8ke3NQcm9wZXJ0eVBhdGh9YCk/LnRhcmdldDtcblx0fSBlbHNlIHtcblx0XHRpZiAoc1Byb3BlcnR5UGF0aC5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Ly8gcmVtb3ZlIHRoZSBsZWFkaW5nIFwiL1wiIGJlY2F1c2UgdGhlIHBhdGggaXMgZ29pbmcgdG8gYmUgcmVzb2x2ZWQgZnJvbSB0aGUgZW50aXR5IHR5cGUsIHNvIGl0IHNob3VsZCBub3QgYmUgYWJzb2x1dGVcblx0XHRcdHNQcm9wZXJ0eVBhdGggPSBzUHJvcGVydHlQYXRoLnN1YnN0cmluZygxKTtcblx0XHR9XG5cdFx0dGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9XG5cblx0Y29uc3QgcGF0aFNwbGl0cyA9IHNQcm9wZXJ0eVBhdGguc3BsaXQoXCIvXCIpO1xuXG5cdGxldCBuZXdEYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFQ+ID0gZGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFQ+O1xuXHRmb3IgKGNvbnN0IHBhdGhQYXJ0IG9mIHBhdGhTcGxpdHMpIHtcblx0XHRuZXdEYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZUZyb21QYXRoKG5ld0RhdGFNb2RlbE9iamVjdFBhdGgsIHBhdGhQYXJ0KTtcblx0fVxuXHRuZXdEYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCA9IHRhcmdldDtcblx0cmV0dXJuIG5ld0RhdGFNb2RlbE9iamVjdFBhdGg7XG59O1xuXG4vKipcbiAqIEdldHMgYSBuZXcgZW5oYW5jZWQgZGF0YU1vZGVsT2JqZWN0UGF0aCBtYXRjaGluZyB3aXRoIHRoZSBwcm92aWRlZCBwYXRoXG4gKiBUaGUgdGFyZ2V0T2JqZWN0IGlzIG5vdCB1cGRhdGVkIGJ5IHRoaXMgaW50ZXJuYWwgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGluaXRpYWwgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIHBhdGggVGhlIG9iamVjdCBwYXRoIHRvIHJlYWNoXG4gKiBAcmV0dXJucyBBIG5ldyBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKi9cblxuY29uc3QgZW5oYW5jZUZyb21QYXRoID0gZnVuY3Rpb24gPFQ+KGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sIHBhdGg6IHN0cmluZyk6IERhdGFNb2RlbE9iamVjdFBhdGg8VD4ge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCB1bmRlZmluZWQ7XG5cdGxldCB0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgdW5kZWZpbmVkO1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuY29uY2F0KCk7XG5cdGNvbnN0IG5hdmlnYXRpb25JbmRleCA9IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aDtcblx0Y29uc3QgcmVmZXJlbmNlRW50aXR5VHlwZSA9IG5hdmlnYXRpb25JbmRleFxuXHRcdD8gbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvbkluZGV4IC0gMV0udGFyZ2V0VHlwZVxuXHRcdDogZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlO1xuXHRpZiAoIXJlZmVyZW5jZUVudGl0eVR5cGUpIHtcblx0XHRyZXR1cm4gZGF0YU1vZGVsT2JqZWN0UGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFQ+O1xuXHR9IGVsc2UgaWYgKGlzRW50aXR5VHlwZShyZWZlcmVuY2VFbnRpdHlUeXBlKSB8fCBpc0NvbXBsZXhUeXBlKHJlZmVyZW5jZUVudGl0eVR5cGUpKSB7XG5cdFx0Y29uc3QgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0O1xuXHRcdGNvbnN0IHBvdGVudGlhbE5hdlByb3AgPSByZWZlcmVuY2VFbnRpdHlUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSA9PT0gcGF0aCk7XG5cdFx0aWYgKHBvdGVudGlhbE5hdlByb3ApIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gocG90ZW50aWFsTmF2UHJvcCk7XG5cdFx0XHR0YXJnZXRFbnRpdHlUeXBlID0gcG90ZW50aWFsTmF2UHJvcC50YXJnZXRUeXBlO1xuXG5cdFx0XHRjb25zdCBuYXZpZ2F0aW9uUGF0aEZyb21QcmV2aW91c0VudGl0eVNldCA9IGdldE5hdmlnYXRpb25CaW5kaW5nRnJvbVByZXZpb3VzRW50aXR5U2V0KG5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0XHRcdGlmIChcblx0XHRcdFx0bmF2aWdhdGlvblBhdGhGcm9tUHJldmlvdXNFbnRpdHlTZXQgJiZcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldD8ubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0aW9uUGF0aEZyb21QcmV2aW91c0VudGl0eVNldClcblx0XHRcdCkge1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGlvblBhdGhGcm9tUHJldmlvdXNFbnRpdHlTZXRdIGFzIEVudGl0eVNldDtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgcG90ZW50aWFsQ29tcGxleFR5cGUgPSAoXG5cdFx0XHRcdChyZWZlcmVuY2VFbnRpdHlUeXBlIGFzIEVudGl0eVR5cGUpLmVudGl0eVByb3BlcnRpZXMgfHwgKHJlZmVyZW5jZUVudGl0eVR5cGUgYXMgQ29tcGxleFR5cGUpLnByb3BlcnRpZXNcblx0XHRcdCkuZmluZCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lID09PSBwYXRoKTtcblx0XHRcdGlmIChwb3RlbnRpYWxDb21wbGV4VHlwZT8udGFyZ2V0VHlwZT8uX3R5cGUgPT09IFwiQ29tcGxleFR5cGVcIikge1xuXHRcdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHBvdGVudGlhbENvbXBsZXhUeXBlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHtcblx0XHRzdGFydGluZ0VudGl0eVNldDogZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogbmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IHRhcmdldEVudGl0eVNldCA/PyBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiB0YXJnZXRFbnRpdHlUeXBlID8/IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZSxcblx0XHR0YXJnZXRPYmplY3Q6IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0IGFzIFQsXG5cdFx0Y29udmVydGVkVHlwZXM6IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXNcblx0fTtcbn07XG5cbi8qKlxuICogRGV0ZWN0cyBpZiB0aGUgRGF0YU1vZGVsT2JqZWN0UGF0aCBoYXMgbmF2aWdhdGVkIHRocmV3IGEgY29tcGxleFR5cGUuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEByZXR1cm5zIElzIHRoZXJlIGEgY29tcGxleFR5cGUgaW50byB0aGUgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqL1xuY29uc3QgY29udGFpbnNBQ29tcGxleFR5cGUgPSBmdW5jdGlvbiAoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0Q29udGV4dCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKChuYXZpZ2F0aW9uKSA9PiBpc0NvbXBsZXhUeXBlKG5hdmlnYXRpb24/LnRhcmdldFR5cGUpKSAhPT0gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBuYXZpZ2F0aW9uIGJpbmRpbmcgZnJvbSB0aGUgcHJldmlvdXMgZW50aXR5U2V0IGxpc3RlZCBpbnRvIHRoZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIG5hdmlnYXRpb25Qcm9wZXJ0aWVzIFRoZSBuYXZpZ2F0aW9uIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIEEgbmV3IGRhdGFNb2RlbE9iamVjdFBhdGguXG4gKi9cbmNvbnN0IGdldE5hdmlnYXRpb25CaW5kaW5nRnJvbVByZXZpb3VzRW50aXR5U2V0ID0gZnVuY3Rpb24gKG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10pOiBzdHJpbmcge1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHlMZW5ndGggPSBuYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGg7XG5cdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlMZW5ndGgpIHtcblx0XHRjb25zdCBsYXN0TmF2aWdhdGlvbiA9IG5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdmlnYXRpb25Qcm9wZXJ0eUxlbmd0aCAtIDFdO1xuXHRcdGNvbnN0IGlzQ29tcGxleFR5cGVMYXN0TmF2aWdhdGlvbiA9IGlzQ29tcGxleFR5cGUobGFzdE5hdmlnYXRpb24udGFyZ2V0VHlwZSk7XG5cdFx0bGV0IG5hdmlnYXRpb25QYXRoID0gXCJcIjtcblx0XHRpZiAobmF2aWdhdGlvblByb3BlcnR5TGVuZ3RoID4gMSAmJiAhaXNDb21wbGV4VHlwZUxhc3ROYXZpZ2F0aW9uKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IG5hdmlnYXRpb25Qcm9wZXJ0eUxlbmd0aCAtIDE7IGkrKykge1xuXHRcdFx0XHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHkgPSBuYXZpZ2F0aW9uUHJvcGVydGllc1tpXTtcblx0XHRcdFx0aWYgKGlzQ29tcGxleFR5cGUobmF2aWdhdGlvblByb3BlcnR5LnRhcmdldFR5cGUpKSB7XG5cdFx0XHRcdFx0bmF2aWdhdGlvblBhdGggKz0gYCR7bmF2aWdhdGlvblByb3BlcnR5Lm5hbWV9L2A7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bmF2aWdhdGlvblBhdGggPSBcIlwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBpc0NvbXBsZXhUeXBlTGFzdE5hdmlnYXRpb24gPyBcIlwiIDogYCR7bmF2aWdhdGlvblBhdGh9JHtsYXN0TmF2aWdhdGlvbi5uYW1lfWA7XG5cdH1cblx0cmV0dXJuIFwiXCI7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhdGggb2YgdGhlIHRhcmdldGVkIGVudGl0eVNldC5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgVGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4pOiBzdHJpbmcge1xuXHRjb25zdCBpbml0aWFsUGF0aCA9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0bGV0IHRhcmdldEVudGl0eVNldFBhdGggPSBpbml0aWFsUGF0aDtcblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcGVydGllcyA9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdGxldCBuYXZpZ2F0aW9uUGF0aDogc3RyaW5nO1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0bmF2aWdhdGlvblBhdGggPSBnZXROYXZpZ2F0aW9uQmluZGluZ0Zyb21QcmV2aW91c0VudGl0eVNldChuYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSgwLCBpICsgMSkpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8kTmF2aWdhdGlvblByb3BlcnR5QmluZGluZy8ke25hdmlnYXRpb25QYXRoLnJlcGxhY2UoXCIvXCIsIFwiJTJGXCIpfWA7XG5cdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdmlnYXRpb25QYXRoXSBhcyBFbnRpdHlTZXQ7XG5cdFx0fVxuXHR9XG5cblx0dGFyZ2V0RW50aXR5U2V0UGF0aCArPSBcIi8kXCI7XG5cdHJldHVybiB0YXJnZXRFbnRpdHlTZXRQYXRoO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSB0YXJnZXRlZCBuYXZpZ2F0aW9uLlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gYlJlbGF0aXZlXG4gKiBAcmV0dXJucyBUaGUgcGF0aC5cbiAqL1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGggPSBmdW5jdGlvbiAoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiwgYlJlbGF0aXZlID0gZmFsc2UpOiBzdHJpbmcge1xuXHRsZXQgcGF0aCA9IFwiXCI7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBcIi9cIjtcblx0fVxuXHRpZiAoIWJSZWxhdGl2ZSkge1xuXHRcdHBhdGggKz0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHR9XG5cdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCA+IDApIHtcblx0XHRwYXRoID0gc2V0VHJhaWxpbmdTbGFzaChwYXRoKTtcblx0XHRwYXRoICs9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubWFwKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUpLmpvaW4oXCIvXCIpO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwYXRoIG9mIHRoZSB0YXJnZXRlZCBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSBiUmVsYXRpdmVcbiAqIEByZXR1cm5zIFRoZSBwYXRoLlxuICovXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LCBiUmVsYXRpdmUgPSBmYWxzZSk6IHN0cmluZyB7XG5cdGxldCBwYXRoID0gZ2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgYlJlbGF0aXZlKTtcblx0aWYgKFxuXHRcdGlzU2VydmljZU9iamVjdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQhaXNOYXZpZ2F0aW9uUHJvcGVydHkoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpICYmXG5cdFx0IWlzRW50aXR5VHlwZShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQhaXNFbnRpdHlTZXQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpICYmXG5cdFx0KCFpc1Byb3BlcnR5KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSB8fCAhaXNDb21wbGV4VHlwZShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGFyZ2V0VHlwZSkpICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXRcblx0KSB7XG5cdFx0cGF0aCA9IHNldFRyYWlsaW5nU2xhc2gocGF0aCk7XG5cdFx0cGF0aCArPSBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lfWA7XG5cdH0gZWxzZSBpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiYgaXNBbm5vdGF0aW9uVGVybShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkpIHtcblx0XHRwYXRoID0gc2V0VHJhaWxpbmdTbGFzaChwYXRoKTtcblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdFx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwicXVhbGlmaWVyXCIpICYmICEhZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyKSB7XG5cdFx0XHRwYXRoICs9IGAjJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXJ9YDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0Zm9yQmluZGluZ0V4cHJlc3Npb24gPSBmYWxzZSxcblx0Zm9yRmlsdGVyQ29uZGl0aW9uUGF0aCA9IGZhbHNlXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/LnN0YXJ0aW5nRW50aXR5U2V0ICE9PSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0KSB7XG5cdFx0cmV0dXJuIGdldFRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdH1cblx0cmV0dXJuIF9nZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoKGRhdGFNb2RlbE9iamVjdFBhdGgsIGZvckJpbmRpbmdFeHByZXNzaW9uLCBmb3JGaWx0ZXJDb25kaXRpb25QYXRoKTtcbn07XG5cbmNvbnN0IF9nZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRmb3JCaW5kaW5nRXhwcmVzc2lvbiA9IGZhbHNlLFxuXHRmb3JGaWx0ZXJDb25kaXRpb25QYXRoID0gZmFsc2Vcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG5cdGNvbnN0IG5hdlByb3BlcnRpZXMgPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcyk7XG5cdGlmIChmb3JCaW5kaW5nRXhwcmVzc2lvbikge1xuXHRcdGlmIChuYXZQcm9wZXJ0aWVzLnNvbWUoaXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSkpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9XG5cdGxldCBwYXRoID0gZm9yRmlsdGVyQ29uZGl0aW9uUGF0aFxuXHRcdD8gbmF2UHJvcGVydGllc1xuXHRcdFx0XHQubWFwKChuYXZQcm9wKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgaXNDb2xsZWN0aW9uID0gaXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wKTtcblx0XHRcdFx0XHRyZXR1cm4gaXNDb2xsZWN0aW9uID8gYCR7bmF2UHJvcC5uYW1lfSpgIDogbmF2UHJvcC5uYW1lO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuam9pbihcIi9cIilcblx0XHQ6IG5hdlByb3BlcnRpZXMubWFwKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUpLmpvaW4oXCIvXCIpO1xuXG5cdGlmIChcblx0XHQoKGlzU2VydmljZU9iamVjdChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZSkgfHxcblx0XHRcdChpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlKSkgJiZcblx0XHQhaXNOYXZpZ2F0aW9uUHJvcGVydHkoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpICYmXG5cdFx0IWlzRW50aXR5VHlwZShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQhaXNFbnRpdHlTZXQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpICYmXG5cdFx0KCFpc1Byb3BlcnR5KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSB8fCAhaXNDb21wbGV4VHlwZShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdD8udGFyZ2V0VHlwZSkpICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXRcblx0KSB7XG5cdFx0cGF0aCA9IHNldFRyYWlsaW5nU2xhc2gocGF0aCk7XG5cdFx0cGF0aCArPSBpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24oZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpXG5cdFx0XHQ/IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnZhbHVlfWBcblx0XHRcdDogYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGlzQW5ub3RhdGlvblRlcm0oZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpKSB7XG5cdFx0cGF0aCA9IHNldFRyYWlsaW5nU2xhc2gocGF0aCk7XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHRcdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInF1YWxpZmllclwiKSAmJiAhIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcikge1xuXHRcdFx0cGF0aCArPSBgIyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyfWA7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuLyoqXG4gKiBHZXRzIGFuIGFycmF5IG9mIHByb3BlcnRpZXMgd2hlcmUgYSBzcGVjaWZpYyByZXN0cmljdGlvbiBpcyBhcHBsaWVkLlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gY2hlY2tGdW5jdGlvbiBUaGUgZnVuY3Rpb24gdGVzdGluZyB0aGUgcmVzdHJpY3Rpb24gYW5kIHJldHVybmluZyB0aGUgYXJyYXkgb2YgcHJvcGVydGllc1xuICogQHBhcmFtIG9uQ29udGV4dCBJcyB0aGUgcmVzdHJpY3Rpb24gdGVzdGVkIG9uIHRoZSB0YXJnZXQgb2JqZWN0IG9yIGl0cyBjb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldENvbnRleHRQcm9wZXJ0eVJlc3RyaWN0aW9uID0gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRjaGVja0Z1bmN0aW9uOiAoXG5cdFx0Y2FwYWJpbGl0aWVzOiBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCBTaW5nbGV0b25Bbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCB1bmRlZmluZWRcblx0KSA9PiBQcm9wZXJ0eVBhdGhbXSB8IHVuZGVmaW5lZCxcblx0b25Db250ZXh0ID0gdHJ1ZVxuKTogUHJvcGVydHlQYXRoW10gPT4ge1xuXHRjb25zdCBzb3VyY2UgPSBvbkNvbnRleHQgPyBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiA6IGRhdGFNb2RlbE9iamVjdFBhdGg7XG5cdGNvbnN0IGxhc3ROYXZQcm9wID0gc291cmNlPy5uYXZpZ2F0aW9uUHJvcGVydGllcz8uc2xpY2UoLTEpWzBdO1xuXHRjb25zdCBwcm9wZXJ0aWVzID0gY2hlY2tGdW5jdGlvbihsYXN0TmF2UHJvcD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdHJldHVybiBwcm9wZXJ0aWVzPy5sZW5ndGggPyBwcm9wZXJ0aWVzIDogY2hlY2tGdW5jdGlvbihzb3VyY2U/LnRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcykgfHwgW107XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoVXBkYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+IHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5VcGRhdGVSZXN0cmljdGlvbnM/LlVwZGF0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhcmVudCBuYXZpZ2F0aW9uIHByb3BlcnR5IG9mIHRoZSBnaXZlbiBub2RlIGhpZXJhcmNoeS5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIGhpZXJhcmNoeVF1YWxpZmllciBUaGUgcXVhbGlmaWVyIG9mIHRoZSBoaWVyYXJjaHkgc2V0IGluIHRoZSBtYW5pZmVzdFxuICogQHJldHVybnMgVGhlIHBhcmVudCBuYXZpZ2F0aW9uIHByb3BlcnR5LlxuICovXG5leHBvcnQgY29uc3QgZ2V0SGllcmFyY2h5UGFyZW50TmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0aGllcmFyY2h5UXVhbGlmaWVyOiBzdHJpbmdcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUuYW5ub3RhdGlvbnMuQWdncmVnYXRpb24/LltgUmVjdXJzaXZlSGllcmFyY2h5IyR7aGllcmFyY2h5UXVhbGlmaWVyfWBdXG5cdFx0Py5QYXJlbnROYXZpZ2F0aW9uUHJvcGVydHkuJHRhcmdldD8uZnVsbHlRdWFsaWZpZWROYW1lO1xufTtcblxuLyoqXG4gKiBHZXRzIGFuIGFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyB3aGVyZSBhbiB1cGRhdGUgcmVzdHJpY3Rpb24gaXMgYXBwbGllZC5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgVGhlIG5hdmlnYXRpb24gcHJvcGVydGllcyB3aXRoIHRoZSByZXN0cmljdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldE5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPFBhZ2VDb250ZXh0UGF0aFRhcmdldD5cbik6IChzdHJpbmcgfCB1bmRlZmluZWQpW10gfCB1bmRlZmluZWQge1xuXHQvLyBVcGRhdGVSZXN0cmljdGlvbnMuTm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMgb24gdGhlIHBhcmVudCBuYXZpZ2F0aW9uOlxuXHQvLyBSRVZJRVc6IFRoaXMgaXMgd3JvbmcgPyB0aGUgdXBkYXRlUmVzdHJpY3Rpb24gYW5ub3RhdGlvbiBuZWVkcyB0byBiZSBvbiBlbnRpdHlzZXQgYnV0IG91ciB0ZXN0IHNvbWV0aW1lcyBwdXQgaXQgb24gdGhlIG5hdmlnYXRpb24gcHJvcGVydHlcblx0Y29uc3Qgbm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMgPSAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgRW50aXR5U2V0KT8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uVXBkYXRlUmVzdHJpY3Rpb25zXG5cdFx0Py5Ob25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcztcblx0aWYgKG5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzICYmIG5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5sZW5ndGggPiAwKSB7XG5cdFx0cmV0dXJuIG5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChcblx0XHRcdChub25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgpID0+XG5cdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uICYmXG5cdFx0XHRcdGVuaGFuY2VEYXRhTW9kZWxQYXRoPFNlcnZpY2VPYmplY3Q+KGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBub25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUpLnRhcmdldE9iamVjdCFcblx0XHRcdFx0XHQuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0KTtcblx0fVxuXHQvLyBVcGRhdGVSZXN0cmljdGlvbnMuTm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMgb24gdGhlIGVudGl0eVNldCAob3IgZW50aXR5VHlwZSk6XG5cdHJldHVybiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnMuQ2FwYWJpbGl0aWVzPy5VcGRhdGVSZXN0cmljdGlvbnM/Lk5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5tYXAoXG5cdFx0KG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgpID0+IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGguJHRhcmdldD8uZnVsbHlRdWFsaWZpZWROYW1lXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoU2VhcmNoYWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uU2VhcmNoUmVzdHJpY3Rpb25zPy5TZWFyY2hhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhEZWxldGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+IHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5JbnNlcnRSZXN0cmljdGlvbnM/Lkluc2VydGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEZpbHRlcmFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkZpbHRlclJlc3RyaWN0aW9ucz8uRmlsdGVyYWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRhbGxvd2VkRXhwcmVzc2lvbjogKHN0cmluZyB8IHVuZGVmaW5lZClbXVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QgJiYgXCJGaWx0ZXJSZXN0cmljdGlvbnNcIiBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnM6IEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdID1cblx0XHRcdFx0XHQoYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIGFzIEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgY3VycmVudE9iamVjdFJlc3RyaWN0aW9uID0gZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maW5kKChyZXN0cmljdGlvbikgPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5jbHVkZXMoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbnR5cGUgRW50aXR5T3JTaW5nbGV0b24gPSBTaW5nbGV0b24gfCBFbnRpdHlTZXQgfCBudWxsO1xuLyoqXG4gKiBHZXRzIHRoZSB0YXJnZXQgZW50aXR5U2V0LCBpdHMgcGFyZW50IGFuZCB0aGUgbmF2aWdhdGlvbiBwYXRoIGZyb20gdGhlIHBhcmVudCB0byB0aGUgdGFyZ2V0IGVudGl0eVNldFxuICogVGhlIHRhcmdldCBlbnRpdHlTZXQgcG9pbnRpbmcgdG8gZWl0aGVyIG51bGwgKGluIGNhc2Ugb2YgY29udGFpbm1lbnQgbmF2cHJvcCBhIGxhc3QgcGFydCksIG9yIHRoZSBhY3R1YWwgdGFyZ2V0IChub24gY29udGFpbm1lbnQgYXMgdGFyZ2V0KVxuICogVGhlIHBhcmVudCBlbnRpdHlTZXQgcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIGVudGl0eVNldCB1c2VkIGluIHRoZSBwYXRoLlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgdGFyZ2V0IGVudGl0eXNldCwgaXRzIHBhcmVudCBhbmQgdGhlIG5hdmlnYXRpb24gcGF0aFxuICovXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0RW50aXR5U2V0SW5mbyA9IChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPlxuKToge1xuXHRwYXJlbnRFbnRpdHlTZXQ6IEVudGl0eU9yU2luZ2xldG9uO1xuXHR0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eU9yU2luZ2xldG9uO1xuXHRwYXJlbnROYXZpZ2F0aW9uUGF0aDogc3RyaW5nO1xufSA9PiB7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXHRsZXQgdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWU6IHN0cmluZ1tdID0gW107XG5cdGxldCBjdXJyZW50RW50aXR5U2V0OiBFbnRpdHlPclNpbmdsZXRvbiA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBwYXJlbnRFbnRpdHlTZXQ6IEVudGl0eU9yU2luZ2xldG9uID0gbnVsbDtcblx0bGV0IHRhcmdldEVudGl0eVNldDogRW50aXR5T3JTaW5nbGV0b24gPSBjdXJyZW50RW50aXR5U2V0O1xuXHRsZXQgcGFyZW50TmF2aWdhdGlvblBhdGggPSBcIlwiO1xuXG5cdGZvciAoY29uc3QgbmF2aWdhdGlvblByb3BlcnR5IG9mIGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpIHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdHBhcmVudE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdFx0aWYgKGlzUHJvcGVydHkobmF2aWdhdGlvblByb3BlcnR5KSB8fCAhbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShwYXJlbnROYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1twYXJlbnROYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRcdHRhcmdldEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdC8vIElmIHdlIHJlYWNoZWQgYSBuYXZpZ2F0aW9uIHByb3BlcnR5IHdpdGggYSBuYXZpZ2F0aW9ucHJvcGVydHliaW5kaW5nLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB2aXNpdGVkIHBhdGggb24gdGhlIG5leHQgaXRlcmF0aW9uIChpZiB0aGVyZSBpcyBvbmUpXG5cdFx0XHRcdHJlc2V0VmlzaXRlZE5hdlByb3BzID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIHJlYWxseSBzaG91bGQgbm90IGVuZCB1cCBoZXJlIGJ1dCBhdCBsZWFzdCBsZXQncyB0cnkgdG8gYXZvaWQgaW5jb3JyZWN0IGJlaGF2aW9yXG5cdFx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB7IHBhcmVudEVudGl0eVNldCwgdGFyZ2V0RW50aXR5U2V0LCBwYXJlbnROYXZpZ2F0aW9uUGF0aCB9O1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXN0cmljdGlvbnMgc2V0IG9uIHRoZSBwYXJlbnQgbmF2aWdhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIGNoZWNrRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGggVGhlIGV4dHJhY3Rpb24gcGFyYW1ldGVyc1xuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqL1xuY29uc3QgY2hlY2tPblBhcmVudE5hdmlnYXRpb24gPSAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdGNoZWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBuYXZpZ2F0aW9uUHJvcHMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzO1xuXHRjb25zdCB7IHBhcmVudEVudGl0eVNldCwgcGFyZW50TmF2aWdhdGlvblBhdGggfSA9IGdldFRhcmdldEVudGl0eVNldEluZm8oZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGxldCByZXN0cmljdGlvbnM6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB8IHVuZGVmaW5lZCwgdmlzaXRlZE5hdlByb3BzOiAoUHJvcGVydHkgfCBOYXZpZ2F0aW9uUHJvcGVydHkpW107XG5cdGZvciAoY29uc3QgcmVzdHJpY3RlZE5hdlByb3Agb2YgcGFyZW50RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5OYXZpZ2F0aW9uUmVzdHJpY3Rpb25zPy5SZXN0cmljdGVkUHJvcGVydGllcyA/PyBbXSkge1xuXHRcdGlmIChwYXJlbnROYXZpZ2F0aW9uUGF0aCA9PT0gcmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5LnZhbHVlKSB7XG5cdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKT8udmFsdWVPZigpO1xuXHRcdFx0aWYgKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmIChpc0NvbnN0YW50KGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihyZXN0cmljdGlvbkRlZmluaXRpb24pKSkge1xuXHRcdFx0XHRcdHJlc3RyaWN0aW9ucyA9IGNvbnN0YW50KHJlc3RyaWN0aW9uRGVmaW5pdGlvbik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29uc3QgX25hdmlnYXRpb25Qcm9wcyA9IG5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gX25hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiAmJlxuXHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzLmxlbmd0aCA8IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uPy5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggJiYgLy8gV2UgbmVlZCB0byBnbyBiYWNrd2FyZCB0byBnZXQgdGhlIHJlbGF0aXZlIHBhdGhcblx0XHRcdFx0XHRcdCEobmF2aWdhdGlvblByb3BzW25hdmlnYXRpb25Qcm9wcy5sZW5ndGggLSAxXSBhcyBOYXZpZ2F0aW9uUHJvcGVydHkpLnBhcnRuZXJcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdC8vIFRvIGdvIGJhY2t3YXJkIHdlIG5lZWQgdGhlIHBhcnRuZXJcblx0XHRcdFx0XHRcdHJlc3RyaWN0aW9ucyA9IHVuZGVmaW5lZDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFJlbGF0aXZlTG9jYXRpb24gPSBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgdmlzaXRlZE5hdlByb3BzKS5tYXAoXG5cdFx0XHRcdFx0XHRcdChucCkgPT4gbnAubmFtZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IHBhdGhWaXNpdG9yRnVuY3Rpb24gPSBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8ucGF0aFZpc2l0b3Jcblx0XHRcdFx0XHRcdFx0PyBnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbihleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aC5wYXRoVmlzaXRvciwgcGF0aFJlbGF0aXZlTG9jYXRpb24pXG5cdFx0XHRcdFx0XHRcdDogdW5kZWZpbmVkOyAvLyBzZW5kIHBhdGhWaXNpdG9yIGZ1bmN0aW9uIG9ubHkgd2hlbiBpdCBpcyBkZWZpbmVkIGFuZCBvbmx5IHNlbmQgZnVuY3Rpb24gb3IgZGVmaW5lZCBhcyBhIHBhcmFtZXRlclxuXHRcdFx0XHRcdFx0cmVzdHJpY3Rpb25zID0gZXF1YWwoXG5cdFx0XHRcdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdHJpY3Rpb25zO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXN0cmljdGlvbnMgc2V0IG9uIHRoZSB0YXJnZXQgZW50aXR5U2V0LlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gY2hlY2tGdW5jdGlvbiBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGFubm90YXRpb25cbiAqIEBwYXJhbSBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCBUaGUgZXh0cmFjdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uLlxuICovXG5jb25zdCBjaGVja09uVGFyZ2V0ID0gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRjaGVja0Z1bmN0aW9uOiBGdW5jdGlvbixcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCB0YXJnZXRSZXN0cmljdGlvbnM7XG5cdGNvbnN0IHsgdGFyZ2V0RW50aXR5U2V0IH0gPSBnZXRUYXJnZXRFbnRpdHlTZXRJbmZvKGRhdGFNb2RlbE9iamVjdFBhdGgpO1xuXHRsZXQgcmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRpZiAodGFyZ2V0RW50aXR5U2V0ID09PSBudWxsICYmIHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0fVxuXHRpZiAocmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBwYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGdldFJlbGF0aXZlUGF0aHMoZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0PyBnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbihleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aC5wYXRoVmlzaXRvciwgcGF0aFJlbGF0aXZlTG9jYXRpb24pXG5cdFx0XHQ6IHVuZGVmaW5lZDtcblx0XHR0YXJnZXRSZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihyZXN0cmljdGlvbkRlZmluaXRpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uLCB1bmRlZmluZWQsIHBhdGhWaXNpdG9yRnVuY3Rpb24pLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblx0cmV0dXJuIHRhcmdldFJlc3RyaWN0aW9ucztcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcmVzdHJpY3Rpb25zIGFwcGxpZWQgb24gdGhlIHRhcmdldFxuICogVGhlIHJlc3RyaWN0aW9uIGlzIGNhbHVjbGF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwYXJlbnQgYW5kIHRoZSB0YXJnZXQuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSBjaGVja0Z1bmN0aW9uIFRoZSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoIFRoZSBleHRyYWN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aCB8fCAhZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBjb25zdGFudCh0cnVlKTtcblx0fVxuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChkYXRhTW9kZWxPYmplY3RQYXRoLCBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8ucHJvcGVydHlQYXRoKTtcblxuXHQvLyBSZXN0cmljdGlvbnMgc2hvdWxkIGJlIGV2YWx1YXRlZCBhcyBQYXJlbnRFbnRpdHlTZXQuTmF2UmVzdHJpY3Rpb25zW05hdlByb3BlcnR5UGF0aF0gfHwgVGFyZ2V0RW50aXR5U2V0LlJlc3RyaWN0aW9uc1xuXHRjb25zdCByZXN0cmljdGlvbnMgPSBjaGVja09uUGFyZW50TmF2aWdhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLCBjaGVja0Z1bmN0aW9uLCBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCk7XG5cdGNvbnN0IHRhcmdldFJlc3RyaWN0aW9ucyA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5pZ25vcmVUYXJnZXRDb2xsZWN0aW9uXG5cdFx0PyB1bmRlZmluZWRcblx0XHQ6IGNoZWNrT25UYXJnZXQoZGF0YU1vZGVsT2JqZWN0UGF0aCwgY2hlY2tGdW5jdGlvbiwgZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGgpO1xuXG5cdHJldHVybiAoXG5cdFx0cmVzdHJpY3Rpb25zIHx8IHRhcmdldFJlc3RyaWN0aW9ucyB8fCAoZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LmF1dGhvcml6ZVVucmVzb2x2YWJsZSA/IHVucmVzb2x2YWJsZUV4cHJlc3Npb24gOiBjb25zdGFudCh0cnVlKSlcblx0KTtcbn07XG5cbi8qKlxuICogU2V0IGEgdHJhaWxpbmcgc2xhc2ggdG8gYSBwYXRoIGlmIG5vdCBhbHJlYWR5IHNldC5cbiAqXG4gKiBAcGFyYW0gcGF0aCBUaGUgcGF0aFxuICogQHJldHVybnMgVGhlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoXG4gKi9cbmNvbnN0IHNldFRyYWlsaW5nU2xhc2ggPSBmdW5jdGlvbiAocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcblx0aWYgKHBhdGgubGVuZ3RoICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdHJldHVybiBgJHtwYXRofS9gO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuLy8gVGhpcyBoZWxwZXIgbWV0aG9kIGlzIHVzZWQgdG8gYWRkIHJlbGF0aXZlIHBhdGggbG9jYXRpb24gYXJndW1lbnQgdG8gc2luZ2xldG9uUGF0aFZpc2l0b3JGdW5jdGlvbiBpLmUuIHBhdGhWaXNpdG9yXG4vLyBwYXRoVmlzaXRvciBtZXRob2QgaXMgdXNlZCBsYXRlciB0byBnZXQgdGhlIGNvcnJlY3QgYmluZGluZ3MgZm9yIHNpbmdsZXRvbiBlbnRpdHlcbi8vIG1ldGhvZCBpcyBpbnZva2VkIGxhdGVyIGluIHBhdGhJbk1vZGVsKCkgbWV0aG9kIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5nLlxuY29uc3QgZ2V0UGF0aFZpc2l0b3JGb3JTaW5nbGV0b24gPSBmdW5jdGlvbiAocGF0aFZpc2l0b3I6IEZ1bmN0aW9uLCBwYXRoUmVsYXRpdmVMb2NhdGlvbjogc3RyaW5nW10pOiBGdW5jdGlvbiB7XG5cdHJldHVybiBmdW5jdGlvbiAocGF0aDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHBhdGhWaXNpdG9yKHBhdGgsIHBhdGhSZWxhdGl2ZUxvY2F0aW9uKTtcblx0fTtcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBMERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sTUFBTUEsZ0JBQWdCLEdBQUcsVUFBVUMsV0FBcUQsRUFBRUMsV0FBcUIsRUFBWTtJQUNqSSxPQUFPQyx1QkFBdUIsQ0FBQ0YsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVHLGVBQWUsRUFBRUgsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVJLG9CQUFvQixFQUFFSCxXQUFXLENBQUMsQ0FBQ0ksR0FBRyxDQUFFQyxFQUFFLElBQUtBLEVBQUUsQ0FBQ0MsSUFBSSxDQUFDO0VBQ2xJLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVBBO0VBUU8sTUFBTUwsdUJBQXVCLEdBQUcsVUFDdENGLFdBQW9DLEVBR0E7SUFBQSxJQUZwQ1EsZUFBa0QsdUVBQUcsRUFBRTtJQUFBLElBQ3ZEUCxXQUFXLHVFQUFHLEtBQUs7SUFFbkIsTUFBTVEsY0FBYyxHQUFJQyxRQUEyQyxJQUF3QztNQUMxRyxJQUFJQyxVQUFVLEdBQUcsQ0FBQztNQUNsQixPQUFPRCxRQUFRLENBQUNFLE1BQU0sR0FBRyxDQUFDLElBQUlELFVBQVUsSUFBSUQsUUFBUSxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO1FB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
|
|
592
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRSZWxhdGl2ZVBhdGhzIiwiY29udGV4dFBhdGgiLCJza2lwQ2xlYW51cCIsImdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIiwiY29udGV4dExvY2F0aW9uIiwibmF2aWdhdGlvblByb3BlcnRpZXMiLCJtYXAiLCJucCIsIm5hbWUiLCJ2aXNpdGVkTmF2UHJvcHMiLCJjbGVhblVwTmF2UHJvcCIsIm5hdlByb3BzIiwiY3VycmVudElkeCIsImxlbmd0aCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsImlzTmF2aWdhdGlvblByb3BlcnR5IiwicGFydG5lciIsInNwbGljZSIsImdldEFkZGl0aW9uYWxOYXZQcm9wIiwicmVmZXJlbmNlUHJvcHMiLCJvdGhlclByb3BzIiwia2VlcFJlZmVyZW5jZSIsImFkZGl0aW9uYWxOYXZQcm9wcyIsImZvckVhY2giLCJuYXZQcm9wIiwibmF2SW5kZXgiLCJwdXNoIiwicmVtYWluaW5nTmF2UHJvcHMiLCJjb25jYXQiLCJzbGljZSIsImV4dHJhTmF2UHJvcCIsInRhcmdldFR5cGUiLCJmaW5kIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJkYXRhTW9kZWxPYmplY3RQYXRoIiwicHJvcGVydHlQYXRoIiwic1Byb3BlcnR5UGF0aCIsImlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uIiwicGF0aCIsInRhcmdldCIsIiR0YXJnZXQiLCJjb250YWluc0FDb21wbGV4VHlwZSIsImNvbnZlcnRlZFR5cGVzIiwicmVzb2x2ZVBhdGgiLCJnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJ0YXJnZXRFbnRpdHlUeXBlIiwicGF0aFNwbGl0cyIsInNwbGl0IiwibmV3RGF0YU1vZGVsT2JqZWN0UGF0aCIsInBhdGhQYXJ0IiwiZW5oYW5jZUZyb21QYXRoIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RW50aXR5U2V0IiwibmF2aWdhdGlvbkluZGV4IiwicmVmZXJlbmNlRW50aXR5VHlwZSIsImlzRW50aXR5VHlwZSIsImlzQ29tcGxleFR5cGUiLCJjdXJyZW50RW50aXR5U2V0IiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25QYXRoRnJvbVByZXZpb3VzRW50aXR5U2V0IiwiZ2V0TmF2aWdhdGlvbkJpbmRpbmdGcm9tUHJldmlvdXNFbnRpdHlTZXQiLCJuYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nIiwiaGFzT3duUHJvcGVydHkiLCJwb3RlbnRpYWxDb21wbGV4VHlwZSIsImVudGl0eVByb3BlcnRpZXMiLCJwcm9wZXJ0aWVzIiwiX3R5cGUiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRpb24iLCJ1bmRlZmluZWQiLCJuYXZpZ2F0aW9uUHJvcGVydHlMZW5ndGgiLCJsYXN0TmF2aWdhdGlvbiIsImlzQ29tcGxleFR5cGVMYXN0TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25QYXRoIiwiaSIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsImdldFRhcmdldEVudGl0eVNldFBhdGgiLCJpbml0aWFsUGF0aCIsInRhcmdldEVudGl0eVNldFBhdGgiLCJyZXBsYWNlIiwiYlJlbGF0aXZlIiwic2V0VHJhaWxpbmdTbGFzaCIsImpvaW4iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiaXNTZXJ2aWNlT2JqZWN0IiwiaXNFbnRpdHlTZXQiLCJpc1Byb3BlcnR5IiwiaXNBbm5vdGF0aW9uVGVybSIsInRlcm0iLCJxdWFsaWZpZXIiLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZm9yQmluZGluZ0V4cHJlc3Npb24iLCJmb3JGaWx0ZXJDb25kaXRpb25QYXRoIiwiX2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgiLCJuYXZQcm9wZXJ0aWVzIiwic29tZSIsImlzTXVsdGlwbGVOYXZpZ2F0aW9uUHJvcGVydHkiLCJpc0NvbGxlY3Rpb24iLCJpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24iLCJ2YWx1ZSIsImdldENvbnRleHRQcm9wZXJ0eVJlc3RyaWN0aW9uIiwiY2hlY2tGdW5jdGlvbiIsIm9uQ29udGV4dCIsInNvdXJjZSIsImxhc3ROYXZQcm9wIiwiYW5ub3RhdGlvbnMiLCJDYXBhYmlsaXRpZXMiLCJpc1BhdGhVcGRhdGFibGUiLCJleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImdldEhpZXJhcmNoeVBhcmVudE5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJoaWVyYXJjaHlRdWFsaWZpZXIiLCJBZ2dyZWdhdGlvbiIsIlBhcmVudE5hdmlnYXRpb25Qcm9wZXJ0eSIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImdldE5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwibm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMiLCJOb25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyIsIm5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0eSIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJpc1BhdGhTZWFyY2hhYmxlIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwiU2VhcmNoYWJsZSIsImlzUGF0aERlbGV0YWJsZSIsIkRlbGV0ZVJlc3RyaWN0aW9ucyIsIkRlbGV0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJJbnNlcnRSZXN0cmljdGlvbnMiLCJJbnNlcnRhYmxlIiwiaXNQYXRoRmlsdGVyYWJsZSIsIkZpbHRlclJlc3RyaWN0aW9ucyIsIkZpbHRlcmFibGUiLCJjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJhbGxvd2VkRXhwcmVzc2lvbiIsImZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMiLCJGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiY3VycmVudE9iamVjdFJlc3RyaWN0aW9uIiwicmVzdHJpY3Rpb24iLCJQcm9wZXJ0eSIsImluY2x1ZGVzIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwidG9TdHJpbmciLCJnZXRUYXJnZXRFbnRpdHlTZXRJbmZvIiwicmVzZXRWaXNpdGVkTmF2UHJvcHMiLCJ2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZSIsInBhcmVudEVudGl0eVNldCIsInBhcmVudE5hdmlnYXRpb25QYXRoIiwiY29udGFpbnNUYXJnZXQiLCJjaGVja09uUGFyZW50TmF2aWdhdGlvbiIsIm5hdmlnYXRpb25Qcm9wcyIsInJlc3RyaWN0aW9ucyIsInJlc3RyaWN0ZWROYXZQcm9wIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwiTmF2aWdhdGlvblByb3BlcnR5IiwicmVzdHJpY3Rpb25EZWZpbml0aW9uIiwidmFsdWVPZiIsImlzQ29uc3RhbnQiLCJnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24iLCJjb25zdGFudCIsIl9uYXZpZ2F0aW9uUHJvcHMiLCJwYXRoUmVsYXRpdmVMb2NhdGlvbiIsInBhdGhWaXNpdG9yRnVuY3Rpb24iLCJwYXRoVmlzaXRvciIsImdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uIiwiZXF1YWwiLCJjaGVja09uVGFyZ2V0IiwidGFyZ2V0UmVzdHJpY3Rpb25zIiwiaWdub3JlVGFyZ2V0Q29sbGVjdGlvbiIsImF1dGhvcml6ZVVucmVzb2x2YWJsZSIsInVucmVzb2x2YWJsZUV4cHJlc3Npb24iLCJlbmRzV2l0aCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRGF0YU1vZGVsUGF0aEhlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG5cdENvbXBsZXhUeXBlLFxuXHRDb252ZXJ0ZWRNZXRhZGF0YSxcblx0RW50aXR5U2V0LFxuXHRFbnRpdHlUeXBlLFxuXHROYXZpZ2F0aW9uUHJvcGVydHksXG5cdFByb3BlcnR5LFxuXHRQcm9wZXJ0eVBhdGgsXG5cdFNlcnZpY2VPYmplY3QsXG5cdFNpbmdsZXRvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9FZG1cIjtcbmltcG9ydCB0eXBlIHtcblx0RmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzLFxuXHROYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblxufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHR5cGUge1xuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdFNpbmdsZXRvbkFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NhcGFiaWxpdGllc19FZG1cIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBjb25zdGFudCwgZXF1YWwsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbiwgaXNDb25zdGFudCwgdW5yZXNvbHZhYmxlRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHR5cGUgeyBQYWdlQ29udGV4dFBhdGhUYXJnZXQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHtcblx0aXNBbm5vdGF0aW9uVGVybSxcblx0aXNDb21wbGV4VHlwZSxcblx0aXNFbnRpdHlTZXQsXG5cdGlzRW50aXR5VHlwZSxcblx0aXNNdWx0aXBsZU5hdmlnYXRpb25Qcm9wZXJ0eSxcblx0aXNOYXZpZ2F0aW9uUHJvcGVydHksXG5cdGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uLFxuXHRpc1Byb3BlcnR5LFxuXHRpc1Byb3BlcnR5UGF0aEV4cHJlc3Npb24sXG5cdGlzU2VydmljZU9iamVjdFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5T3JQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcblxuZXhwb3J0IHR5cGUgRGF0YU1vZGVsT2JqZWN0Q29udGV4dCA9IHtcblx0c3RhcnRpbmdFbnRpdHlTZXQ6IFNpbmdsZXRvbiB8IEVudGl0eVNldDtcblx0bmF2aWdhdGlvblByb3BlcnRpZXM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXTtcblx0dGFyZ2V0RW50aXR5U2V0PzogU2luZ2xldG9uIHwgRW50aXR5U2V0O1xuXHR0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGE7XG59O1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoPFQ+ID0gRGF0YU1vZGVsT2JqZWN0Q29udGV4dCAmIHtcblx0Y29udGV4dExvY2F0aW9uPzogRGF0YU1vZGVsT2JqZWN0Q29udGV4dDtcblx0dGFyZ2V0T2JqZWN0PzogVDtcbn07XG5cbnR5cGUgRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGggPSB7XG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pjtcblx0cGF0aFZpc2l0b3I/OiBGdW5jdGlvbjtcblx0aWdub3JlVGFyZ2V0Q29sbGVjdGlvbj86IGJvb2xlYW47XG5cdGF1dGhvcml6ZVVucmVzb2x2YWJsZT86IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgcmVsYXRpdmUgcGF0aCB0byB0aGUgcHJvcGVydHkgZnJvbSB0aGUgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqXG4gKiBAcGFyYW0gY29udGV4dFBhdGggVGhlIERhdGFNb2RlbE9iamVjdFBhdGggb2JqZWN0IHRvIHRoZSBwcm9wZXJ0eVxuICogQHBhcmFtIHNraXBDbGVhbnVwIERvbid0IGNsZWFuIHVwIGNpcmN1bGFyIG5hdmlnYXRpb24gcHJvcGVydGllc1xuICogQHJldHVybnMgVGhlIHBhdGggZnJvbSB0aGUgcm9vdCBlbnRpdHkgc2V0XG4gKi9cbmV4cG9ydCBjb25zdCBnZXRSZWxhdGl2ZVBhdGhzID0gZnVuY3Rpb24gKGNvbnRleHRQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+IHwgdW5kZWZpbmVkLCBza2lwQ2xlYW51cD86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG5cdHJldHVybiBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihjb250ZXh0UGF0aD8uY29udGV4dExvY2F0aW9uLCBjb250ZXh0UGF0aD8ubmF2aWdhdGlvblByb3BlcnRpZXMsIHNraXBDbGVhbnVwKS5tYXAoKG5wKSA9PiBucC5uYW1lKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIGZyb20gYSBkYXRhTW9kZWxPYmplY3RQYXRoIHRvIHRoZSB0YXJnZXRlZCBuYXZpZ2F0aW9uIHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIGNvbnRleHRQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gdmlzaXRlZE5hdlByb3BzIFRoZSB0YXJnZXRlZCBuYXZpZ2F0aW9uIHByb3BlcnRpZXNcbiAqIEBwYXJhbSBza2lwQ2xlYW51cCBEb24ndCBjbGVhbiB1cCBjaXJjdWxhciBuYXZpZ2F0aW9uIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyB0byByZWFjaCB0aGUgdGFyZ2V0ZWQgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGZ1bmN0aW9uIChcblx0Y29udGV4dFBhdGg/OiBEYXRhTW9kZWxPYmplY3RDb250ZXh0LFxuXHR2aXNpdGVkTmF2UHJvcHM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSA9IFtdLFxuXHRza2lwQ2xlYW51cCA9IGZhbHNlXG4pOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10ge1xuXHRjb25zdCBjbGVhblVwTmF2UHJvcCA9IChuYXZQcm9wczogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdKTogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdID0+IHtcblx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0d2hpbGUgKG5hdlByb3BzLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSBuYXZQcm9wcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gbmF2UHJvcHNbY3VycmVudElkeF07XG5cdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IG5hdlByb3BzW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdGlmIChpc05hdmlnYXRpb25Qcm9wZXJ0eShjdXJyZW50TmF2KSAmJiBjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0bmF2UHJvcHMuc3BsaWNlKDAsIDIpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbmF2UHJvcHM7XG5cdH07XG5cblx0Y29uc3QgZ2V0QWRkaXRpb25hbE5hdlByb3AgPSAoXG5cdFx0cmVmZXJlbmNlUHJvcHM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSxcblx0XHRvdGhlclByb3BzOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10sXG5cdFx0a2VlcFJlZmVyZW5jZTogYm9vbGVhblxuXHQpOiAoTmF2aWdhdGlvblByb3BlcnR5IHwgUHJvcGVydHkpW10gPT4ge1xuXHRcdGNvbnN0IGFkZGl0aW9uYWxOYXZQcm9wczogKE5hdmlnYXRpb25Qcm9wZXJ0eSB8IFByb3BlcnR5KVtdID0gW107XG5cdFx0cmVmZXJlbmNlUHJvcHMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdGlmIChvdGhlclByb3BzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRhZGRpdGlvbmFsTmF2UHJvcHMucHVzaChrZWVwUmVmZXJlbmNlID8gbmF2UHJvcCA6IG90aGVyUHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gYWRkaXRpb25hbE5hdlByb3BzO1xuXHR9O1xuXG5cdGlmICghY29udGV4dFBhdGgpIHtcblx0XHRyZXR1cm4gdmlzaXRlZE5hdlByb3BzO1xuXHR9XG5cdGlmICh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoID49IGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdGxldCByZW1haW5pbmdOYXZQcm9wcyA9IGdldEFkZGl0aW9uYWxOYXZQcm9wKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLCB2aXNpdGVkTmF2UHJvcHMsIGZhbHNlKTtcblx0XHRyZW1haW5pbmdOYXZQcm9wcyA9IHJlbWFpbmluZ05hdlByb3BzLmNvbmNhdCh2aXNpdGVkTmF2UHJvcHMuc2xpY2UoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSk7XG5cdFx0cmV0dXJuIHNraXBDbGVhbnVwID8gcmVtYWluaW5nTmF2UHJvcHMgOiBjbGVhblVwTmF2UHJvcChyZW1haW5pbmdOYXZQcm9wcyk7XG5cdH1cblx0bGV0IGV4dHJhTmF2UHJvcCA9IGdldEFkZGl0aW9uYWxOYXZQcm9wKHZpc2l0ZWROYXZQcm9wcywgY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMsIHRydWUpO1xuXHRleHRyYU5hdlByb3AgPSBleHRyYU5hdlByb3AuY29uY2F0KGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNsaWNlKHZpc2l0ZWROYXZQcm9wcy5sZW5ndGgpKTtcblx0aWYgKCFza2lwQ2xlYW51cCkge1xuXHRcdGNsZWFuVXBOYXZQcm9wKGV4dHJhTmF2UHJvcCk7XG5cdH1cblx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLm1hcCgobmF2UHJvcCkgPT4ge1xuXHRcdHJldHVybiBpc05hdmlnYXRpb25Qcm9wZXJ0eShuYXZQcm9wKVxuXHRcdFx0PyAobmF2UHJvcC50YXJnZXRUeXBlLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5wKSA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSlcblx0XHRcdDogbmF2UHJvcDtcblx0fSk7XG5cdHJldHVybiBleHRyYU5hdlByb3A7XG59O1xuXG4vKipcbiAqIEdldHMgYSBuZXcgZW5oYW5jZWQgZGF0YU1vZGVsT2JqZWN0UGF0aCBtYXRjaGluZyB3aXRoIHRoZSBwcm92aWRlZCBwcm9wZXJ0eS5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgaW5pdGlhbCBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gcHJvcGVydHlQYXRoIFRoZSBwcm9wZXJ0eSBwYXRoIG9yIHByb3BlcnR5IHRvIHJlYWNoXG4gKiBAcmV0dXJucyBBIG5ldyBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKi9cbmV4cG9ydCBjb25zdCBlbmhhbmNlRGF0YU1vZGVsUGF0aCA9IGZ1bmN0aW9uIDxUPihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IERhdGFNb2RlbE9iamVjdENvbnRleHQsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aDxUPiB7XG5cdGxldCBzUHJvcGVydHlQYXRoID0gXCJcIjtcblx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHByb3BlcnR5UGF0aCkpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoLnBhdGg7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHByb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGg7XG5cdH1cblx0bGV0IHRhcmdldDtcblx0aWYgKGlzUGF0aEFubm90YXRpb25FeHByZXNzaW9uKHByb3BlcnR5UGF0aCkpIHtcblx0XHR0YXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChjb250YWluc0FDb21wbGV4VHlwZShkYXRhTW9kZWxPYmplY3RQYXRoKSkge1xuXHRcdHRhcmdldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguY29udmVydGVkVHlwZXMucmVzb2x2ZVBhdGgoYCR7Z2V0VGFyZ2V0TmF2aWdhdGlvblBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCl9LyR7c1Byb3BlcnR5UGF0aH1gKT8udGFyZ2V0O1xuXHR9IGVsc2Uge1xuXHRcdGlmIChzUHJvcGVydHlQYXRoLnN0YXJ0c1dpdGgoXCIvXCIpKSB7XG5cdFx0XHQvLyByZW1vdmUgdGhlIGxlYWRpbmcgXCIvXCIgYmVjYXVzZSB0aGUgcGF0aCBpcyBnb2luZyB0byBiZSByZXNvbHZlZCBmcm9tIHRoZSBlbnRpdHkgdHlwZSwgc28gaXQgc2hvdWxkIG5vdCBiZSBhYnNvbHV0ZVxuXHRcdFx0c1Byb3BlcnR5UGF0aCA9IHNQcm9wZXJ0eVBhdGguc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHR0YXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUucmVzb2x2ZVBhdGgoc1Byb3BlcnR5UGF0aCk7XG5cdH1cblxuXHRjb25zdCBwYXRoU3BsaXRzID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cblx0bGV0IG5ld0RhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8VD4gPSBkYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8VD47XG5cdGZvciAoY29uc3QgcGF0aFBhcnQgb2YgcGF0aFNwbGl0cykge1xuXHRcdG5ld0RhdGFNb2RlbE9iamVjdFBhdGggPSBlbmhhbmNlRnJvbVBhdGgobmV3RGF0YU1vZGVsT2JqZWN0UGF0aCwgcGF0aFBhcnQpO1xuXHR9XG5cdG5ld0RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ID0gdGFyZ2V0O1xuXHRyZXR1cm4gbmV3RGF0YU1vZGVsT2JqZWN0UGF0aDtcbn07XG5cbi8qKlxuICogR2V0cyBhIG5ldyBlbmhhbmNlZCBkYXRhTW9kZWxPYmplY3RQYXRoIG1hdGNoaW5nIHdpdGggdGhlIHByb3ZpZGVkIHBhdGhcbiAqIFRoZSB0YXJnZXRPYmplY3QgaXMgbm90IHVwZGF0ZWQgYnkgdGhpcyBpbnRlcm5hbCBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgaW5pdGlhbCBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gcGF0aCBUaGUgb2JqZWN0IHBhdGggdG8gcmVhY2hcbiAqIEByZXR1cm5zIEEgbmV3IGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqL1xuXG5jb25zdCBlbmhhbmNlRnJvbVBhdGggPSBmdW5jdGlvbiA8VD4oZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiwgcGF0aDogc3RyaW5nKTogRGF0YU1vZGVsT2JqZWN0UGF0aDxUPiB7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IHVuZGVmaW5lZDtcblx0bGV0IHRhcmdldEVudGl0eVR5cGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQ7XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5jb25jYXQoKTtcblx0Y29uc3QgbmF2aWdhdGlvbkluZGV4ID0gbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoO1xuXHRjb25zdCByZWZlcmVuY2VFbnRpdHlUeXBlID0gbmF2aWdhdGlvbkluZGV4XG5cdFx0PyBuYXZpZ2F0aW9uUHJvcGVydGllc1tuYXZpZ2F0aW9uSW5kZXggLSAxXS50YXJnZXRUeXBlXG5cdFx0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGlmICghcmVmZXJlbmNlRW50aXR5VHlwZSkge1xuXHRcdHJldHVybiBkYXRhTW9kZWxPYmplY3RQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8VD47XG5cdH0gZWxzZSBpZiAoaXNFbnRpdHlUeXBlKHJlZmVyZW5jZUVudGl0eVR5cGUpIHx8IGlzQ29tcGxleFR5cGUocmVmZXJlbmNlRW50aXR5VHlwZSkpIHtcblx0XHRjb25zdCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdFx0Y29uc3QgcG90ZW50aWFsTmF2UHJvcCA9IHJlZmVyZW5jZUVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZCgobmF2UHJvcCkgPT4gbmF2UHJvcC5uYW1lID09PSBwYXRoKTtcblx0XHRpZiAocG90ZW50aWFsTmF2UHJvcCkge1xuXHRcdFx0bmF2aWdhdGlvblByb3BlcnRpZXMucHVzaChwb3RlbnRpYWxOYXZQcm9wKTtcblx0XHRcdHRhcmdldEVudGl0eVR5cGUgPSBwb3RlbnRpYWxOYXZQcm9wLnRhcmdldFR5cGU7XG5cblx0XHRcdGNvbnN0IG5hdmlnYXRpb25QYXRoRnJvbVByZXZpb3VzRW50aXR5U2V0ID0gZ2V0TmF2aWdhdGlvbkJpbmRpbmdGcm9tUHJldmlvdXNFbnRpdHlTZXQobmF2aWdhdGlvblByb3BlcnRpZXMpO1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRuYXZpZ2F0aW9uUGF0aEZyb21QcmV2aW91c0VudGl0eVNldCAmJlxuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0Py5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdmlnYXRpb25QYXRoRnJvbVByZXZpb3VzRW50aXR5U2V0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRhcmdldEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0aW9uUGF0aEZyb21QcmV2aW91c0VudGl0eVNldF0gYXMgRW50aXR5U2V0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBwb3RlbnRpYWxDb21wbGV4VHlwZSA9IChcblx0XHRcdFx0KHJlZmVyZW5jZUVudGl0eVR5cGUgYXMgRW50aXR5VHlwZSkuZW50aXR5UHJvcGVydGllcyB8fCAocmVmZXJlbmNlRW50aXR5VHlwZSBhcyBDb21wbGV4VHlwZSkucHJvcGVydGllc1xuXHRcdFx0KS5maW5kKChuYXZQcm9wKSA9PiBuYXZQcm9wLm5hbWUgPT09IHBhdGgpO1xuXHRcdFx0aWYgKHBvdGVudGlhbENvbXBsZXhUeXBlPy50YXJnZXRUeXBlPy5fdHlwZSA9PT0gXCJDb21wbGV4VHlwZVwiKSB7XG5cdFx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gocG90ZW50aWFsQ29tcGxleFR5cGUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4ge1xuXHRcdHN0YXJ0aW5nRW50aXR5U2V0OiBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBuYXZpZ2F0aW9uUHJvcGVydGllcyxcblx0XHRjb250ZXh0TG9jYXRpb246IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLFxuXHRcdHRhcmdldEVudGl0eVNldDogdGFyZ2V0RW50aXR5U2V0ID8/IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IHRhcmdldEVudGl0eVR5cGUgPz8gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgYXMgVCxcblx0XHRjb252ZXJ0ZWRUeXBlczogZGF0YU1vZGVsT2JqZWN0UGF0aC5jb252ZXJ0ZWRUeXBlc1xuXHR9O1xufTtcblxuLyoqXG4gKiBEZXRlY3RzIGlmIHRoZSBEYXRhTW9kZWxPYmplY3RQYXRoIGhhcyBuYXZpZ2F0ZWQgdGhyZXcgYSBjb21wbGV4VHlwZS5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMgSXMgdGhlcmUgYSBjb21wbGV4VHlwZSBpbnRvIHRoZSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICovXG5jb25zdCBjb250YWluc0FDb21wbGV4VHlwZSA9IGZ1bmN0aW9uIChkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RDb250ZXh0KTogYm9vbGVhbiB7XG5cdHJldHVybiBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZpbmQoKG5hdmlnYXRpb24pID0+IGlzQ29tcGxleFR5cGUobmF2aWdhdGlvbj8udGFyZ2V0VHlwZSkpICE9PSB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdmlnYXRpb24gYmluZGluZyBmcm9tIHRoZSBwcmV2aW91cyBlbnRpdHlTZXQgbGlzdGVkIGludG8gdGhlIG5hdmlnYXRpb24gcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gbmF2aWdhdGlvblByb3BlcnRpZXMgVGhlIG5hdmlnYXRpb24gcHJvcGVydGllc1xuICogQHJldHVybnMgQSBuZXcgZGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqL1xuY29uc3QgZ2V0TmF2aWdhdGlvbkJpbmRpbmdGcm9tUHJldmlvdXNFbnRpdHlTZXQgPSBmdW5jdGlvbiAobmF2aWdhdGlvblByb3BlcnRpZXM6IChOYXZpZ2F0aW9uUHJvcGVydHkgfCBQcm9wZXJ0eSlbXSk6IHN0cmluZyB7XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eUxlbmd0aCA9IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aDtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eUxlbmd0aCkge1xuXHRcdGNvbnN0IGxhc3ROYXZpZ2F0aW9uID0gbmF2aWdhdGlvblByb3BlcnRpZXNbbmF2aWdhdGlvblByb3BlcnR5TGVuZ3RoIC0gMV07XG5cdFx0Y29uc3QgaXNDb21wbGV4VHlwZUxhc3ROYXZpZ2F0aW9uID0gaXNDb21wbGV4VHlwZShsYXN0TmF2aWdhdGlvbi50YXJnZXRUeXBlKTtcblx0XHRsZXQgbmF2aWdhdGlvblBhdGggPSBcIlwiO1xuXHRcdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlMZW5ndGggPiAxICYmICFpc0NvbXBsZXhUeXBlTGFzdE5hdmlnYXRpb24pIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgbmF2aWdhdGlvblByb3BlcnR5TGVuZ3RoIC0gMTsgaSsrKSB7XG5cdFx0XHRcdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0eSA9IG5hdmlnYXRpb25Qcm9wZXJ0aWVzW2ldO1xuXHRcdFx0XHRpZiAoaXNDb21wbGV4VHlwZShuYXZpZ2F0aW9uUHJvcGVydHkudGFyZ2V0VHlwZSkpIHtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aCArPSBgJHtuYXZpZ2F0aW9uUHJvcGVydHkubmFtZX0vYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRuYXZpZ2F0aW9uUGF0aCA9IFwiXCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGlzQ29tcGxleFR5cGVMYXN0TmF2aWdhdGlvbiA/IFwiXCIgOiBgJHtuYXZpZ2F0aW9uUGF0aH0ke2xhc3ROYXZpZ2F0aW9uLm5hbWV9YDtcblx0fVxuXHRyZXR1cm4gXCJcIjtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcGF0aCBvZiB0aGUgdGFyZ2V0ZWQgZW50aXR5U2V0LlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRhcmdldEVudGl0eVNldFBhdGggPSBmdW5jdGlvbiAoZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPik6IHN0cmluZyB7XG5cdGNvbnN0IGluaXRpYWxQYXRoID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aCA9IGluaXRpYWxQYXRoO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcztcblx0bGV0IG5hdmlnYXRpb25QYXRoOiBzdHJpbmc7XG5cdGZvciAobGV0IGkgPSAwOyBpIDwgbmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcblx0XHRuYXZpZ2F0aW9uUGF0aCA9IGdldE5hdmlnYXRpb25CaW5kaW5nRnJvbVByZXZpb3VzRW50aXR5U2V0KG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnNsaWNlKDAsIGkgKyAxKSk7XG5cdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KG5hdmlnYXRpb25QYXRoKSkge1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0UGF0aCArPSBgLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7bmF2aWdhdGlvblBhdGgucmVwbGFjZShcIi9cIiwgXCIlMkZcIil9YDtcblx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbbmF2aWdhdGlvblBhdGhdIGFzIEVudGl0eVNldDtcblx0XHR9XG5cdH1cblxuXHR0YXJnZXRFbnRpdHlTZXRQYXRoICs9IFwiLyRcIjtcblx0cmV0dXJuIHRhcmdldEVudGl0eVNldFBhdGg7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhdGggb2YgdGhlIHRhcmdldGVkIG5hdmlnYXRpb24uXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSBiUmVsYXRpdmVcbiAqIEByZXR1cm5zIFRoZSBwYXRoLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aCA9IGZ1bmN0aW9uIChkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LCBiUmVsYXRpdmUgPSBmYWxzZSk6IHN0cmluZyB7XG5cdGxldCBwYXRoID0gXCJcIjtcblx0aWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0KSB7XG5cdFx0cmV0dXJuIFwiL1wiO1xuXHR9XG5cdGlmICghYlJlbGF0aXZlKSB7XG5cdFx0cGF0aCArPSBgLyR7ZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldC5uYW1lfWA7XG5cdH1cblx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoID4gMCkge1xuXHRcdHBhdGggPSBzZXRUcmFpbGluZ1NsYXNoKHBhdGgpO1xuXHRcdHBhdGggKz0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5tYXAoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHBhdGggb2YgdGhlIHRhcmdldGVkIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIGJSZWxhdGl2ZVxuICogQHJldHVybnMgVGhlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sIGJSZWxhdGl2ZSA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBnZXRUYXJnZXROYXZpZ2F0aW9uUGF0aChkYXRhTW9kZWxPYmplY3RQYXRoLCBiUmVsYXRpdmUpO1xuXHRpZiAoXG5cdFx0aXNTZXJ2aWNlT2JqZWN0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJlxuXHRcdCFpc05hdmlnYXRpb25Qcm9wZXJ0eShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQhaXNFbnRpdHlUeXBlKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJlxuXHRcdCFpc0VudGl0eVNldChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQoIWlzUHJvcGVydHkoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpIHx8ICFpc0NvbXBsZXhUeXBlKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py50YXJnZXRUeXBlKSkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRwYXRoID0gc2V0VHJhaWxpbmdTbGFzaChwYXRoKTtcblx0XHRwYXRoICs9IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBpc0Fubm90YXRpb25UZXJtKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSkge1xuXHRcdHBhdGggPSBzZXRUcmFpbGluZ1NsYXNoKHBhdGgpO1xuXHRcdHBhdGggKz0gYEAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnRlcm19YDtcblx0XHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuaGFzT3duUHJvcGVydHkoXCJxdWFsaWZpZXJcIikgJiYgISFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXIpIHtcblx0XHRcdHBhdGggKz0gYCMke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnF1YWxpZmllcn1gO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRmb3JCaW5kaW5nRXhwcmVzc2lvbiA9IGZhbHNlLFxuXHRmb3JGaWx0ZXJDb25kaXRpb25QYXRoID0gZmFsc2Vcbik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8uc3RhcnRpbmdFbnRpdHlTZXQgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gZ2V0VGFyZ2V0T2JqZWN0UGF0aChkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0fVxuXHRyZXR1cm4gX2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgZm9yQmluZGluZ0V4cHJlc3Npb24sIGZvckZpbHRlckNvbmRpdGlvblBhdGgpO1xufTtcblxuY29uc3QgX2dldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdGZvckJpbmRpbmdFeHByZXNzaW9uID0gZmFsc2UsXG5cdGZvckZpbHRlckNvbmRpdGlvblBhdGggPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0aWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuc29tZShpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5KSkge1xuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH1cblx0bGV0IHBhdGggPSBmb3JGaWx0ZXJDb25kaXRpb25QYXRoXG5cdFx0PyBuYXZQcm9wZXJ0aWVzXG5cdFx0XHRcdC5tYXAoKG5hdlByb3ApID0+IHtcblx0XHRcdFx0XHRjb25zdCBpc0NvbGxlY3Rpb24gPSBpc011bHRpcGxlTmF2aWdhdGlvblByb3BlcnR5KG5hdlByb3ApO1xuXHRcdFx0XHRcdHJldHVybiBpc0NvbGxlY3Rpb24gPyBgJHtuYXZQcm9wLm5hbWV9KmAgOiBuYXZQcm9wLm5hbWU7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5qb2luKFwiL1wiKVxuXHRcdDogbmF2UHJvcGVydGllcy5tYXAoKG5hdlByb3ApID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cblx0aWYgKFxuXHRcdCgoaXNTZXJ2aWNlT2JqZWN0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lKSB8fFxuXHRcdFx0KGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWUpKSAmJlxuXHRcdCFpc05hdmlnYXRpb25Qcm9wZXJ0eShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQhaXNFbnRpdHlUeXBlKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSAmJlxuXHRcdCFpc0VudGl0eVNldChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkgJiZcblx0XHQoIWlzUHJvcGVydHkoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QpIHx8ICFpc0NvbXBsZXhUeXBlKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Py50YXJnZXRUeXBlKSkgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRwYXRoID0gc2V0VHJhaWxpbmdTbGFzaChwYXRoKTtcblx0XHRwYXRoICs9IGlzUHJvcGVydHlQYXRoRXhwcmVzc2lvbihkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdClcblx0XHRcdD8gYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWV9YFxuXHRcdFx0OiBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lfWA7XG5cdH0gZWxzZSBpZiAoaXNBbm5vdGF0aW9uVGVybShkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCkpIHtcblx0XHRwYXRoID0gc2V0VHJhaWxpbmdTbGFzaChwYXRoKTtcblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdFx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwicXVhbGlmaWVyXCIpICYmICEhZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyKSB7XG5cdFx0XHRwYXRoICs9IGAjJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXJ9YDtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG4vKipcbiAqIEdldHMgYW4gYXJyYXkgb2YgcHJvcGVydGllcyB3aGVyZSBhIHNwZWNpZmljIHJlc3RyaWN0aW9uIGlzIGFwcGxpZWQuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSBjaGVja0Z1bmN0aW9uIFRoZSBmdW5jdGlvbiB0ZXN0aW5nIHRoZSByZXN0cmljdGlvbiBhbmQgcmV0dXJuaW5nIHRoZSBhcnJheSBvZiBwcm9wZXJ0aWVzXG4gKiBAcGFyYW0gb25Db250ZXh0IElzIHRoZSByZXN0cmljdGlvbiB0ZXN0ZWQgb24gdGhlIHRhcmdldCBvYmplY3Qgb3IgaXRzIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgY29uc3QgZ2V0Q29udGV4dFByb3BlcnR5UmVzdHJpY3Rpb24gPSAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdGNoZWNrRnVuY3Rpb246IChcblx0XHRjYXBhYmlsaXRpZXM6IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IFNpbmdsZXRvbkFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IHVuZGVmaW5lZFxuXHQpID0+IFByb3BlcnR5UGF0aFtdIHwgdW5kZWZpbmVkLFxuXHRvbkNvbnRleHQgPSB0cnVlXG4pOiBQcm9wZXJ0eVBhdGhbXSA9PiB7XG5cdGNvbnN0IHNvdXJjZSA9IG9uQ29udGV4dCA/IGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uIDogZGF0YU1vZGVsT2JqZWN0UGF0aDtcblx0Y29uc3QgbGFzdE5hdlByb3AgPSBzb3VyY2U/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzPy5zbGljZSgtMSlbMF07XG5cdGNvbnN0IHByb3BlcnRpZXMgPSBjaGVja0Z1bmN0aW9uKGxhc3ROYXZQcm9wPy5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0cmV0dXJuIHByb3BlcnRpZXM/Lmxlbmd0aCA/IHByb3BlcnRpZXMgOiBjaGVja0Z1bmN0aW9uKHNvdXJjZT8udGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKSB8fCBbXTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhVcGRhdGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uVXBkYXRhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcGFyZW50IG5hdmlnYXRpb24gcHJvcGVydHkgb2YgdGhlIGdpdmVuIG5vZGUgaGllcmFyY2h5LlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gaGllcmFyY2h5UXVhbGlmaWVyIFRoZSBxdWFsaWZpZXIgb2YgdGhlIGhpZXJhcmNoeSBzZXQgaW4gdGhlIG1hbmlmZXN0XG4gKiBAcmV0dXJucyBUaGUgcGFyZW50IG5hdmlnYXRpb24gcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRIaWVyYXJjaHlQYXJlbnROYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+LFxuXHRoaWVyYXJjaHlRdWFsaWZpZXI6IHN0cmluZ1xuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0cmV0dXJuIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZS5hbm5vdGF0aW9ucy5BZ2dyZWdhdGlvbj8uW2BSZWN1cnNpdmVIaWVyYXJjaHkjJHtoaWVyYXJjaHlRdWFsaWZpZXJ9YF1cblx0XHQ/LlBhcmVudE5hdmlnYXRpb25Qcm9wZXJ0eS4kdGFyZ2V0Py5mdWxseVF1YWxpZmllZE5hbWU7XG59O1xuXG4vKipcbiAqIEdldHMgYW4gYXJyYXkgb2YgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIHdoZXJlIGFuIHVwZGF0ZSByZXN0cmljdGlvbiBpcyBhcHBsaWVkLlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcmV0dXJucyBUaGUgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIHdpdGggdGhlIHJlc3RyaWN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgZ2V0Tm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8UGFnZUNvbnRleHRQYXRoVGFyZ2V0PlxuKTogKHN0cmluZyB8IHVuZGVmaW5lZClbXSB8IHVuZGVmaW5lZCB7XG5cdC8vIFVwZGF0ZVJlc3RyaWN0aW9ucy5Ob25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyBvbiB0aGUgcGFyZW50IG5hdmlnYXRpb246XG5cdC8vIFJFVklFVzogVGhpcyBpcyB3cm9uZyA/IHRoZSB1cGRhdGVSZXN0cmljdGlvbiBhbm5vdGF0aW9uIG5lZWRzIHRvIGJlIG9uIGVudGl0eXNldCBidXQgb3VyIHRlc3Qgc29tZXRpbWVzIHB1dCBpdCBvbiB0aGUgbmF2aWdhdGlvbiBwcm9wZXJ0eVxuXHRjb25zdCBub25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyA9IChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCBhcyBFbnRpdHlTZXQpPy5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzPy5VcGRhdGVSZXN0cmljdGlvbnNcblx0XHQ/Lk5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0aWVzO1xuXHRpZiAobm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMgJiYgbm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXM/Lmxlbmd0aCA+IDApIHtcblx0XHRyZXR1cm4gbm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXMubWFwKFxuXHRcdFx0KG5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0eTogTmF2aWdhdGlvblByb3BlcnR5UGF0aCkgPT5cblx0XHRcdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24gJiZcblx0XHRcdFx0ZW5oYW5jZURhdGFNb2RlbFBhdGg8U2VydmljZU9iamVjdD4oZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sIG5vblVwZGF0YWJsZU5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSkudGFyZ2V0T2JqZWN0IVxuXHRcdFx0XHRcdC5mdWxseVF1YWxpZmllZE5hbWVcblx0XHQpO1xuXHR9XG5cdC8vIFVwZGF0ZVJlc3RyaWN0aW9ucy5Ob25VcGRhdGFibGVOYXZpZ2F0aW9uUHJvcGVydGllcyBvbiB0aGUgZW50aXR5U2V0IChvciBlbnRpdHlUeXBlKTpcblx0cmV0dXJuIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucy5DYXBhYmlsaXRpZXM/LlVwZGF0ZVJlc3RyaWN0aW9ucz8uTm9uVXBkYXRhYmxlTmF2aWdhdGlvblByb3BlcnRpZXM/Lm1hcChcblx0XHQobmF2aWdhdGlvblByb3BlcnR5UGF0aCkgPT4gbmF2aWdhdGlvblByb3BlcnR5UGF0aC4kdGFyZ2V0Py5mdWxseVF1YWxpZmllZE5hbWVcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhTZWFyY2hhYmxlID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+IHwgdW5kZWZpbmVkLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5TZWFyY2hSZXN0cmljdGlvbnM/LlNlYXJjaGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aERlbGV0YWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uRGVsZXRlUmVzdHJpY3Rpb25zPy5EZWxldGFibGU7XG5cdFx0fSxcblx0XHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuXHQpO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzUGF0aEluc2VydGFibGUgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4gfCB1bmRlZmluZWQsXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/Lkluc2VydFJlc3RyaWN0aW9ucz8uSW5zZXJ0YWJsZTtcblx0XHR9LFxuXHRcdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoRmlsdGVyYWJsZSA9IGZ1bmN0aW9uIChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPiB8IHVuZGVmaW5lZCxcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJhYmxlO1xuXHRcdH0sXG5cdFx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbiAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdGFsbG93ZWRFeHByZXNzaW9uOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCBFbnRpdHlUeXBlQW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCAmJiBcIkZpbHRlclJlc3RyaWN0aW9uc1wiIGluIGFubm90YXRpb25PYmplY3QpIHtcblx0XHRcdFx0Y29uc3QgZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uczogRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10gPVxuXHRcdFx0XHRcdChhbm5vdGF0aW9uT2JqZWN0Py5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgYXMgRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10pIHx8IFtdO1xuXHRcdFx0XHRjb25zdCBjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24gPSBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLmZpbmQoKHJlc3RyaWN0aW9uKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIChyZXN0cmljdGlvbi5Qcm9wZXJ0eSBhcyBQcm9wZXJ0eVBhdGgpLiR0YXJnZXQgPT09IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0O1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0aWYgKGN1cnJlbnRPYmplY3RSZXN0cmljdGlvbikge1xuXHRcdFx0XHRcdHJldHVybiBhbGxvd2VkRXhwcmVzc2lvbi5pbmNsdWRlcyhjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHQpO1xufTtcblxudHlwZSBFbnRpdHlPclNpbmdsZXRvbiA9IFNpbmdsZXRvbiB8IEVudGl0eVNldCB8IG51bGw7XG4vKipcbiAqIEdldHMgdGhlIHRhcmdldCBlbnRpdHlTZXQsIGl0cyBwYXJlbnQgYW5kIHRoZSBuYXZpZ2F0aW9uIHBhdGggZnJvbSB0aGUgcGFyZW50IHRvIHRoZSB0YXJnZXQgZW50aXR5U2V0XG4gKiBUaGUgdGFyZ2V0IGVudGl0eVNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG4gKiBUaGUgcGFyZW50IGVudGl0eVNldCBwb2ludGluZyB0byB0aGUgcHJldmlvdXMgZW50aXR5U2V0IHVzZWQgaW4gdGhlIHBhdGguXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEByZXR1cm5zIFRoZSB0YXJnZXQgZW50aXR5c2V0LCBpdHMgcGFyZW50IGFuZCB0aGUgbmF2aWdhdGlvbiBwYXRoXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRUYXJnZXRFbnRpdHlTZXRJbmZvID0gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+XG4pOiB7XG5cdHBhcmVudEVudGl0eVNldDogRW50aXR5T3JTaW5nbGV0b247XG5cdHRhcmdldEVudGl0eVNldDogRW50aXR5T3JTaW5nbGV0b247XG5cdHBhcmVudE5hdmlnYXRpb25QYXRoOiBzdHJpbmc7XG59ID0+IHtcblx0bGV0IHJlc2V0VmlzaXRlZE5hdlByb3BzID0gZmFsc2U7XG5cdGxldCB2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZTogc3RyaW5nW10gPSBbXTtcblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eU9yU2luZ2xldG9uID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0bGV0IHBhcmVudEVudGl0eVNldDogRW50aXR5T3JTaW5nbGV0b24gPSBudWxsO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlPclNpbmdsZXRvbiA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdGxldCBwYXJlbnROYXZpZ2F0aW9uUGF0aCA9IFwiXCI7XG5cblx0Zm9yIChjb25zdCBuYXZpZ2F0aW9uUHJvcGVydHkgb2YgZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykge1xuXHRcdGlmIChyZXNldFZpc2l0ZWROYXZQcm9wcykge1xuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUgPSBbXTtcblx0XHR9XG5cdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkubmFtZSk7XG5cdFx0cGFyZW50TmF2aWdhdGlvblBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZS5qb2luKFwiL1wiKTtcblx0XHRpZiAoaXNQcm9wZXJ0eShuYXZpZ2F0aW9uUHJvcGVydHkpIHx8ICFuYXZpZ2F0aW9uUHJvcGVydHkuY29udGFpbnNUYXJnZXQpIHtcblx0XHRcdC8vIFdlIHNob3VsZCBoYXZlIGEgbmF2aWdhdGlvblByb3BlcnR5QmluZGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhdGggc28gZmFyIHdoaWNoIGNhbiBjb25zaXN0IG9mIChbQ29udGFpbm1lbnROYXZQcm9wXS8pKltOYXZQcm9wXVxuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KHBhcmVudE5hdmlnYXRpb25QYXRoKSkge1xuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW3BhcmVudE5hdmlnYXRpb25QYXRoXTtcblx0XHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Ly8gSWYgd2UgcmVhY2hlZCBhIG5hdmlnYXRpb24gcHJvcGVydHkgd2l0aCBhIG5hdmlnYXRpb25wcm9wZXJ0eWJpbmRpbmcsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIHZpc2l0ZWQgcGF0aCBvbiB0aGUgbmV4dCBpdGVyYXRpb24gKGlmIHRoZXJlIGlzIG9uZSlcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gV2UgcmVhbGx5IHNob3VsZCBub3QgZW5kIHVwIGhlcmUgYnV0IGF0IGxlYXN0IGxldCdzIHRyeSB0byBhdm9pZCBpbmNvcnJlY3QgYmVoYXZpb3Jcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IG51bGw7XG5cdFx0XHRcdHJlc2V0VmlzaXRlZE5hdlByb3BzID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdHRhcmdldEVudGl0eVNldCA9IG51bGw7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHsgcGFyZW50RW50aXR5U2V0LCB0YXJnZXRFbnRpdHlTZXQsIHBhcmVudE5hdmlnYXRpb25QYXRoIH07XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHJlc3RyaWN0aW9ucyBzZXQgb24gdGhlIHBhcmVudCBuYXZpZ2F0aW9uLlxuICpcbiAqIEBwYXJhbSBkYXRhTW9kZWxPYmplY3RQYXRoIFRoZSBkYXRhTW9kZWxPYmplY3RQYXRoXG4gKiBAcGFyYW0gY2hlY2tGdW5jdGlvbiBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGFubm90YXRpb25cbiAqIEBwYXJhbSBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCBUaGUgZXh0cmFjdGlvbiBwYXJhbWV0ZXJzXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uLlxuICovXG5jb25zdCBjaGVja09uUGFyZW50TmF2aWdhdGlvbiA9IChcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aDx1bmtub3duPixcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPzogRXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGhcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wcyA9IGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXM7XG5cdGNvbnN0IHsgcGFyZW50RW50aXR5U2V0LCBwYXJlbnROYXZpZ2F0aW9uUGF0aCB9ID0gZ2V0VGFyZ2V0RW50aXR5U2V0SW5mbyhkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0bGV0IHJlc3RyaWN0aW9uczogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHwgdW5kZWZpbmVkLCB2aXNpdGVkTmF2UHJvcHM6IChQcm9wZXJ0eSB8IE5hdmlnYXRpb25Qcm9wZXJ0eSlbXTtcblx0Zm9yIChjb25zdCByZXN0cmljdGVkTmF2UHJvcCBvZiBwYXJlbnRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzID8/IFtdKSB7XG5cdFx0aWYgKHBhcmVudE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUpIHtcblx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24ocmVzdHJpY3RlZE5hdlByb3ApPy52YWx1ZU9mKCk7XG5cdFx0XHRpZiAocmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKGlzQ29uc3RhbnQoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbikpKSB7XG5cdFx0XHRcdFx0cmVzdHJpY3Rpb25zID0gY29uc3RhbnQocmVzdHJpY3Rpb25EZWZpbml0aW9uKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb25zdCBfbmF2aWdhdGlvblByb3BzID0gbmF2aWdhdGlvblByb3BzLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfbmF2aWdhdGlvblByb3BzO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uICYmXG5cdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMubGVuZ3RoIDwgZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/Lm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCAmJiAvLyBXZSBuZWVkIHRvIGdvIGJhY2t3YXJkIHRvIGdldCB0aGUgcmVsYXRpdmUgcGF0aFxuXHRcdFx0XHRcdFx0IShuYXZpZ2F0aW9uUHJvcHNbbmF2aWdhdGlvblByb3BzLmxlbmd0aCAtIDFdIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eSkucGFydG5lclxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0Ly8gVG8gZ28gYmFja3dhcmQgd2UgbmVlZCB0aGUgcGFydG5lclxuXHRcdFx0XHRcdFx0cmVzdHJpY3Rpb25zID0gdW5kZWZpbmVkO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRjb25zdCBwYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChcblx0XHRcdFx0XHRcdFx0KG5wKSA9PiBucC5uYW1lXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgcGF0aFZpc2l0b3JGdW5jdGlvbiA9IGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wYXRoVmlzaXRvclxuXHRcdFx0XHRcdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdFx0XHRcdFx0OiB1bmRlZmluZWQ7IC8vIHNlbmQgcGF0aFZpc2l0b3IgZnVuY3Rpb24gb25seSB3aGVuIGl0IGlzIGRlZmluZWQgYW5kIG9ubHkgc2VuZCBmdW5jdGlvbiBvciBkZWZpbmVkIGFzIGEgcGFyYW1ldGVyXG5cdFx0XHRcdFx0XHRyZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdHJldHVybiByZXN0cmljdGlvbnM7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHJlc3RyaWN0aW9ucyBzZXQgb24gdGhlIHRhcmdldCBlbnRpdHlTZXQuXG4gKlxuICogQHBhcmFtIGRhdGFNb2RlbE9iamVjdFBhdGggVGhlIGRhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEBwYXJhbSBjaGVja0Z1bmN0aW9uIFRoZSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYW5ub3RhdGlvblxuICogQHBhcmFtIGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoIFRoZSBleHRyYWN0aW9uIHBhcmFtZXRlcnNcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24uXG4gKi9cbmNvbnN0IGNoZWNrT25UYXJnZXQgPSAoXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGg8dW5rbm93bj4sXG5cdGNoZWNrRnVuY3Rpb246IEZ1bmN0aW9uLFxuXHRleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD86IEV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4gfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0bGV0IHRhcmdldFJlc3RyaWN0aW9ucztcblx0Y29uc3QgeyB0YXJnZXRFbnRpdHlTZXQgfSA9IGdldFRhcmdldEVudGl0eVNldEluZm8oZGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdGxldCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdGlmICh0YXJnZXRFbnRpdHlTZXQgPT09IG51bGwgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uID09PSB1bmRlZmluZWQpIHtcblx0XHRyZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHRhcmdldEVudGl0eVR5cGU/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHR9XG5cdGlmIChyZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IHBhdGhSZWxhdGl2ZUxvY2F0aW9uID0gZ2V0UmVsYXRpdmVQYXRocyhkYXRhTW9kZWxPYmplY3RQYXRoKTtcblx0XHRjb25zdCBwYXRoVmlzaXRvckZ1bmN0aW9uID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/LnBhdGhWaXNpdG9yXG5cdFx0XHQ/IGdldFBhdGhWaXNpdG9yRm9yU2luZ2xldG9uKGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoLnBhdGhWaXNpdG9yLCBwYXRoUmVsYXRpdmVMb2NhdGlvbilcblx0XHRcdDogdW5kZWZpbmVkO1xuXHRcdHRhcmdldFJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiwgcGF0aFJlbGF0aXZlTG9jYXRpb24sIHVuZGVmaW5lZCwgcGF0aFZpc2l0b3JGdW5jdGlvbiksXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0fVxuXHRyZXR1cm4gdGFyZ2V0UmVzdHJpY3Rpb25zO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSByZXN0cmljdGlvbnMgYXBwbGllZCBvbiB0aGUgdGFyZ2V0XG4gKiBUaGUgcmVzdHJpY3Rpb24gaXMgY2FsdWNsYXRlZCBhY2NvcmRpbmcgdG8gdGhlIHBhcmVudCBhbmQgdGhlIHRhcmdldC5cbiAqXG4gKiBAcGFyYW0gZGF0YU1vZGVsT2JqZWN0UGF0aCBUaGUgZGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHBhcmFtIGNoZWNrRnVuY3Rpb24gVGhlIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBhbm5vdGF0aW9uXG4gKiBAcGFyYW0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGggVGhlIGV4dHJhY3Rpb24gcGFyYW1ldGVyc1xuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IGNoZWNrT25QYXRoID0gZnVuY3Rpb24gKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoPHVua25vd24+IHwgdW5kZWZpbmVkLFxuXHRjaGVja0Z1bmN0aW9uOiBGdW5jdGlvbixcblx0ZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/OiBFeHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aFxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0aWYgKCFkYXRhTW9kZWxPYmplY3RQYXRoIHx8ICFkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0KSB7XG5cdFx0cmV0dXJuIGNvbnN0YW50KHRydWUpO1xuXHR9XG5cblx0ZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGRhdGFNb2RlbE9iamVjdFBhdGgsIGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoPy5wcm9wZXJ0eVBhdGgpO1xuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgYmUgZXZhbHVhdGVkIGFzIFBhcmVudEVudGl0eVNldC5OYXZSZXN0cmljdGlvbnNbTmF2UHJvcGVydHlQYXRoXSB8fCBUYXJnZXRFbnRpdHlTZXQuUmVzdHJpY3Rpb25zXG5cdGNvbnN0IHJlc3RyaWN0aW9ucyA9IGNoZWNrT25QYXJlbnROYXZpZ2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGgsIGNoZWNrRnVuY3Rpb24sIGV4dHJhY3Rpb25QYXJhbWV0ZXJzT25QYXRoKTtcblx0Y29uc3QgdGFyZ2V0UmVzdHJpY3Rpb25zID0gZXh0cmFjdGlvblBhcmFtZXRlcnNPblBhdGg/Lmlnbm9yZVRhcmdldENvbGxlY3Rpb25cblx0XHQ/IHVuZGVmaW5lZFxuXHRcdDogY2hlY2tPblRhcmdldChkYXRhTW9kZWxPYmplY3RQYXRoLCBjaGVja0Z1bmN0aW9uLCBleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aCk7XG5cblx0cmV0dXJuIChcblx0XHRyZXN0cmljdGlvbnMgfHwgdGFyZ2V0UmVzdHJpY3Rpb25zIHx8IChleHRyYWN0aW9uUGFyYW1ldGVyc09uUGF0aD8uYXV0aG9yaXplVW5yZXNvbHZhYmxlID8gdW5yZXNvbHZhYmxlRXhwcmVzc2lvbiA6IGNvbnN0YW50KHRydWUpKVxuXHQpO1xufTtcblxuLyoqXG4gKiBTZXQgYSB0cmFpbGluZyBzbGFzaCB0byBhIHBhdGggaWYgbm90IGFscmVhZHkgc2V0LlxuICpcbiAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoXG4gKiBAcmV0dXJucyBUaGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2hcbiAqL1xuY29uc3Qgc2V0VHJhaWxpbmdTbGFzaCA9IGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRpZiAocGF0aC5sZW5ndGggJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0cmV0dXJuIGAke3BhdGh9L2A7XG5cdH1cblx0cmV0dXJuIHBhdGg7XG59O1xuXG4vLyBUaGlzIGhlbHBlciBtZXRob2QgaXMgdXNlZCB0byBhZGQgcmVsYXRpdmUgcGF0aCBsb2NhdGlvbiBhcmd1bWVudCB0byBzaW5nbGV0b25QYXRoVmlzaXRvckZ1bmN0aW9uIGkuZS4gcGF0aFZpc2l0b3Jcbi8vIHBhdGhWaXNpdG9yIG1ldGhvZCBpcyB1c2VkIGxhdGVyIHRvIGdldCB0aGUgY29ycmVjdCBiaW5kaW5ncyBmb3Igc2luZ2xldG9uIGVudGl0eVxuLy8gbWV0aG9kIGlzIGludm9rZWQgbGF0ZXIgaW4gcGF0aEluTW9kZWwoKSBtZXRob2QgdG8gZ2V0IHRoZSBjb3JyZWN0IGJpbmRpbmcuXG5jb25zdCBnZXRQYXRoVmlzaXRvckZvclNpbmdsZXRvbiA9IGZ1bmN0aW9uIChwYXRoVmlzaXRvcjogRnVuY3Rpb24sIHBhdGhSZWxhdGl2ZUxvY2F0aW9uOiBzdHJpbmdbXSk6IEZ1bmN0aW9uIHtcblx0cmV0dXJuIGZ1bmN0aW9uIChwYXRoOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gcGF0aFZpc2l0b3IocGF0aCwgcGF0aFJlbGF0aXZlTG9jYXRpb24pO1xuXHR9O1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxnQkFBZ0IsR0FBRyxVQUFVQyxXQUFxRCxFQUFFQyxXQUFxQixFQUFZO0lBQ2pJLE9BQU9DLHVCQUF1QixDQUFDRixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUcsZUFBZSxFQUFFSCxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUksb0JBQW9CLEVBQUVILFdBQVcsQ0FBQyxDQUFDSSxHQUFHLENBQUVDLEVBQUUsSUFBS0EsRUFBRSxDQUFDQyxJQUFJLENBQUM7RUFDbEksQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUEE7RUFRTyxNQUFNTCx1QkFBdUIsR0FBRyxVQUN0Q0YsV0FBb0MsRUFHQTtJQUFBLElBRnBDUSxlQUFrRCx1RUFBRyxFQUFFO0lBQUEsSUFDdkRQLFdBQVcsdUVBQUcsS0FBSztJQUVuQixNQUFNUSxjQUFjLEdBQUlDLFFBQTJDLElBQXdDO01BQzFHLElBQUlDLFVBQVUsR0FBRyxDQUFDO01BQ2xCLE9BQU9ELFFBQVEsQ0FBQ0UsTUFBTSxHQUFHLENBQUMsSUFBSUQsVUFBVSxJQUFJRCxRQUFRLENBQUNFLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDaEUsTUFBTUMsVUFBVSxH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
|
|
@@ -19,9 +19,9 @@ import type {
|
|
|
19
19
|
EntityTypeAnnotations_Capabilities,
|
|
20
20
|
SingletonAnnotations_Capabilities
|
|
21
21
|
} from "@sap-ux/vocabularies-types/vocabularies/Capabilities_Edm";
|
|
22
|
+
import type { BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
23
|
+
import { constant, equal, getExpressionFromAnnotation, isConstant, unresolvableExpression } from "sap/fe/base/BindingToolkit";
|
|
22
24
|
import type { PageContextPathTarget } from "sap/fe/core/converters/TemplateConverter";
|
|
23
|
-
import type { BindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
24
|
-
import { constant, equal, getExpressionFromAnnotation, isConstant, unresolvableExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
25
25
|
import {
|
|
26
26
|
isAnnotationTerm,
|
|
27
27
|
isComplexType,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit"], function (Log, BindingToolkit) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -45,4 +45,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/BindingToolkit"], function (
|
|
|
45
45
|
_exports.getTitleExpression = getTitleExpression;
|
|
46
46
|
return _exports;
|
|
47
47
|
}, false);
|
|
48
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRUaXRsZUV4cHJlc3Npb24iLCJlbnRpdHlUeXBlIiwiaGVhZGVySW5mb1RpdGxlIiwiYW5ub3RhdGlvbnMiLCJVSSIsIkhlYWRlckluZm8iLCJUaXRsZSIsIiRUeXBlIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiVmFsdWUiLCJMb2ciLCJlcnJvciIsIlR5cGVOYW1lIiwic2VtYW50aWNLZXlzIiwiQ29tbW9uIiwiU2VtYW50aWNLZXkiLCJjb25jYXQiLCJtYXAiLCJrZXkiLCJwYXRoSW5Nb2RlbCIsInZhbHVlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFbnRpdHlUeXBlSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5VHlwZSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBEYXRhRmllbGQsIERhdGFGaWVsZEZvckFubm90YXRpb24gfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgeyBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGNvbmNhdCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBwYXRoSW5Nb2RlbCB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuXG4vLyBDb2xsZWN0aW9uIG9mIGhlbHBlciBmdW5jdGlvbnMgdG8gcmV0cmlldmUgaW5mb3JtYXRpb24gZnJvbSBhbiBFbnRpdHlUeXBlLlxuXG4vLyBUaGlzIGlzIHN0aWxsIGEgd29yayBpbiBwcm9ncmVzc1xuXG4vKipcbiAqIFJldHJpZXZlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVxdWlyZWQgdG8gZGlzcGxheSB0aGUgdGl0bGUgb2YgYW4gZW50aXR5LlxuICpcbiAqIFRoaXMgaXMgdXN1YWxseSBkZWZpbmVkIGFzOlxuICogIC0gdGhlIEhlYWRlckluZm8uVGl0bGUgdmFsdWVcbiAqICAtIHRoZSBTZW1hbnRpY0tleXMgcHJvcGVydGllc1xuICogIC0gdGhlIGtleXMgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0gZW50aXR5VHlwZSBUaGUgdGFyZ2V0IGVudGl0eVR5cGVcbiAqIEByZXR1cm5zIFRoZSB0aXRsZSBiaW5kaW5nIGV4cHJlc3Npb25cbiAqL1xuZXhwb3J0IGNvbnN0IGdldFRpdGxlRXhwcmVzc2lvbiA9IChlbnRpdHlUeXBlOiBFbnRpdHlUeXBlKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPHVua25vd24+IHwgdW5kZWZpbmVkID0+IHtcblx0Ly8gSGVhZGVySW5mbyBjYW4gYmUgYSBbRGF0YUZpZWxkXSBhbmQgYW55IG9mIGl0cyBjaGlsZHJlbiwgb3IgYSBbRGF0YUZpZWxkRm9yQW5ub3RhdGlvbl0gdGFyZ2V0aW5nIFtDb25uZWN0ZWRGaWVsZHNdKCNDb25uZWN0ZWRGaWVsZHMpLlxuXHRjb25zdCBoZWFkZXJJbmZvVGl0bGUgPSBlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uSGVhZGVySW5mbz8uVGl0bGUgYXMgRGF0YUZpZWxkIHwgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbjtcblx0aWYgKGhlYWRlckluZm9UaXRsZSkge1xuXHRcdHN3aXRjaCAoaGVhZGVySW5mb1RpdGxlLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZDpcblx0XHRcdFx0cmV0dXJuIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihoZWFkZXJJbmZvVGl0bGUuVmFsdWUpO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBbm5vdGF0aW9uOlxuXHRcdFx0XHRMb2cuZXJyb3IoXCJEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHdpdGggY29ubmVjdGVkIGZpZWxkcyBub3Qgc3VwcG9ydGVkIGZvciBIZWFkZXJJbmZvLlRpdGxlXCIpO1xuXHRcdFx0XHRyZXR1cm4gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5IZWFkZXJJbmZvPy5UeXBlTmFtZSk7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IHNlbWFudGljS2V5cyA9IGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LkNvbW1vbj8uU2VtYW50aWNLZXk7XG5cdGlmIChzZW1hbnRpY0tleXMpIHtcblx0XHRyZXR1cm4gY29uY2F0KC4uLnNlbWFudGljS2V5cy5tYXAoKGtleSkgPT4gcGF0aEluTW9kZWwoa2V5LnZhbHVlKSkpO1xuXHR9XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQU9BOztFQUVBOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxrQkFBa0IsR0FBSUMsVUFBc0IsSUFBb0Q7SUFBQTtJQUM1RztJQUNBLE1BQU1DLGVBQWUsNEJBQUdELFVBQVUsQ0FBQ0UsV0FBVyxvRkFBdEIsc0JBQXdCQyxFQUFFLHFGQUExQix1QkFBNEJDLFVBQVUsMkRBQXRDLHVCQUF3Q0MsS0FBMkM7SUFDM0csSUFBSUosZUFBZSxFQUFFO01BQ3BCLFFBQVFBLGVBQWUsQ0FBQ0ssS0FBSztRQUM1QjtVQUNDLE9BQU9DLDJCQUEyQixDQUFDTixlQUFlLENBQUNPLEtBQUssQ0FBQztRQUMxRDtVQUNDQyxHQUFHLENBQUNDLEtBQUssQ0FBQyxpRkFBaUYsQ0FBQztVQUM1RixPQUFPSCwyQkFBMkIsMkJBQUNQLFVBQVUsQ0FBQ0UsV0FBVyxxRkFBdEIsdUJBQXdCQyxFQUFFLHFGQUExQix1QkFBNEJDLFVBQVUsMkRBQXRDLHVCQUF3Q08sUUFBUSxDQUFDO01BQUM7SUFFeEY7SUFDQSxNQUFNQyxZQUFZLDZCQUFHWixVQUFVLENBQUNFLFdBQVcscUZBQXRCLHVCQUF3QlcsTUFBTSwyREFBOUIsdUJBQWdDQyxXQUFXO0lBQ2hFLElBQUlGLFlBQVksRUFBRTtNQUNqQixPQUFPRyxNQUFNLENBQUMsR0FBR0gsWUFBWSxDQUFDSSxHQUFHLENBQUVDLEdBQUcsSUFBS0MsV0FBVyxDQUFDRCxHQUFHLENBQUNFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEU7RUFDRCxDQUFDO0VBQUM7RUFBQTtBQUFBIn0=
|
|
@@ -2,8 +2,8 @@ import type { EntityType } from "@sap-ux/vocabularies-types";
|
|
|
2
2
|
import type { DataField, DataFieldForAnnotation } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
3
3
|
import { UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
4
4
|
import Log from "sap/base/Log";
|
|
5
|
-
import type { BindingToolkitExpression } from "sap/fe/
|
|
6
|
-
import { concat, getExpressionFromAnnotation, pathInModel } from "sap/fe/
|
|
5
|
+
import type { BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
6
|
+
import { concat, getExpressionFromAnnotation, pathInModel } from "sap/fe/base/BindingToolkit";
|
|
7
7
|
|
|
8
8
|
// Collection of helper functions to retrieve information from an EntityType.
|
|
9
9
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2024 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/fe/
|
|
5
|
+
sap.ui.define(["sap/fe/base/BindingToolkit", "../converters/annotations/DataField", "../helpers/BindingHelper", "../helpers/TypeGuards"], function (BindingToolkit, DataField, BindingHelper, TypeGuards) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -138,4 +138,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingToolkit", "../converters/annotations/
|
|
|
138
138
|
};
|
|
139
139
|
return _exports;
|
|
140
140
|
}, false);
|
|
141
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJyZWxhdGl2ZVBhdGgiLCJmaWVsZENvbnRyb2xFeHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJpc0NvbnN0YW50Iiwib3IiLCJlcXVhbCIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiaXNOb25FZGl0YWJsZUV4cHJlc3Npb24iLCJoYXNGaWVsZENvbnRyb2xOb3RNYW5kYXRvcnkiLCJkYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiZmllbGRDb250cm9sIiwidG9TdHJpbmciLCJpc1N0YXRpY2FsbHlNYW5kYXRvcnkiLCJ0YXJnZXQiLCJmaWVsZEZpZWxkQ29udHJvbCIsImlzUHJvcGVydHkiLCJpc0RhdGFGaWVsZEZvckFubm90YXRpb24iLCJpc0RhdGFGaWVsZCIsInVuZGVmaW5lZCIsIlZhbHVlIiwiJHRhcmdldCIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwib0ZpZWxkQ29udHJvbFZhbHVlIiwiZmllbGRDb250cm9sVmFsdWUiLCJfaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiIsImFjdGlvblBhcmFtZXRlciIsImFjdGlvblRhcmdldCIsImNvbnZlcnRlZFR5cGVzIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJmaWVsZENvbnRyb2xFeHAiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRDb250cm9sSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGQsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZEZvckFubm90YXRpb24sXG5cdERhdGFQb2ludCxcblx0RGF0YVBvaW50VHlwZSxcblx0RGF0YVBvaW50VHlwZVR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGVxdWFsLCBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24sIGlzQ29uc3RhbnQsIG9yIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGlzRGF0YUZpZWxkLCBpc0RhdGFGaWVsZEZvckFubm90YXRpb24gfSBmcm9tIFwiLi4vY29udmVydGVycy9hbm5vdGF0aW9ucy9EYXRhRmllbGRcIjtcbmltcG9ydCB7IGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IgfSBmcm9tIFwiLi4vaGVscGVycy9CaW5kaW5nSGVscGVyXCI7XG5pbXBvcnQgeyBpc1Byb3BlcnR5IH0gZnJvbSBcIi4uL2hlbHBlcnMvVHlwZUd1YXJkc1wiO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVhZE9ubHlFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvVGFyZ2V0OiBQcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCB1bmRlZmluZWQsXG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZ1tdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbCwgcmVsYXRpdmVQYXRoKTtcblx0aWYgKCFpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDEpLCBlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjFcIikpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBvcihcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvUmVhZE9ubHlcIiksXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCAxKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMVwiKVxuXHRcdCk7XG5cdH1cbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIGRpc2FibGVkIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCBBcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIGZpZWxkIGNvbnRyb2wgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3MgZGlzYWJsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvVGFyZ2V0OiBQcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlVHlwZXMgfCB1bmRlZmluZWQsXG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZ1tdXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHByZXNzaW9uID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbCwgcmVsYXRpdmVQYXRoKTtcblx0aWYgKCFpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cHJlc3Npb24pKSB7XG5cdFx0cmV0dXJuIG9yKGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDApLCBlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjBcIikpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBvcihcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvSW5hcHBsaWNhYmxlXCIpLFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgMCksXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCBcIjBcIilcblx0XHQpO1xuXHR9XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyBlZGl0YWJsZSBvciBub3QuXG4gKlxuICogQHBhcmFtIG9UYXJnZXQgVGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhRmllbGRcbiAqIEBwYXJhbSByZWxhdGl2ZVBhdGggQXJyYXkgb2YgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIHBvaW50aW5nIHRvIHRoZSBsb2NhdGlvbiBvZiBmaWVsZCBjb250cm9sIHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIG5vdCBlZGl0YWJsZVxuICovXG5leHBvcnQgY29uc3QgaXNOb25FZGl0YWJsZUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9UYXJnZXQ6IFByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBvcihpc1JlYWRPbmx5RXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpLCBpc0Rpc2FibGVkRXhwcmVzc2lvbihvVGFyZ2V0LCByZWxhdGl2ZVBhdGgpKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyBpZiB0aGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBoYXMgYSBmaWVsZENvbnRyb2wgdGhhdCBpcyBub3Qgc2V0IHRvIE1hbmRhdG9yeS5cbiAqXG4gKiBAcGFyYW0gZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBUaGUgZGF0YUZpZWxkRm9yQW5ub3RhdGlvbiBiZWluZyBwcm9jZXNzZWRcbiAqIEByZXR1cm5zIFRydWUgaWYgaXQgaGFzIGEgZmllbGRDb250cm9sIHNldCBhbmQgbm90IE1hbmRhdG9yeS5cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0ZpZWxkQ29udHJvbE5vdE1hbmRhdG9yeSA9IGZ1bmN0aW9uIChkYXRhRmllbGRGb3JBbm5vdGF0aW9uOiBEYXRhRmllbGRGb3JBbm5vdGF0aW9uKTogYm9vbGVhbiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbCA9IGRhdGFGaWVsZEZvckFubm90YXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRyZXR1cm4gZmllbGRDb250cm9sICYmIGZpZWxkQ29udHJvbC50b1N0cmluZygpICE9PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiID8gdHJ1ZSA6IGZhbHNlO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSB0YXJnZXQgaGFzIGEgZmllbGQgY29udHJvbCBhbm5vdGF0aW9uIHdpdGggc3RhdGljIHZhbHVlIG1hbmRhdG9yeSAuXG4gKlxuICogQHBhcmFtIHRhcmdldCBUaGUgdGFyZ2V0IHRvIGJlIHByb2Nlc3NlZFxuICogQHJldHVybnMgVHJ1ZSBpZiBpdCBoYXMgYSBzdGF0aWMgbWFuZGF0b3J5IGZpZWxkIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXRpY2FsbHlNYW5kYXRvcnkodGFyZ2V0OiBEYXRhRmllbGQgfCBEYXRhRmllbGRGb3JBbm5vdGF0aW9uIHwgRGF0YVBvaW50IHwgUHJvcGVydHkgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0Y29uc3QgZmllbGRGaWVsZENvbnRyb2wgPSB0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0aWYgKGlzUHJvcGVydHkodGFyZ2V0KSB8fCBpc0RhdGFGaWVsZEZvckFubm90YXRpb24odGFyZ2V0IGFzIERhdGFGaWVsZEZvckFubm90YXRpb24pKSB7XG5cdFx0cmV0dXJuIGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xuXHR9XG5cdGlmIChpc0RhdGFGaWVsZCh0YXJnZXQpKSB7XG5cdFx0aWYgKGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKGZpZWxkRmllbGRDb250cm9sPy50b1N0cmluZygpICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRhcmdldD8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbD8udG9TdHJpbmcoKSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcblx0XHR9XG5cdH1cblx0cmV0dXJuICh0YXJnZXQgYXMgRGF0YVBvaW50KT8uVmFsdWU/LiR0YXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbD8udG9TdHJpbmcoKSA9PT0gXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9NYW5kYXRvcnlcIjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgcmVhZCBvbmx5IG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCBBcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIGZpZWxkIGNvbnRyb2wgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3MgcmVhZCBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBpc1JlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1RhcmdldDogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZSB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IG9GaWVsZENvbnRyb2xWYWx1ZSA9IG9UYXJnZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0Y29uc3QgZmllbGRDb250cm9sVmFsdWUgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob0ZpZWxkQ29udHJvbFZhbHVlLCByZWxhdGl2ZVBhdGgpO1xuXHRyZXR1cm4gX2lzUmVxdWlyZWRFeHByZXNzaW9uKGZpZWxkQ29udHJvbFZhbHVlKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgYWN0aW9uIHBhcmFtZXRlciBpcyByZXF1aXJlZC5cbiAqXG4gKiBAcGFyYW0gYWN0aW9uUGFyYW1ldGVyIEFjdGlvbiBwYXJhbWV0ZXJcbiAqIEBwYXJhbSBhY3Rpb25UYXJnZXQgQWN0aW9uIGRlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZWRUeXBlcyBDb252ZXJ0ZWQgTWV0YWRhdGFcbiAqIEByZXR1cm5zIElzIHJlcXVpcmVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgcGFyYW1ldGVyLlxuICovXG5leHBvcnQgY29uc3QgaXNBY3Rpb25QYXJhbWV0ZXJSZXF1aXJlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdGFjdGlvblBhcmFtZXRlcjogQWN0aW9uUGFyYW1ldGVyLFxuXHRhY3Rpb25UYXJnZXQ6IEFjdGlvbixcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhXG4pOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRjb25zdCBiaW5kaW5nUGFyYW1ldGVyRnVsbE5hbWUgPSBhY3Rpb25UYXJnZXQuaXNCb3VuZCA/IGFjdGlvblRhcmdldC5wYXJhbWV0ZXJzWzBdPy5mdWxseVF1YWxpZmllZE5hbWUgOiB1bmRlZmluZWQ7XG5cdGNvbnN0IGZpZWxkQ29udHJvbFZhbHVlID0gYWN0aW9uUGFyYW1ldGVyLmFubm90YXRpb25zPy5Db21tb24/LkZpZWxkQ29udHJvbDtcblx0Y29uc3QgZmllbGRDb250cm9sRXhwID0gZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZpZWxkQ29udHJvbFZhbHVlLCBbXSwgdW5kZWZpbmVkLCAocGF0aDogc3RyaW5nKSA9PlxuXHRcdGJpbmRpbmdDb250ZXh0UGF0aFZpc2l0b3IocGF0aCwgY29udmVydGVkVHlwZXMsIGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSlcblx0KTtcblxuXHRyZXR1cm4gX2lzUmVxdWlyZWRFeHByZXNzaW9uKGZpZWxkQ29udHJvbEV4cCk7XG59O1xuXG5jb25zdCBfaXNSZXF1aXJlZEV4cHJlc3Npb24gPSAoZmllbGRDb250cm9sRXhwOiBCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb248c3RyaW5nIHwgbnVtYmVyPik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiA9PiB7XG5cdHJldHVybiBvcihcblx0XHRpc0NvbnN0YW50KGZpZWxkQ29udHJvbEV4cCkgJiYgZXF1YWwoZmllbGRDb250cm9sRXhwLCBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiKSxcblx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHAsIDcpLFxuXHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cCwgXCI3XCIpXG5cdCk7XG59O1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7O0VBZUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDTyxNQUFNQSxvQkFBb0IsR0FBRyxVQUNuQ0MsT0FBMkUsRUFDM0VDLFlBQXVCLEVBQ2E7SUFBQTtJQUNwQyxNQUFNQyxzQkFBc0IsR0FBR0MsMkJBQTJCLENBQUNILE9BQU8sYUFBUEEsT0FBTywrQ0FBUEEsT0FBTyxDQUFFSSxXQUFXLGtGQUFwQixxQkFBc0JD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
|
|
141
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1JlYWRPbmx5RXhwcmVzc2lvbiIsIm9UYXJnZXQiLCJyZWxhdGl2ZVBhdGgiLCJmaWVsZENvbnRyb2xFeHByZXNzaW9uIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiYW5ub3RhdGlvbnMiLCJDb21tb24iLCJGaWVsZENvbnRyb2wiLCJpc0NvbnN0YW50Iiwib3IiLCJlcXVhbCIsImlzRGlzYWJsZWRFeHByZXNzaW9uIiwiaXNOb25FZGl0YWJsZUV4cHJlc3Npb24iLCJoYXNGaWVsZENvbnRyb2xOb3RNYW5kYXRvcnkiLCJkYXRhRmllbGRGb3JBbm5vdGF0aW9uIiwiZmllbGRDb250cm9sIiwidG9TdHJpbmciLCJpc1N0YXRpY2FsbHlNYW5kYXRvcnkiLCJ0YXJnZXQiLCJmaWVsZEZpZWxkQ29udHJvbCIsImlzUHJvcGVydHkiLCJpc0RhdGFGaWVsZEZvckFubm90YXRpb24iLCJpc0RhdGFGaWVsZCIsInVuZGVmaW5lZCIsIlZhbHVlIiwiJHRhcmdldCIsImlzUmVxdWlyZWRFeHByZXNzaW9uIiwib0ZpZWxkQ29udHJvbFZhbHVlIiwiZmllbGRDb250cm9sVmFsdWUiLCJfaXNSZXF1aXJlZEV4cHJlc3Npb24iLCJpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiIsImFjdGlvblBhcmFtZXRlciIsImFjdGlvblRhcmdldCIsImNvbnZlcnRlZFR5cGVzIiwiYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lIiwiaXNCb3VuZCIsInBhcmFtZXRlcnMiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJmaWVsZENvbnRyb2xFeHAiLCJwYXRoIiwiYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRDb250cm9sSGVscGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQWN0aW9uLCBBY3Rpb25QYXJhbWV0ZXIsIENvbnZlcnRlZE1ldGFkYXRhLCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUge1xuXHREYXRhRmllbGQsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdERhdGFGaWVsZEZvckFubm90YXRpb24sXG5cdERhdGFQb2ludCxcblx0RGF0YVBvaW50VHlwZSxcblx0RGF0YVBvaW50VHlwZVR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBlcXVhbCwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uLCBpc0NvbnN0YW50LCBvciB9IGZyb20gXCJzYXAvZmUvYmFzZS9CaW5kaW5nVG9vbGtpdFwiO1xuaW1wb3J0IHsgaXNEYXRhRmllbGQsIGlzRGF0YUZpZWxkRm9yQW5ub3RhdGlvbiB9IGZyb20gXCIuLi9jb252ZXJ0ZXJzL2Fubm90YXRpb25zL0RhdGFGaWVsZFwiO1xuaW1wb3J0IHsgYmluZGluZ0NvbnRleHRQYXRoVmlzaXRvciB9IGZyb20gXCIuLi9oZWxwZXJzL0JpbmRpbmdIZWxwZXJcIjtcbmltcG9ydCB7IGlzUHJvcGVydHkgfSBmcm9tIFwiLi4vaGVscGVycy9UeXBlR3VhcmRzXCI7XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIHJlYWQgb25seSBvciBub3QuXG4gKlxuICogQHBhcmFtIG9UYXJnZXQgVGhlIHRhcmdldCBwcm9wZXJ0eSBvciBEYXRhRmllbGRcbiAqIEBwYXJhbSByZWxhdGl2ZVBhdGggQXJyYXkgb2YgbmF2aWdhdGlvbiBwcm9wZXJ0aWVzIHBvaW50aW5nIHRvIHRoZSBsb2NhdGlvbiBvZiBmaWVsZCBjb250cm9sIHByb3BlcnR5XG4gKiBAcmV0dXJucyBUaGUgYmluZGluZyBleHByZXNzaW9uIHJlc29sdmluZyB0byBhIEJvb2xlYW4gYmVpbmcgdHJ1ZSBpZiBpdCdzIHJlYWQgb25seVxuICovXG5leHBvcnQgY29uc3QgaXNSZWFkT25seUV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9UYXJnZXQ6IFByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sLCByZWxhdGl2ZVBhdGgpO1xuXHRpZiAoIWlzQ29uc3RhbnQoZmllbGRDb250cm9sRXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gb3IoZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgMSksIGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMVwiKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG9yKFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9SZWFkT25seVwiKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIDEpLFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCIxXCIpXG5cdFx0KTtcblx0fVxufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiB0aGUgcHJvcGVydHkgaXMgZGlzYWJsZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyBkaXNhYmxlZFxuICovXG5leHBvcnQgY29uc3QgaXNEaXNhYmxlZEV4cHJlc3Npb24gPSBmdW5jdGlvbiAoXG5cdG9UYXJnZXQ6IFByb3BlcnR5IHwgRGF0YUZpZWxkQWJzdHJhY3RUeXBlcyB8IERhdGFQb2ludFR5cGVUeXBlcyB8IHVuZGVmaW5lZCxcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nW11cbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGZpZWxkQ29udHJvbEV4cHJlc3Npb24gPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24ob1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sLCByZWxhdGl2ZVBhdGgpO1xuXHRpZiAoIWlzQ29uc3RhbnQoZmllbGRDb250cm9sRXhwcmVzc2lvbikpIHtcblx0XHRyZXR1cm4gb3IoZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgMCksIGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMFwiKSk7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIG9yKFxuXHRcdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwcmVzc2lvbiwgXCJDb21tb24uRmllbGRDb250cm9sVHlwZS9JbmFwcGxpY2FibGVcIiksXG5cdFx0XHRlcXVhbChmaWVsZENvbnRyb2xFeHByZXNzaW9uLCAwKSxcblx0XHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cHJlc3Npb24sIFwiMFwiKVxuXHRcdCk7XG5cdH1cbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBiaW5kaW5nIGV4cHJlc3Npb24gdG8gY2hlY2sgaWYgdGhlIHByb3BlcnR5IGlzIGVkaXRhYmxlIG9yIG5vdC5cbiAqXG4gKiBAcGFyYW0gb1RhcmdldCBUaGUgdGFyZ2V0IHByb3BlcnR5IG9yIERhdGFGaWVsZFxuICogQHBhcmFtIHJlbGF0aXZlUGF0aCBBcnJheSBvZiBuYXZpZ2F0aW9uIHByb3BlcnRpZXMgcG9pbnRpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIGZpZWxkIGNvbnRyb2wgcHJvcGVydHlcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nIGV4cHJlc3Npb24gcmVzb2x2aW5nIHRvIGEgQm9vbGVhbiBiZWluZyB0cnVlIGlmIGl0J3Mgbm90IGVkaXRhYmxlXG4gKi9cbmV4cG9ydCBjb25zdCBpc05vbkVkaXRhYmxlRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0b1RhcmdldDogUHJvcGVydHkgfCBEYXRhRmllbGRBYnN0cmFjdFR5cGVzIHwgRGF0YVBvaW50VHlwZVR5cGVzIHwgdW5kZWZpbmVkLFxuXHRyZWxhdGl2ZVBhdGg/OiBzdHJpbmdbXVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIG9yKGlzUmVhZE9ubHlFeHByZXNzaW9uKG9UYXJnZXQsIHJlbGF0aXZlUGF0aCksIGlzRGlzYWJsZWRFeHByZXNzaW9uKG9UYXJnZXQsIHJlbGF0aXZlUGF0aCkpO1xufTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBkYXRhRmllbGRGb3JBbm5vdGF0aW9uIGhhcyBhIGZpZWxkQ29udHJvbCB0aGF0IGlzIG5vdCBzZXQgdG8gTWFuZGF0b3J5LlxuICpcbiAqIEBwYXJhbSBkYXRhRmllbGRGb3JBbm5vdGF0aW9uIFRoZSBkYXRhRmllbGRGb3JBbm5vdGF0aW9uIGJlaW5nIHByb2Nlc3NlZFxuICogQHJldHVybnMgVHJ1ZSBpZiBpdCBoYXMgYSBmaWVsZENvbnRyb2wgc2V0IGFuZCBub3QgTWFuZGF0b3J5LlxuICovXG5leHBvcnQgY29uc3QgaGFzRmllbGRDb250cm9sTm90TWFuZGF0b3J5ID0gZnVuY3Rpb24gKGRhdGFGaWVsZEZvckFubm90YXRpb246IERhdGFGaWVsZEZvckFubm90YXRpb24pOiBib29sZWFuIHtcblx0Y29uc3QgZmllbGRDb250cm9sID0gZGF0YUZpZWxkRm9yQW5ub3RhdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5GaWVsZENvbnRyb2w7XG5cdHJldHVybiBmaWVsZENvbnRyb2wgJiYgZmllbGRDb250cm9sLnRvU3RyaW5nKCkgIT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCIgPyB0cnVlIDogZmFsc2U7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgaWYgdGhlIHRhcmdldCBoYXMgYSBmaWVsZCBjb250cm9sIGFubm90YXRpb24gd2l0aCBzdGF0aWMgdmFsdWUgbWFuZGF0b3J5IC5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgdG8gYmUgcHJvY2Vzc2VkXG4gKiBAcmV0dXJucyBUcnVlIGlmIGl0IGhhcyBhIHN0YXRpYyBtYW5kYXRvcnkgZmllbGQgY29udHJvbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RhdGljYWxseU1hbmRhdG9yeSh0YXJnZXQ6IERhdGFGaWVsZCB8IERhdGFGaWVsZEZvckFubm90YXRpb24gfCBEYXRhUG9pbnQgfCBQcm9wZXJ0eSB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRjb25zdCBmaWVsZEZpZWxkQ29udHJvbCA9IHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRpZiAoaXNQcm9wZXJ0eSh0YXJnZXQpIHx8IGlzRGF0YUZpZWxkRm9yQW5ub3RhdGlvbih0YXJnZXQgYXMgRGF0YUZpZWxkRm9yQW5ub3RhdGlvbikpIHtcblx0XHRyZXR1cm4gZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCI7XG5cdH1cblx0aWYgKGlzRGF0YUZpZWxkKHRhcmdldCkpIHtcblx0XHRpZiAoZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgPT09IFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCIpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRpZiAoZmllbGRGaWVsZENvbnRyb2w/LnRvU3RyaW5nKCkgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdGFyZ2V0Py5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gKHRhcmdldCBhcyBEYXRhUG9pbnQpPy5WYWx1ZT8uJHRhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sPy50b1N0cmluZygpID09PSBcIkNvbW1vbi5GaWVsZENvbnRyb2xUeXBlL01hbmRhdG9yeVwiO1xufVxuXG4vKipcbiAqIENyZWF0ZSB0aGUgYmluZGluZyBleHByZXNzaW9uIHRvIGNoZWNrIGlmIHRoZSBwcm9wZXJ0eSBpcyByZWFkIG9ubHkgb3Igbm90LlxuICpcbiAqIEBwYXJhbSBvVGFyZ2V0IFRoZSB0YXJnZXQgcHJvcGVydHkgb3IgRGF0YUZpZWxkXG4gKiBAcGFyYW0gcmVsYXRpdmVQYXRoIEFycmF5IG9mIG5hdmlnYXRpb24gcHJvcGVydGllcyBwb2ludGluZyB0byB0aGUgbG9jYXRpb24gb2YgZmllbGQgY29udHJvbCBwcm9wZXJ0eVxuICogQHJldHVybnMgVGhlIGJpbmRpbmcgZXhwcmVzc2lvbiByZXNvbHZpbmcgdG8gYSBCb29sZWFuIGJlaW5nIHRydWUgaWYgaXQncyByZWFkIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IGlzUmVxdWlyZWRFeHByZXNzaW9uID0gZnVuY3Rpb24gKFxuXHRvVGFyZ2V0OiBQcm9wZXJ0eSB8IERhdGFGaWVsZEFic3RyYWN0VHlwZXMgfCBEYXRhUG9pbnRUeXBlIHwgdW5kZWZpbmVkLFxuXHRyZWxhdGl2ZVBhdGg/OiBzdHJpbmdbXVxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Y29uc3Qgb0ZpZWxkQ29udHJvbFZhbHVlID0gb1RhcmdldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRjb25zdCBmaWVsZENvbnRyb2xWYWx1ZSA9IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvRmllbGRDb250cm9sVmFsdWUsIHJlbGF0aXZlUGF0aCk7XG5cdHJldHVybiBfaXNSZXF1aXJlZEV4cHJlc3Npb24oZmllbGRDb250cm9sVmFsdWUpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIGJpbmRpbmcgZXhwcmVzc2lvbiB0byBjaGVjayBpZiBhY3Rpb24gcGFyYW1ldGVyIGlzIHJlcXVpcmVkLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25QYXJhbWV0ZXIgQWN0aW9uIHBhcmFtZXRlclxuICogQHBhcmFtIGFjdGlvblRhcmdldCBBY3Rpb24gZGVmaW5pdGlvblxuICogQHBhcmFtIGNvbnZlcnRlZFR5cGVzIENvbnZlcnRlZCBNZXRhZGF0YVxuICogQHJldHVybnMgSXMgcmVxdWlyZWQgYmluZGluZyBleHByZXNzaW9uIGZvciBwYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0FjdGlvblBhcmFtZXRlclJlcXVpcmVkRXhwcmVzc2lvbiA9IGZ1bmN0aW9uIChcblx0YWN0aW9uUGFyYW1ldGVyOiBBY3Rpb25QYXJhbWV0ZXIsXG5cdGFjdGlvblRhcmdldDogQWN0aW9uLFxuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGFcbik6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGNvbnN0IGJpbmRpbmdQYXJhbWV0ZXJGdWxsTmFtZSA9IGFjdGlvblRhcmdldC5pc0JvdW5kID8gYWN0aW9uVGFyZ2V0LnBhcmFtZXRlcnNbMF0/LmZ1bGx5UXVhbGlmaWVkTmFtZSA6IHVuZGVmaW5lZDtcblx0Y29uc3QgZmllbGRDb250cm9sVmFsdWUgPSBhY3Rpb25QYXJhbWV0ZXIuYW5ub3RhdGlvbnM/LkNvbW1vbj8uRmllbGRDb250cm9sO1xuXHRjb25zdCBmaWVsZENvbnRyb2xFeHAgPSBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZmllbGRDb250cm9sVmFsdWUsIFtdLCB1bmRlZmluZWQsIChwYXRoOiBzdHJpbmcpID0+XG5cdFx0YmluZGluZ0NvbnRleHRQYXRoVmlzaXRvcihwYXRoLCBjb252ZXJ0ZWRUeXBlcywgYmluZGluZ1BhcmFtZXRlckZ1bGxOYW1lKVxuXHQpO1xuXG5cdHJldHVybiBfaXNSZXF1aXJlZEV4cHJlc3Npb24oZmllbGRDb250cm9sRXhwKTtcbn07XG5cbmNvbnN0IF9pc1JlcXVpcmVkRXhwcmVzc2lvbiA9IChmaWVsZENvbnRyb2xFeHA6IEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjxzdHJpbmcgfCBudW1iZXI+KTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+ID0+IHtcblx0cmV0dXJuIG9yKFxuXHRcdGlzQ29uc3RhbnQoZmllbGRDb250cm9sRXhwKSAmJiBlcXVhbChmaWVsZENvbnRyb2xFeHAsIFwiQ29tbW9uLkZpZWxkQ29udHJvbFR5cGUvTWFuZGF0b3J5XCIpLFxuXHRcdGVxdWFsKGZpZWxkQ29udHJvbEV4cCwgNyksXG5cdFx0ZXF1YWwoZmllbGRDb250cm9sRXhwLCBcIjdcIilcblx0KTtcbn07XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7RUFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLE1BQU1BLG9CQUFvQixHQUFHLFVBQ25DQyxPQUEyRSxFQUMzRUMsWUFBdUIsRUFDYTtJQUFBO0lBQ3BDLE1BQU1DLHNCQUFzQixHQUFHQywyQkFBMkIsQ0FBQ0gsT0FBTyxhQUFQQSxPQUFPLCtDQUFQQSxPQUFPLENBQUVJLFdBQVcsa0ZBQXBCLHFCQUFzQkMsTUFBTSwwREFBNUIsc0JBQThCQyxZQUFZLEVBQUVMLFlBQVksQ0FBQztJQUNwSCxJQUFJLENBQUNNLFVBQVUsQ0FBQ0wsc0JBQXNCLENBQUMsRUFBRTtNQUN4QyxPQUFPTSxFQUFFLENBQUNDLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUVPLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxNQUFNO01BQ04sT0FBT00sRUFBRSxDQUNSQyxLQUFLLENBQUNQLHNCQUFzQixFQUFFLGtDQUFrQyxDQUFDLEVBQ2pFTyxLQUFLLENBQUNQLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxFQUNoQ08sS0FBSyxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FDbEM7SUFDRjtFQUNELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLE1BQU1RLG9CQUFvQixHQUFHLFVBQ25DVixPQUEyRSxFQUMzRUMsWUFBdUIsRUFDYTtJQUFBO0lBQ3BDLE1BQU1DLHNCQUFzQixHQUFHQywyQkFBMkIsQ0FBQ0gsT0FBTyxhQUFQQSxPQUFPLGdEQUFQQSxPQUFPLENBQUVJLFdBQVcsbUZBQXBCLHNCQUFzQkMsTUFBTSwwREFBNUIsc0JBQThCQyxZQUFZLEVBQUVMLFlBQVksQ0FBQztJQUNwSCxJQUFJLENBQUNNLFVBQVUsQ0FBQ0wsc0JBQXNCLENBQUMsRUFBRTtNQUN4QyxPQUFPTSxFQUFFLENBQUNDLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUVPLEtBQUssQ0FBQ1Asc0JBQXNCLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDaEYsQ0FBQyxNQUFNO01BQ04sT0FBT00sRUFBRSxDQUNSQyxLQUFLLENBQUNQLHNCQUFzQixFQUFFLHNDQUFzQyxDQUFDLEVBQ3JFTyxLQUFLLENBQUNQLHNCQUFzQixFQUFFLENBQUMsQ0FBQyxFQUNoQ08sS0FBSyxDQUFDUCxzQkFBc0IsRUFBRSxHQUFHLENBQUMsQ0FDbEM7SUFDRjtFQUNELENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQTtFQU9PLE1BQU1TLHVCQUF1QixHQUFHLFVBQ3RDWCxPQUEyRSxFQUMzRUMsWUFBdUIsRUFDYTtJQUNwQyxPQUFPTyxFQUFFLENBQUNULG9CQUFvQixDQUFDQyxPQUFPLEVBQUVDLFlBQVksQ0FBQyxFQUFFUyxvQkFBb0IsQ0FBQ1YsT0FBTyxFQUFFQyxZQUFZLENBQUMsQ0FBQztFQUNwRyxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUxBO0VBTU8sTUFBTVcsMkJBQTJCLEdBQUcsVUFBVUMsc0JBQThDLEVBQVc7SUFBQTtJQUM3RyxNQUFNQyxZQUFZLDRCQUFHRCxzQkFBc0IsQ0FBQ1QsV0FBVyxvRkFBbEMsc0JBQW9DQyxNQUFNLDJEQUExQyx1QkFBNENDLFlBQVk7SUFDN0UsT0FBT1EsWUFBWSxJQUFJQSxZQUFZLENBQUNDLFFBQVEsRUFBRSxLQUFLLG1DQUFtQyxHQUFHLElBQUksR0FBRyxLQUFLO0VBQ3RHLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEE7RUFNTyxTQUFTQyxxQkFBcUIsQ0FBQ0MsTUFBNkUsRUFBVztJQUFBO0lBQzdILE1BQU1DLGlCQUFpQixHQUFHRCxNQUFNLGFBQU5BLE1BQU0sOENBQU5BLE1BQU0sQ0FBRWIsV0FBVyxpRkFBbkIsb0JBQXFCQyxNQUFNLDBEQUEzQixzQkFBNkJDLFlBQVk7SUFDbkUsSUFBSWEsVUFBVSxDQUFDRixNQUFNLENBQUMsSUFBSUcsd0JBQXdCLENBQUNILE1BQU0sQ0FBMkIsRUFBRTtNQUNyRixPQUFPLENBQUFDLGlCQUFpQixhQUFqQkEsaUJBQWlCLHVCQUFqQkEsaUJBQWlCLENBQUVILFFBQVEsRUFBRSxNQUFLLG1DQUFtQztJQUM3RTtJQUNBLElBQUlNLFdBQVcsQ0FBQ0osTUFBTSxDQUFDLEVBQUU7TUFDeEIsSUFBSSxDQUFBQyxpQkFBaUIsYUFBakJBLGlCQUFpQix1QkFBakJBLGlCQUFpQixDQUFFSCxRQUFRLEVBQUUsTUFBSyxtQ0FBbUMsRUFBRTtRQUMxRSxPQUFPLElBQUk7TUFDWjtNQUNBLElBQUksQ0FBQUcsaUJBQWlCLGFBQWpCQSxpQkFBaUIsdUJBQWpCQSxpQkFBaUIsQ0FBRUgsUUFBUSxFQUFFLE1BQUtPLFNBQVMsRUFBRTtRQUNoRCxPQUFPLEtBQUs7TUFDYixDQUFDLE1BQU07UUFBQTtRQUNOLE9BQU8sQ0FBQUwsTUFBTSxhQUFOQSxNQUFNLHdDQUFOQSxNQUFNLENBQUVNLEtBQUssMkVBQWIsY0FBZUMsT0FBTyxvRkFBdEIsc0JBQXdCcEIsV0FBVyxxRkFBbkMsdUJBQXFDQyxNQUFNLHFGQUEzQyx1QkFBNkNDLFlBQVksMkRBQXpELHVCQUEyRFMsUUFBUSxFQUFFLE1BQUssbUNBQW1DO01BQ3JIO0lBQ0Q7SUFDQSxPQUFPLENBQUNFLE1BQU0sYUFBTkEsTUFBTSxpQ0FBTkEsTUFBTSxDQUFnQk0sS0FBSyw2REFBNUIsT0FBOEJDLE9BQU8sNEVBQXJDLGVBQXVDcEIsV0FBVyxvRkFBbEQsc0JBQW9EQyxNQUFNLHFGQUExRCx1QkFBNERDLFlBQVksMkRBQXhFLHVCQUEwRVMsUUFBUSxFQUFFLE1BQUssbUNBQW1DO0VBQ3BJOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkE7RUFPTyxNQUFNVSxvQkFBb0IsR0FBRyxVQUNuQ3pCLE9BQXNFLEVBQ3RFQyxZQUF1QixFQUNhO0lBQUE7SUFDcEMsTUFBTXlCLGtCQUFrQixHQUFHMUIsT0FBTyxhQUFQQSxPQUFPLGdEQUFQQSxPQUFPLENBQUVJLFdBQVcsbUZBQXBCLHNCQUFzQkMsTUFBTSwwREFBNUIsc0JBQThCQyxZQUFZO0lBQ3JFLE1BQU1xQixpQkFBaUIsR0FBR3hCLDJCQUEyQixDQUFDdUIsa0JBQWtCLEVBQUV6QixZQUFZLENBQUM7SUFDdkYsT0FBTzJCLHFCQUFxQixDQUFDRCxpQkFBaUIsQ0FBQztFQUNoRCxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLE1BQU1FLG1DQUFtQyxHQUFHLFVBQ2xEQyxlQUFnQyxFQUNoQ0MsWUFBb0IsRUFDcEJDLGNBQWlDLEVBQ0c7SUFBQTtJQUNwQyxNQUFNQyx3QkFBd0IsR0FBR0YsWUFBWSxDQUFDRyxPQUFPLDRCQUFHSCxZQUFZLENBQUNJLFVBQVUsQ0FBQyxDQUFDLENBQUMsMERBQTFCLHNCQUE0QkMsa0JBQWtCLEdBQUdkLFNBQVM7SUFDbEgsTUFBTUssaUJBQWlCLDRCQUFHRyxlQUFlLENBQUMxQixXQUFXLG9GQUEzQixzQkFBNkJDLE1BQU0sMkRBQW5DLHVCQUFxQ0MsWUFBWTtJQUMzRSxNQUFNK0IsZUFBZSxHQUFHbEMsMkJBQTJCLENBQUN3QixpQkFBaUIsRUFBRSxFQUFFLEVBQUVMLFNBQVMsRUFBR2dCLElBQVksSUFDbEdDLHlCQUF5QixDQUFDRCxJQUFJLEVBQUVOLGNBQWMsRUFBRUMsd0JBQXdCLENBQUMsQ0FDekU7SUFFRCxPQUFPTCxxQkFBcUIsQ0FBQ1MsZUFBZSxDQUFDO0VBQzlDLENBQUM7RUFBQztFQUVGLE1BQU1ULHFCQUFxQixHQUFJUyxlQUEwRCxJQUF3QztJQUNoSSxPQUFPN0IsRUFBRSxDQUNSRCxVQUFVLENBQUM4QixlQUFlLENBQUMsSUFBSTVCLEtBQUssQ0FBQzRCLGVBQWUsRUFBRSxtQ0FBbUMsQ0FBQyxFQUMxRjVCLEtBQUssQ0FBQzRCLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFDekI1QixLQUFLLENBQUM0QixlQUFlLEVBQUUsR0FBRyxDQUFDLENBQzNCO0VBQ0YsQ0FBQztFQUFDO0FBQUEifQ==
|
|
@@ -7,8 +7,8 @@ import type {
|
|
|
7
7
|
DataPointType,
|
|
8
8
|
DataPointTypeTypes
|
|
9
9
|
} from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
10
|
-
import type { BindingToolkitExpression } from "sap/fe/
|
|
11
|
-
import { equal, getExpressionFromAnnotation, isConstant, or } from "sap/fe/
|
|
10
|
+
import type { BindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
11
|
+
import { equal, getExpressionFromAnnotation, isConstant, or } from "sap/fe/base/BindingToolkit";
|
|
12
12
|
import { isDataField, isDataFieldForAnnotation } from "../converters/annotations/DataField";
|
|
13
13
|
import { bindingContextPathVisitor } from "../helpers/BindingHelper";
|
|
14
14
|
import { isProperty } from "../helpers/TypeGuards";
|