@grafana/scenes 6.7.0 → 6.8.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/CHANGELOG.md +13 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { getTemplateSrv, getDataSourceSrv } from '@grafana/runtime';
|
|
2
|
+
|
|
3
|
+
let originalGetAdhocFilters = void 0;
|
|
4
|
+
let allActiveFilterSets = /* @__PURE__ */ new Set();
|
|
5
|
+
function patchGetAdhocFilters(filterVar) {
|
|
6
|
+
filterVar.addActivationHandler(() => {
|
|
7
|
+
allActiveFilterSets.add(filterVar);
|
|
8
|
+
return () => allActiveFilterSets.delete(filterVar);
|
|
9
|
+
});
|
|
10
|
+
if (originalGetAdhocFilters) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
const templateSrv = getTemplateSrv();
|
|
14
|
+
if (!(templateSrv == null ? void 0 : templateSrv.getAdhocFilters)) {
|
|
15
|
+
console.log("Failed to patch getAdhocFilters");
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
originalGetAdhocFilters = templateSrv.getAdhocFilters;
|
|
19
|
+
templateSrv.getAdhocFilters = function getAdhocFiltersScenePatch(dsName) {
|
|
20
|
+
var _a;
|
|
21
|
+
if (allActiveFilterSets.size === 0) {
|
|
22
|
+
return originalGetAdhocFilters.call(templateSrv, dsName);
|
|
23
|
+
}
|
|
24
|
+
const ds = getDataSourceSrv().getInstanceSettings(dsName);
|
|
25
|
+
if (!ds) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
for (const filter of allActiveFilterSets.values()) {
|
|
29
|
+
if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === ds.uid) {
|
|
30
|
+
return filter.state.filters;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return [];
|
|
34
|
+
}.bind(templateSrv);
|
|
35
|
+
}
|
|
36
|
+
function findActiveAdHocFilterVariableByUid(dsUid) {
|
|
37
|
+
var _a;
|
|
38
|
+
for (const filter of allActiveFilterSets.values()) {
|
|
39
|
+
if (((_a = filter.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
|
|
40
|
+
return filter;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return void 0;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export { findActiveAdHocFilterVariableByUid, patchGetAdhocFilters };
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hHZXRBZGhvY0ZpbHRlcnMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9hZGhvYy9wYXRjaEdldEFkaG9jRmlsdGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRUZW1wbGF0ZVNydiwgZ2V0RGF0YVNvdXJjZVNydiB9IGZyb20gJ0BncmFmYW5hL3J1bnRpbWUnO1xuXG5sZXQgb3JpZ2luYWxHZXRBZGhvY0ZpbHRlcnMgPSB2b2lkIDA7XG5sZXQgYWxsQWN0aXZlRmlsdGVyU2V0cyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG5mdW5jdGlvbiBwYXRjaEdldEFkaG9jRmlsdGVycyhmaWx0ZXJWYXIpIHtcbiAgZmlsdGVyVmFyLmFkZEFjdGl2YXRpb25IYW5kbGVyKCgpID0+IHtcbiAgICBhbGxBY3RpdmVGaWx0ZXJTZXRzLmFkZChmaWx0ZXJWYXIpO1xuICAgIHJldHVybiAoKSA9PiBhbGxBY3RpdmVGaWx0ZXJTZXRzLmRlbGV0ZShmaWx0ZXJWYXIpO1xuICB9KTtcbiAgaWYgKG9yaWdpbmFsR2V0QWRob2NGaWx0ZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IHRlbXBsYXRlU3J2ID0gZ2V0VGVtcGxhdGVTcnYoKTtcbiAgaWYgKCEodGVtcGxhdGVTcnYgPT0gbnVsbCA/IHZvaWQgMCA6IHRlbXBsYXRlU3J2LmdldEFkaG9jRmlsdGVycykpIHtcbiAgICBjb25zb2xlLmxvZyhcIkZhaWxlZCB0byBwYXRjaCBnZXRBZGhvY0ZpbHRlcnNcIik7XG4gICAgcmV0dXJuO1xuICB9XG4gIG9yaWdpbmFsR2V0QWRob2NGaWx0ZXJzID0gdGVtcGxhdGVTcnYuZ2V0QWRob2NGaWx0ZXJzO1xuICB0ZW1wbGF0ZVNydi5nZXRBZGhvY0ZpbHRlcnMgPSBmdW5jdGlvbiBnZXRBZGhvY0ZpbHRlcnNTY2VuZVBhdGNoKGRzTmFtZSkge1xuICAgIHZhciBfYTtcbiAgICBpZiAoYWxsQWN0aXZlRmlsdGVyU2V0cy5zaXplID09PSAwKSB7XG4gICAgICByZXR1cm4gb3JpZ2luYWxHZXRBZGhvY0ZpbHRlcnMuY2FsbCh0ZW1wbGF0ZVNydiwgZHNOYW1lKTtcbiAgICB9XG4gICAgY29uc3QgZHMgPSBnZXREYXRhU291cmNlU3J2KCkuZ2V0SW5zdGFuY2VTZXR0aW5ncyhkc05hbWUpO1xuICAgIGlmICghZHMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBmaWx0ZXIgb2YgYWxsQWN0aXZlRmlsdGVyU2V0cy52YWx1ZXMoKSkge1xuICAgICAgaWYgKCgoX2EgPSBmaWx0ZXIuc3RhdGUuZGF0YXNvdXJjZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVpZCkgPT09IGRzLnVpZCkge1xuICAgICAgICByZXR1cm4gZmlsdGVyLnN0YXRlLmZpbHRlcnM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbXTtcbiAgfS5iaW5kKHRlbXBsYXRlU3J2KTtcbn1cbmZ1bmN0aW9uIGZpbmRBY3RpdmVBZEhvY0ZpbHRlclZhcmlhYmxlQnlVaWQoZHNVaWQpIHtcbiAgdmFyIF9hO1xuICBmb3IgKGNvbnN0IGZpbHRlciBvZiBhbGxBY3RpdmVGaWx0ZXJTZXRzLnZhbHVlcygpKSB7XG4gICAgaWYgKCgoX2EgPSBmaWx0ZXIuc3RhdGUuZGF0YXNvdXJjZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVpZCkgPT09IGRzVWlkKSB7XG4gICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm9pZCAwO1xufVxuXG5leHBvcnQgeyBmaW5kQWN0aXZlQWRIb2NGaWx0ZXJWYXJpYWJsZUJ5VWlkLCBwYXRjaEdldEFkaG9jRmlsdGVycyB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljR0YwWTJoSFpYUkJaR2h2WTBacGJIUmxjbk11YW5NaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUx5NHVMeTR1TDNOeVl5OTJZWEpwWVdKc1pYTXZZV1JvYjJNdmNHRjBZMmhIWlhSQlpHaHZZMFpwYkhSbGNuTXVkSE1pWFN3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhzZ1oyVjBSR0YwWVZOdmRYSmpaVk55ZGl3Z1oyVjBWR1Z0Y0d4aGRHVlRjbllnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzl5ZFc1MGFXMWxKenRjYm1sdGNHOXlkQ0I3SUVGa1NHOWpWbUZ5YVdGaWJHVkdhV3gwWlhJZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5a1lYUmhKenRjYm1sdGNHOXlkQ0I3SUVGa1NHOWpSbWxzZEdWeWMxWmhjbWxoWW14bElIMGdabkp2YlNBbkxpOUJaRWh2WTBacGJIUmxjbk5XWVhKcFlXSnNaU2M3WEc1Y2JteGxkQ0J2Y21sbmFXNWhiRWRsZEVGa2FHOWpSbWxzZEdWeWN6b2dZVzU1SUQwZ2RXNWtaV1pwYm1Wa08xeHViR1YwSUdGc2JFRmpkR2wyWlVacGJIUmxjbE5sZEhNZ1BTQnVaWGNnVTJWMFBFRmtTRzlqUm1sc2RHVnljMVpoY21saFlteGxQaWdwTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NHRjBZMmhIWlhSQlpHaHZZMFpwYkhSbGNuTW9abWxzZEdWeVZtRnlPaUJCWkVodlkwWnBiSFJsY25OV1lYSnBZV0pzWlNrZ2UxeHVJQ0JtYVd4MFpYSldZWEl1WVdSa1FXTjBhWFpoZEdsdmJraGhibVJzWlhJb0tDa2dQVDRnZTF4dUlDQWdJR0ZzYkVGamRHbDJaVVpwYkhSbGNsTmxkSE11WVdSa0tHWnBiSFJsY2xaaGNpazdYRzRnSUNBZ2NtVjBkWEp1SUNncElEMCtJR0ZzYkVGamRHbDJaVVpwYkhSbGNsTmxkSE11WkdWc1pYUmxLR1pwYkhSbGNsWmhjaWs3WEc0Z0lIMHBPMXh1WEc0Z0lHbG1JQ2h2Y21sbmFXNWhiRWRsZEVGa2FHOWpSbWxzZEdWeWN5a2dlMXh1SUNBZ0lISmxkSFZ5Ymp0Y2JpQWdmVnh1WEc0Z0lHTnZibk4wSUhSbGJYQnNZWFJsVTNKMk9pQmhibmtnUFNCblpYUlVaVzF3YkdGMFpWTnlkaWdwTzF4dUlDQnBaaUFvSVhSbGJYQnNZWFJsVTNKMlB5NW5aWFJCWkdodlkwWnBiSFJsY25NcElIdGNiaUFnSUNCamIyNXpiMnhsTG14dlp5Z25SbUZwYkdWa0lIUnZJSEJoZEdOb0lHZGxkRUZrYUc5alJtbHNkR1Z5Y3ljcE8xeHVJQ0FnSUhKbGRIVnlianRjYmlBZ2ZWeHVYRzRnSUc5eWFXZHBibUZzUjJWMFFXUm9iMk5HYVd4MFpYSnpJRDBnZEdWdGNHeGhkR1ZUY25ZdVoyVjBRV1JvYjJOR2FXeDBaWEp6TzF4dVhHNGdJSFJsYlhCc1lYUmxVM0oyTG1kbGRFRmthRzlqUm1sc2RHVnljeUE5SUdaMWJtTjBhVzl1SUdkbGRFRmthRzlqUm1sc2RHVnljMU5qWlc1bFVHRjBZMmdvWkhOT1lXMWxPaUJ6ZEhKcGJtY3BPaUJCWkVodlkxWmhjbWxoWW14bFJtbHNkR1Z5VzEwZ2UxeHVJQ0FnSUdsbUlDaGhiR3hCWTNScGRtVkdhV3gwWlhKVFpYUnpMbk5wZW1VZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ2Y21sbmFXNWhiRWRsZEVGa2FHOWpSbWxzZEdWeWN5NWpZV3hzS0hSbGJYQnNZWFJsVTNKMkxDQmtjMDVoYldVcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJR1J6SUQwZ1oyVjBSR0YwWVZOdmRYSmpaVk55ZGlncExtZGxkRWx1YzNSaGJtTmxVMlYwZEdsdVozTW9aSE5PWVcxbEtUdGNiaUFnSUNCcFppQW9JV1J6S1NCN1hHNGdJQ0FnSUNCeVpYUjFjbTRnVzEwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnWm05eUlDaGpiMjV6ZENCbWFXeDBaWElnYjJZZ1lXeHNRV04wYVhabFJtbHNkR1Z5VTJWMGN5NTJZV3gxWlhNb0tTa2dlMXh1SUNBZ0lDQWdhV1lnS0dacGJIUmxjaTV6ZEdGMFpTNWtZWFJoYzI5MWNtTmxQeTUxYVdRZ1BUMDlJR1J6TG5WcFpDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabWxzZEdWeUxuTjBZWFJsTG1acGJIUmxjbk03WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdGRPMXh1SUNCOUxtSnBibVFvZEdWdGNHeGhkR1ZUY25ZcE8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWm1sdVpFRmpkR2wyWlVGa1NHOWpSbWxzZEdWeVZtRnlhV0ZpYkdWQ2VWVnBaQ2hrYzFWcFpEb2djM1J5YVc1bklId2dkVzVrWldacGJtVmtLVG9nUVdSSWIyTkdhV3gwWlhKelZtRnlhV0ZpYkdVZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNCbWIzSWdLR052Ym5OMElHWnBiSFJsY2lCdlppQmhiR3hCWTNScGRtVkdhV3gwWlhKVFpYUnpMblpoYkhWbGN5Z3BLU0I3WEc0Z0lDQWdhV1lnS0dacGJIUmxjaTV6ZEdGMFpTNWtZWFJoYzI5MWNtTmxQeTUxYVdRZ1BUMDlJR1J6Vldsa0tTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z1ptbHNkR1Z5TzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUIxYm1SbFptbHVaV1E3WEc1OVhHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZKUVN4SlFVRkpMSFZDUVVFclFpeEhRVUZCTEV0QlFVRXNRMEZCUVN4RFFVRkJPMEZCUTI1RExFbEJRVWtzYlVKQlFVRXNkVUpCUVRCQ0xFZEJRVEJDTEVWQlFVRXNRMEZCUVR0QlFVVnFSQ3hUUVVGVExIRkNRVUZ4UWl4VFFVRnBReXhGUVVGQk8wRkJRM0JGTEVWQlFVRXNVMEZCUVN4RFFVRlZMSEZDUVVGeFFpeE5RVUZOTzBGQlEyNURMRWxCUVVFc2JVSkJRVUVzUTBGQmIwSXNTVUZCU1N4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVOcVF5eEpRVUZQTEU5QlFVRXNUVUZCVFN4dFFrRkJiMElzUTBGQlFTeE5RVUZCTEVOQlFVOHNVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOc1JDeERRVUZCTEVOQlFVRTdRVUZGUkN4RlFVRkJMRWxCUVVrc2RVSkJRWGxDTEVWQlFVRTdRVUZETTBJc1NVRkJRU3hQUVVGQk8wRkJRVUVzUjBGRFJqdEJRVVZCTEVWQlFVRXNUVUZCVFN4alFVRnRRaXhqUVVGbExFVkJRVUVzUTBGQlFUdEJRVU40UXl4RlFVRkpMRWxCUVVFc1JVRkJReXd5UTBGQllTeGxRVUZwUWl4RFFVRkJMRVZCUVVFN1FVRkRha01zU1VGQlFTeFBRVUZCTEVOQlFWRXNTVUZCU1N4cFEwRkJhVU1zUTBGQlFTeERRVUZCTzBGQlF6ZERMRWxCUVVFc1QwRkJRVHRCUVVGQkxFZEJRMFk3UVVGRlFTeEZRVUZCTEhWQ1FVRkJMRWRCUVRCQ0xGZEJRVmtzUTBGQlFTeGxRVUZCTEVOQlFVRTdRVUZGZEVNc1JVRkJXU3hYUVVGQkxFTkJRVUVzWlVGQlFTeEhRVUZyUWl4VFFVRlRMSGxDUVVGQkxFTkJRVEJDTEUxQlFYVkRMRVZCUVVFN1FVRjZRakZITEVsQlFVRXNTVUZCUVN4RlFVRkJMRU5CUVVFN1FVRXdRa2tzU1VGQlNTeEpRVUZCTEcxQ1FVRkJMRU5CUVc5Q0xGTkJRVk1zUTBGQlJ5eEZRVUZCTzBGQlEyeERMRTFCUVU4c1QwRkJRU3gxUWtGQlFTeERRVUYzUWl4SlFVRkxMRU5CUVVFc1YwRkJRU3hGUVVGaExFMUJRVTBzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEZWtRN1FVRkZRU3hKUVVGQkxFMUJRVTBzUlVGQlN5eEhRVUZCTEdkQ1FVRkJMRVZCUVcxQ0xFTkJRVUVzYlVKQlFVRXNRMEZCYjBJc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGRGVFUXNTVUZCUVN4SlFVRkpMRU5CUVVNc1JVRkJTU3hGUVVGQk8wRkJRMUFzVFVGQlFTeFBRVUZQTEVWQlFVTXNRMEZCUVR0QlFVRkJMRXRCUTFZN1FVRkZRU3hKUVVGWExFdEJRVUVzVFVGQlFTeE5RVUZCTEVsQlFWVXNiVUpCUVc5Q0xFTkJRVUVzVFVGQlFTeEZRVUZWTEVWQlFVRTdRVUZEYWtRc1RVRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlNTeFpRVUZQTEV0QlFVMHNRMEZCUVN4VlFVRkJMRXRCUVdJc1NVRkJlVUlzUjBGQlFTeExRVUZCTEVOQlFVRXNSMEZCUVN4RlFVRkJMRU5CUVVFc1IwRkJRU3hOUVVGUkxFZEJRVWNzUjBGQlN5eEZRVUZCTzBGQlF6TkRMRkZCUVVFc1QwRkJUeXhQUVVGUExFdEJRVTBzUTBGQlFTeFBRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTjBRanRCUVVGQkxFdEJRMFk3UVVGRlFTeEpRVUZCTEU5QlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1IwRkRWaXhEUVVGRkxFdEJRVXNzVjBGQlZ5eERRVUZCTEVOQlFVRTdRVUZEY0VJc1EwRkJRVHRCUVVWUExGTkJRVk1zYlVOQlFXMURMRXRCUVRaRUxFVkJRVUU3UVVFM1EyaElMRVZCUVVFc1NVRkJRU3hGUVVGQkxFTkJRVUU3UVVFNFEwVXNSVUZCVnl4TFFVRkJMRTFCUVVFc1RVRkJRU3hKUVVGVkxHMUNRVUZ2UWl4RFFVRkJMRTFCUVVFc1JVRkJWU3hGUVVGQk8wRkJRMnBFTEVsQlFVRXNTVUZCUVN4RFFVRkJMRU5CUVVrc1JVRkJUeXhIUVVGQkxFMUJRVUVzUTBGQlFTeExRVUZCTEVOQlFVMHNWVUZCWWl4TFFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFYbENMRk5CUVZFc1MwRkJUeXhGUVVGQk8wRkJRekZETEUxQlFVOHNUMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOVU8wRkJRVUVzUjBGRFJqdEJRVVZCTEVWQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVOVU96czdPeUo5XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSxJQUFJLHVCQUErQixHQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQ25DLElBQUksbUJBQUEsdUJBQTBCLEdBQTBCLEVBQUEsQ0FBQTtBQUVqRCxTQUFTLHFCQUFxQixTQUFpQyxFQUFBO0FBQ3BFLEVBQUEsU0FBQSxDQUFVLHFCQUFxQixNQUFNO0FBQ25DLElBQUEsbUJBQUEsQ0FBb0IsSUFBSSxTQUFTLENBQUEsQ0FBQTtBQUMxQixJQUFBLE9BQUEsTUFBTSxtQkFBb0IsQ0FBQSxNQUFBLENBQU8sU0FBUyxDQUFBLENBQUE7R0FDbEQsQ0FBQSxDQUFBO0FBRUQsRUFBQSxJQUFJLHVCQUF5QixFQUFBO0FBQzNCLElBQUEsT0FBQTtBQUFBLEdBQUE7QUFHRixFQUFBLE1BQU0sY0FBbUIsY0FBZSxFQUFBLENBQUE7QUFDcEMsRUFBQSxJQUFBLEVBQUMsV0FBQSxJQUFBLElBQUEsR0FBQSxLQUFBLENBQUEsR0FBQSxZQUFhLGVBQWlCLENBQUEsRUFBQTtBQUNqQyxJQUFBLE9BQUEsQ0FBUSxJQUFJLGlDQUFpQyxDQUFBLENBQUE7QUFDN0MsSUFBQSxPQUFBO0FBQUEsR0FBQTtBQUdGLEVBQUEsdUJBQUEsR0FBMEIsV0FBWSxDQUFBLGVBQUEsQ0FBQTtBQUUxQixFQUFBLFdBQUEsQ0FBQSxlQUFBLEdBQWtCLFNBQVMseUJBQUEsQ0FBMEIsTUFBdUMsRUFBQTtBQXpCMUcsSUFBQSxJQUFBLEVBQUEsQ0FBQTtBQTBCUSxJQUFBLElBQUEsbUJBQUEsQ0FBb0IsU0FBUyxDQUFHLEVBQUE7QUFDM0IsTUFBQSxPQUFBLHVCQUFBLENBQXdCLElBQUssQ0FBQSxXQUFBLEVBQWEsTUFBTSxDQUFBLENBQUE7QUFBQSxLQUFBO0FBR3pELElBQUEsTUFBTSxFQUFLLEdBQUEsZ0JBQUEsRUFBbUIsQ0FBQSxtQkFBQSxDQUFvQixNQUFNLENBQUEsQ0FBQTtBQUN4RCxJQUFBLElBQUksQ0FBQyxFQUFJLEVBQUE7QUFDUCxNQUFBLE9BQU8sRUFBQSxDQUFBO0FBQUMsS0FBQTtBQUdDLElBQUEsS0FBQSxNQUFBLE1BQUEsSUFBVSxtQkFBb0IsQ0FBQSxNQUFBLEVBQVUsRUFBQTtBQUNqRCxNQUFJLElBQUEsQ0FBQSxDQUFBLEVBQUEsR0FBQSxPQUFPLEtBQU0sQ0FBQSxVQUFBLEtBQWIsT0FBeUIsS0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEdBQVEsTUFBQSxFQUFBLENBQUcsR0FBSyxFQUFBO0FBQzNDLFFBQUEsT0FBTyxPQUFPLEtBQU0sQ0FBQSxPQUFBLENBQUE7QUFBQSxPQUFBO0FBQ3RCLEtBQUE7QUFHRixJQUFBLE9BQU8sRUFBQSxDQUFBO0FBQUMsR0FBQSxDQUNSLEtBQUssV0FBVyxDQUFBLENBQUE7QUFDcEIsQ0FBQTtBQUVPLFNBQVMsbUNBQW1DLEtBQTZELEVBQUE7QUE3Q2hILEVBQUEsSUFBQSxFQUFBLENBQUE7QUE4Q2EsRUFBQSxLQUFBLE1BQUEsTUFBQSxJQUFVLG1CQUFvQixDQUFBLE1BQUEsRUFBVSxFQUFBO0FBQ2pELElBQUksSUFBQSxDQUFBLENBQUEsRUFBQSxHQUFPLE9BQUEsS0FBTSxDQUFBLFVBQUEsS0FBYixPQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBeUIsU0FBUSxLQUFPLEVBQUE7QUFDbkMsTUFBQSxPQUFBLE1BQUEsQ0FBQTtBQUFBLEtBQUE7QUFDVCxHQUFBO0FBR0ssRUFBQSxPQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQ1Q7Ozs7In0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
3
|
+
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
4
|
+
import { VariableValueSelectWrapper } from './VariableValueSelectors.js';
|
|
5
|
+
|
|
6
|
+
class VariableValueControl extends SceneObjectBase {
|
|
7
|
+
}
|
|
8
|
+
VariableValueControl.Component = VariableValueControlRenderer;
|
|
9
|
+
function VariableValueControlRenderer({ model }) {
|
|
10
|
+
const variable = sceneGraph.lookupVariable(model.state.variableName, model);
|
|
11
|
+
if (!variable) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return /* @__PURE__ */ React.createElement(VariableValueSelectWrapper, {
|
|
15
|
+
key: variable.state.key,
|
|
16
|
+
variable,
|
|
17
|
+
layout: model.state.layout,
|
|
18
|
+
showAlways: true
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { VariableValueControl };
|
|
23
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZUNvbnRyb2wuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9jb21wb25lbnRzL1ZhcmlhYmxlVmFsdWVDb250cm9sLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vLi4vY29yZS9zY2VuZUdyYXBoL2luZGV4LmpzJztcbmltcG9ydCB7IFZhcmlhYmxlVmFsdWVTZWxlY3RXcmFwcGVyIH0gZnJvbSAnLi9WYXJpYWJsZVZhbHVlU2VsZWN0b3JzLmpzJztcblxuY2xhc3MgVmFyaWFibGVWYWx1ZUNvbnRyb2wgZXh0ZW5kcyBTY2VuZU9iamVjdEJhc2Uge1xufVxuVmFyaWFibGVWYWx1ZUNvbnRyb2wuQ29tcG9uZW50ID0gVmFyaWFibGVWYWx1ZUNvbnRyb2xSZW5kZXJlcjtcbmZ1bmN0aW9uIFZhcmlhYmxlVmFsdWVDb250cm9sUmVuZGVyZXIoeyBtb2RlbCB9KSB7XG4gIGNvbnN0IHZhcmlhYmxlID0gc2NlbmVHcmFwaC5sb29rdXBWYXJpYWJsZShtb2RlbC5zdGF0ZS52YXJpYWJsZU5hbWUsIG1vZGVsKTtcbiAgaWYgKCF2YXJpYWJsZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChWYXJpYWJsZVZhbHVlU2VsZWN0V3JhcHBlciwge1xuICAgIGtleTogdmFyaWFibGUuc3RhdGUua2V5LFxuICAgIHZhcmlhYmxlLFxuICAgIGxheW91dDogbW9kZWwuc3RhdGUubGF5b3V0LFxuICAgIHNob3dBbHdheXM6IHRydWVcbiAgfSk7XG59XG5cbmV4cG9ydCB7IFZhcmlhYmxlVmFsdWVDb250cm9sIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVZtRnlhV0ZpYkdWV1lXeDFaVU52Ym5SeWIyd3Vhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdlkyOXRjRzl1Wlc1MGN5OVdZWEpwWVdKc1pWWmhiSFZsUTI5dWRISnZiQzUwYzNnaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElGSmxZV04wSUdaeWIyMGdKM0psWVdOMEp6dGNibHh1YVcxd2IzSjBJSHNnVTJObGJtVlBZbXBsWTNSQ1lYTmxJSDBnWm5KdmJTQW5MaTR2TGk0dlkyOXlaUzlUWTJWdVpVOWlhbVZqZEVKaGMyVW5PMXh1YVcxd2IzSjBJSHNnYzJObGJtVkhjbUZ3YUNCOUlHWnliMjBnSnk0dUx5NHVMMk52Y21VdmMyTmxibVZIY21Gd2FDYzdYRzVwYlhCdmNuUWdleUJEYjI1MGNtOXNjMHhoZVc5MWRDd2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjeXdnVTJObGJtVlBZbXBsWTNSVGRHRjBaU0I5SUdaeWIyMGdKeTR1THk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnVm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZEZkeVlYQndaWElnZlNCbWNtOXRJQ2N1TDFaaGNtbGhZbXhsVm1Gc2RXVlRaV3hsWTNSdmNuTW5PMXh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUZaaGNtbGhZbXhsVm1Gc2RXVkRiMjUwY205c1UzUmhkR1VnWlhoMFpXNWtjeUJUWTJWdVpVOWlhbVZqZEZOMFlYUmxJSHRjYmlBZ2JHRjViM1YwUHpvZ1EyOXVkSEp2YkhOTVlYbHZkWFE3WEc0Z0lDOHFLaUJTWlc1a1pYSWdkR2hsSUhOd1pXTnBabWxqSUhObGJHVmpkQ0JqYjI1MGNtOXNJR1p2Y2lCaElIWmhjbWxoWW14bElDb3ZYRzRnSUhaaGNtbGhZbXhsVG1GdFpUb2djM1J5YVc1bk8xeHVJQ0F2S2lvZ1NHbGtaU0IwYUdVZ2JHRmlaV3dnYVc0Z2RHaGxJSFpoY21saFlteGxJSFpoYkhWbElHTnZiblJ5YjJ4c1pYSWdLaTljYmlBZ2FHbGtaVXhoWW1Wc1B6b2dZbTl2YkdWaGJqdGNibjFjYmx4dVpYaHdiM0owSUdOc1lYTnpJRlpoY21saFlteGxWbUZzZFdWRGIyNTBjbTlzSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRlpoY21saFlteGxWbUZzZFdWRGIyNTBjbTlzVTNSaGRHVStJSHRjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJEYjIxd2IyNWxiblFnUFNCV1lYSnBZV0pzWlZaaGJIVmxRMjl1ZEhKdmJGSmxibVJsY21WeU8xeHVmVnh1WEc1bWRXNWpkR2x2YmlCV1lYSnBZV0pzWlZaaGJIVmxRMjl1ZEhKdmJGSmxibVJsY21WeUtIc2diVzlrWld3Z2ZUb2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjenhXWVhKcFlXSnNaVlpoYkhWbFEyOXVkSEp2YkQ0cElIdGNiaUFnWTI5dWMzUWdkbUZ5YVdGaWJHVWdQU0J6WTJWdVpVZHlZWEJvTG14dmIydDFjRlpoY21saFlteGxLRzF2WkdWc0xuTjBZWFJsTG5aaGNtbGhZbXhsVG1GdFpTd2diVzlrWld3cE8xeHVJQ0JwWmlBb0lYWmhjbWxoWW14bEtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeFdZWEpwWVdKc1pWWmhiSFZsVTJWc1pXTjBWM0poY0hCbGNseHVJQ0FnSUNBZ2EyVjVQWHQyWVhKcFlXSnNaUzV6ZEdGMFpTNXJaWGw5WEc0Z0lDQWdJQ0IyWVhKcFlXSnNaVDE3ZG1GeWFXRmliR1Y5WEc0Z0lDQWdJQ0JzWVhsdmRYUTllMjF2WkdWc0xuTjBZWFJsTG14aGVXOTFkSDFjYmlBZ0lDQWdJSE5vYjNkQmJIZGhlWE05ZTNSeWRXVjlYRzRnSUNBZ0x6NWNiaUFnS1R0Y2JuMWNiaUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3p0QlFXVlBMRTFCUVUwc05rSkJRVFpDTEdWQlFUSkRMRU5CUVVFN1FVRkZja1lzUTBGQlFUdEJRVVpoTEc5Q1FVRkJMRU5CUTBjc1UwRkJXU3hIUVVGQkxEUkNRVUZCTEVOQlFVRTdRVUZITlVJc1UwRkJVeXcwUWtGQlFTeERRVUUyUWl4RlFVRkZMRXRCUVVFc1JVRkJiMFFzUlVGQlFUdEJRVU14Uml4RlFVRkJMRTFCUVUwc1YwRkJWeXhWUVVGWExFTkJRVUVzWTBGQlFTeERRVUZsTEV0QlFVMHNRMEZCUVN4TFFVRkJMRU5CUVUwc1kwRkJZeXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVU14UlN4RlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGVkxFVkJRVUU3UVVGRFlpeEpRVUZQTEU5QlFVRXNTVUZCUVN4RFFVRkJPMEZCUVVFc1IwRkRWRHRCUVVWQkxFVkJRVUVzZFVKQlEwY3NTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3d3UWtGQlFTeEZRVUZCTzBGQlFVRXNTVUZEUXl4SFFVRkJMRVZCUVVzc1UwRkJVeXhMUVVGTkxFTkJRVUVzUjBGQlFUdEJRVUZCTEVsQlEzQkNMRkZCUVVFN1FVRkJRU3hKUVVOQkxFMUJRVUVzUlVGQlVTeE5RVUZOTEV0QlFVMHNRMEZCUVN4TlFVRkJPMEZCUVVFc1NVRkRjRUlzVlVGQldTeEZRVUZCTEVsQlFVRTdRVUZCUVN4SFFVTmtMRU5CUVVFc1EwRkJRVHRCUVVWS096czdPeUo5XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFlTyxNQUFNLDZCQUE2QixlQUEyQyxDQUFBO0FBRXJGLENBQUE7QUFGYSxvQkFBQSxDQUNHLFNBQVksR0FBQSw0QkFBQSxDQUFBO0FBRzVCLFNBQVMsNEJBQUEsQ0FBNkIsRUFBRSxLQUFBLEVBQW9ELEVBQUE7QUFDMUYsRUFBQSxNQUFNLFdBQVcsVUFBVyxDQUFBLGNBQUEsQ0FBZSxLQUFNLENBQUEsS0FBQSxDQUFNLGNBQWMsS0FBSyxDQUFBLENBQUE7QUFDMUUsRUFBQSxJQUFJLENBQUMsUUFBVSxFQUFBO0FBQ04sSUFBQSxPQUFBLElBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHVCxFQUNHLHVCQUFBLEtBQUEsQ0FBQSxjQUFBLDBCQUFBLEVBQUE7QUFDQyxJQUFBLEdBQUEsRUFBSyxTQUFTLEtBQU0sQ0FBQSxHQUFBO0FBQ3BCLElBQUEsUUFBQTtBQUNBLElBQUEsTUFBQSxFQUFRLE1BQU0sS0FBTSxDQUFBLE1BQUE7SUFDcEIsVUFBWSxFQUFBLElBQUE7R0FDZCxDQUFBLENBQUE7QUFFSjs7OzsifQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
|
+
import { AutoSizeInput } from '@grafana/ui';
|
|
3
|
+
|
|
4
|
+
function VariableValueInput({ model }) {
|
|
5
|
+
const { value, key, loading } = model.useState();
|
|
6
|
+
const onBlur = useCallback(
|
|
7
|
+
(e) => {
|
|
8
|
+
model.setValue(e.currentTarget.value);
|
|
9
|
+
},
|
|
10
|
+
[model]
|
|
11
|
+
);
|
|
12
|
+
const onKeyDown = useCallback(
|
|
13
|
+
(e) => {
|
|
14
|
+
if (e.key === "Enter") {
|
|
15
|
+
model.setValue(e.currentTarget.value);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
[model]
|
|
19
|
+
);
|
|
20
|
+
return /* @__PURE__ */ React.createElement(AutoSizeInput, {
|
|
21
|
+
id: key,
|
|
22
|
+
placeholder: "Enter value",
|
|
23
|
+
minWidth: 15,
|
|
24
|
+
maxWidth: 30,
|
|
25
|
+
value,
|
|
26
|
+
loading,
|
|
27
|
+
onBlur,
|
|
28
|
+
onKeyDown
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { VariableValueInput };
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZUlucHV0LmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvY29tcG9uZW50cy9WYXJpYWJsZVZhbHVlSW5wdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgQXV0b1NpemVJbnB1dCB9IGZyb20gJ0BncmFmYW5hL3VpJztcblxuZnVuY3Rpb24gVmFyaWFibGVWYWx1ZUlucHV0KHsgbW9kZWwgfSkge1xuICBjb25zdCB7IHZhbHVlLCBrZXksIGxvYWRpbmcgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBtb2RlbC5zZXRWYWx1ZShlLmN1cnJlbnRUYXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgW21vZGVsXVxuICApO1xuICBjb25zdCBvbktleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZSkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgICAgbW9kZWwuc2V0VmFsdWUoZS5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFttb2RlbF1cbiAgKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KEF1dG9TaXplSW5wdXQsIHtcbiAgICBpZDoga2V5LFxuICAgIHBsYWNlaG9sZGVyOiBcIkVudGVyIHZhbHVlXCIsXG4gICAgbWluV2lkdGg6IDE1LFxuICAgIG1heFdpZHRoOiAzMCxcbiAgICB2YWx1ZSxcbiAgICBsb2FkaW5nLFxuICAgIG9uQmx1cixcbiAgICBvbktleURvd25cbiAgfSk7XG59XG5cbmV4cG9ydCB7IFZhcmlhYmxlVmFsdWVJbnB1dCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lWbUZ5YVdGaWJHVldZV3gxWlVsdWNIVjBMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdmRtRnlhV0ZpYkdWekwyTnZiWEJ2Ym1WdWRITXZWbUZ5YVdGaWJHVldZV3gxWlVsdWNIVjBMblJ6ZUNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1VtVmhZM1FzSUhzZ2RYTmxRMkZzYkdKaFkyc2dmU0JtY205dElDZHlaV0ZqZENjN1hHNWNibWx0Y0c5eWRDQjdJRUYxZEc5VGFYcGxTVzV3ZFhRZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5MWFTYzdYRzVjYm1sdGNHOXlkQ0I3SUZOalpXNWxRMjl0Y0c5dVpXNTBVSEp2Y0hNZ2ZTQm1jbTl0SUNjdUxpOHVMaTlqYjNKbEwzUjVjR1Z6Snp0Y2JtbHRjRzl5ZENCN0lGUmxlSFJDYjNoV1lYSnBZV0pzWlNCOUlHWnliMjBnSnk0dUwzWmhjbWxoYm5SekwxUmxlSFJDYjNoV1lYSnBZV0pzWlNjN1hHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQldZWEpwWVdKc1pWWmhiSFZsU1c1d2RYUW9leUJ0YjJSbGJDQjlPaUJUWTJWdVpVTnZiWEJ2Ym1WdWRGQnliM0J6UEZSbGVIUkNiM2hXWVhKcFlXSnNaVDRwSUh0Y2JpQWdZMjl1YzNRZ2V5QjJZV3gxWlN3Z2EyVjVMQ0JzYjJGa2FXNW5JSDBnUFNCdGIyUmxiQzUxYzJWVGRHRjBaU2dwTzF4dVhHNGdJR052Ym5OMElHOXVRbXgxY2lBOUlIVnpaVU5oYkd4aVlXTnJLRnh1SUNBZ0lDaGxPaUJTWldGamRDNURhR0Z1WjJWRmRtVnVkRHhJVkUxTVNXNXdkWFJGYkdWdFpXNTBQaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2JXOWtaV3d1YzJWMFZtRnNkV1VvWlM1amRYSnlaVzUwVkdGeVoyVjBMblpoYkhWbEtUdGNiaUFnSUNCOUxGeHVJQ0FnSUZ0dGIyUmxiRjFjYmlBZ0tUdGNibHh1SUNCamIyNXpkQ0J2Ymt0bGVVUnZkMjRnUFNCMWMyVkRZV3hzWW1GamF5aGNiaUFnSUNBb1pUb2dVbVZoWTNRdVMyVjVZbTloY21SRmRtVnVkRHhJVkUxTVNXNXdkWFJGYkdWdFpXNTBQaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR1V1YTJWNUlEMDlQU0FuUlc1MFpYSW5LU0I3WEc0Z0lDQWdJQ0FnSUcxdlpHVnNMbk5sZEZaaGJIVmxLR1V1WTNWeWNtVnVkRlJoY21kbGRDNTJZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlN4Y2JpQWdJQ0JiYlc5a1pXeGRYRzRnSUNrN1hHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThRWFYwYjFOcGVtVkpibkIxZEZ4dUlDQWdJQ0FnYVdROWUydGxlWDFjYmlBZ0lDQWdJSEJzWVdObGFHOXNaR1Z5UFZ3aVJXNTBaWElnZG1Gc2RXVmNJbHh1SUNBZ0lDQWdiV2x1VjJsa2RHZzllekUxZlZ4dUlDQWdJQ0FnYldGNFYybGtkR2c5ZXpNd2ZWeHVJQ0FnSUNBZ2RtRnNkV1U5ZTNaaGJIVmxmVnh1SUNBZ0lDQWdiRzloWkdsdVp6MTdiRzloWkdsdVozMWNiaUFnSUNBZ0lHOXVRbXgxY2oxN2IyNUNiSFZ5ZlZ4dUlDQWdJQ0FnYjI1TFpYbEViM2R1UFh0dmJrdGxlVVJ2ZDI1OVhHNGdJQ0FnTHo1Y2JpQWdLVHRjYm4xY2JpSmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96czdRVUZQWjBJc1UwRkJRU3hyUWtGQlFTeERRVUZ0UWl4RlFVRkZMRXRCUVVFc1JVRkJLME1zUlVGQlFUdEJRVU5zUml4RlFVRkJMRTFCUVUwc1JVRkJSU3hMUVVGUExFVkJRVUVzUjBGQlFTeEZRVUZMTEU5QlFWRXNSVUZCUVN4SFFVRkpMRTFCUVUwc1VVRkJVeXhGUVVGQkxFTkJRVUU3UVVGRkwwTXNSVUZCUVN4TlFVRk5MRTFCUVZNc1IwRkJRU3hYUVVGQk8wRkJRVUVzU1VGRFlpeERRVUZETEVOQlFUSkRMRXRCUVVFN1FVRkRNVU1zVFVGQlRTeExRVUZCTEVOQlFVRXNVVUZCUVN4RFFVRlRMRU5CUVVVc1EwRkJRU3hoUVVGQkxFTkJRV01zUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTjBRenRCUVVGQkxFbEJRMEVzUTBGQlF5eExRVUZMTEVOQlFVRTdRVUZCUVN4SFFVTlNMRU5CUVVFN1FVRkZRU3hGUVVGQkxFMUJRVTBzVTBGQldTeEhRVUZCTEZkQlFVRTdRVUZCUVN4SlFVTm9RaXhEUVVGRExFTkJRVFpETEV0QlFVRTdRVUZETlVNc1RVRkJTU3hKUVVGQkxFTkJRVUVzUTBGQlJTeFJRVUZSTEU5QlFWTXNSVUZCUVR0QlFVTnlRaXhSUVVGTkxFdEJRVUVzUTBGQlFTeFJRVUZCTEVOQlFWTXNRMEZCUlN4RFFVRkJMR0ZCUVVFc1EwRkJZeXhMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEzUkRPMEZCUVVFc1MwRkRSanRCUVVGQkxFbEJRMEVzUTBGQlF5eExRVUZMTEVOQlFVRTdRVUZCUVN4SFFVTlNMRU5CUVVFN1FVRkZRU3hGUVVGQkxIVkNRVU5ITEV0QlFVRXNRMEZCUVN4aFFVRkJMRU5CUVVFc1lVRkJRU3hGUVVGQk8wRkJRVUVzU1VGRFF5eEZRVUZKTEVWQlFVRXNSMEZCUVR0QlFVRkJMRWxCUTBvc1YwRkJXU3hGUVVGQkxHRkJRVUU3UVVGQlFTeEpRVU5hTEZGQlFWVXNSVUZCUVN4RlFVRkJPMEZCUVVFc1NVRkRWaXhSUVVGVkxFVkJRVUVzUlVGQlFUdEJRVUZCTEVsQlExWXNTMEZCUVR0QlFVRkJMRWxCUTBFc1QwRkJRVHRCUVVGQkxFbEJRMEVzVFVGQlFUdEJRVUZCTEVsQlEwRXNVMEZCUVR0QlFVRkJMRWRCUTBZc1EwRkJRU3hEUVVGQk8wRkJSVW83T3pzN0luMD1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFPZ0IsU0FBQSxrQkFBQSxDQUFtQixFQUFFLEtBQUEsRUFBK0MsRUFBQTtBQUNsRixFQUFBLE1BQU0sRUFBRSxLQUFPLEVBQUEsR0FBQSxFQUFLLE9BQVEsRUFBQSxHQUFJLE1BQU0sUUFBUyxFQUFBLENBQUE7QUFFL0MsRUFBQSxNQUFNLE1BQVMsR0FBQSxXQUFBO0FBQ2IsSUFBQSxDQUFDLENBQTJDLEtBQUE7QUFDcEMsTUFBQSxLQUFBLENBQUEsUUFBQSxDQUFTLENBQUUsQ0FBQSxhQUFBLENBQWMsS0FBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBRXRDLElBQUEsQ0FBQyxLQUFLLENBQUE7QUFBQSxHQUFBLENBQUE7QUFHUixFQUFBLE1BQU0sU0FBWSxHQUFBLFdBQUE7QUFDaEIsSUFBQSxDQUFDLENBQTZDLEtBQUE7QUFDeEMsTUFBQSxJQUFBLENBQUEsQ0FBRSxRQUFRLE9BQVMsRUFBQTtBQUNmLFFBQUEsS0FBQSxDQUFBLFFBQUEsQ0FBUyxDQUFFLENBQUEsYUFBQSxDQUFjLEtBQUssQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUN0QyxLQUFBO0FBRUYsSUFBQSxDQUFDLEtBQUssQ0FBQTtBQUFBLEdBQUEsQ0FBQTtBQUdSLEVBQ0csdUJBQUEsS0FBQSxDQUFBLGNBQUEsYUFBQSxFQUFBO0lBQ0MsRUFBSSxFQUFBLEdBQUE7SUFDSixXQUFZLEVBQUEsYUFBQTtJQUNaLFFBQVUsRUFBQSxFQUFBO0lBQ1YsUUFBVSxFQUFBLEVBQUE7QUFDVixJQUFBLEtBQUE7QUFDQSxJQUFBLE9BQUE7QUFDQSxJQUFBLE1BQUE7QUFDQSxJQUFBLFNBQUE7R0FDRixDQUFBLENBQUE7QUFFSjs7OzsifQ==
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { isArray } from 'lodash';
|
|
2
|
+
import React, { useState, useMemo, useEffect } from 'react';
|
|
3
|
+
import { useTheme2, getSelectStyles, useStyles2, Checkbox, Select, MultiSelect, ToggleAllState } from '@grafana/ui';
|
|
4
|
+
import { selectors } from '@grafana/e2e-selectors';
|
|
5
|
+
import { cx, css } from '@emotion/css';
|
|
6
|
+
import { getOptionSearcher } from './getOptionSearcher.js';
|
|
7
|
+
|
|
8
|
+
var __defProp = Object.defineProperty;
|
|
9
|
+
var __defProps = Object.defineProperties;
|
|
10
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
11
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
12
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
13
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
14
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
15
|
+
var __spreadValues = (a, b) => {
|
|
16
|
+
for (var prop in b || (b = {}))
|
|
17
|
+
if (__hasOwnProp.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
if (__getOwnPropSymbols)
|
|
20
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
21
|
+
if (__propIsEnum.call(b, prop))
|
|
22
|
+
__defNormalProp(a, prop, b[prop]);
|
|
23
|
+
}
|
|
24
|
+
return a;
|
|
25
|
+
};
|
|
26
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
27
|
+
var __objRest = (source, exclude) => {
|
|
28
|
+
var target = {};
|
|
29
|
+
for (var prop in source)
|
|
30
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
31
|
+
target[prop] = source[prop];
|
|
32
|
+
if (source != null && __getOwnPropSymbols)
|
|
33
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
34
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
35
|
+
target[prop] = source[prop];
|
|
36
|
+
}
|
|
37
|
+
return target;
|
|
38
|
+
};
|
|
39
|
+
const filterNoOp = () => true;
|
|
40
|
+
const filterAll = (v) => v.value !== "$__all";
|
|
41
|
+
const determineToggleAllState = (selectedValues, options) => {
|
|
42
|
+
if (selectedValues.length === options.filter(filterAll).length) {
|
|
43
|
+
return ToggleAllState.allSelected;
|
|
44
|
+
} else if (selectedValues.length === 0 || selectedValues.length === 1 && selectedValues[0] && selectedValues[0].value === "$__all") {
|
|
45
|
+
return ToggleAllState.noneSelected;
|
|
46
|
+
} else {
|
|
47
|
+
return ToggleAllState.indeterminate;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
function toSelectableValue(value, label) {
|
|
51
|
+
return {
|
|
52
|
+
value,
|
|
53
|
+
label: label != null ? label : String(value)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function VariableValueSelect({ model }) {
|
|
57
|
+
const { value, text, key, options, includeAll, isReadOnly, allowCustomValue = true } = model.useState();
|
|
58
|
+
const [inputValue, setInputValue] = useState("");
|
|
59
|
+
const [hasCustomValue, setHasCustomValue] = useState(false);
|
|
60
|
+
const selectValue = toSelectableValue(value, String(text));
|
|
61
|
+
const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
|
|
62
|
+
const onInputChange = (value2, { action }) => {
|
|
63
|
+
if (action === "input-change") {
|
|
64
|
+
setInputValue(value2);
|
|
65
|
+
if (model.onSearchChange) {
|
|
66
|
+
model.onSearchChange(value2);
|
|
67
|
+
}
|
|
68
|
+
return value2;
|
|
69
|
+
}
|
|
70
|
+
return value2;
|
|
71
|
+
};
|
|
72
|
+
const filteredOptions = optionSearcher(inputValue);
|
|
73
|
+
const onOpenMenu = () => {
|
|
74
|
+
if (hasCustomValue) {
|
|
75
|
+
setInputValue(String(text));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const onCloseMenu = () => {
|
|
79
|
+
setInputValue("");
|
|
80
|
+
};
|
|
81
|
+
return /* @__PURE__ */ React.createElement(Select, {
|
|
82
|
+
id: key,
|
|
83
|
+
isValidNewOption: (inputValue2) => inputValue2.trim().length > 0,
|
|
84
|
+
placeholder: "Select value",
|
|
85
|
+
width: "auto",
|
|
86
|
+
disabled: isReadOnly,
|
|
87
|
+
value: selectValue,
|
|
88
|
+
inputValue,
|
|
89
|
+
allowCustomValue,
|
|
90
|
+
virtualized: true,
|
|
91
|
+
filterOption: filterNoOp,
|
|
92
|
+
tabSelectsValue: false,
|
|
93
|
+
onInputChange,
|
|
94
|
+
onOpenMenu,
|
|
95
|
+
onCloseMenu,
|
|
96
|
+
options: filteredOptions,
|
|
97
|
+
"data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${value}`),
|
|
98
|
+
onChange: (newValue) => {
|
|
99
|
+
model.changeValueTo(newValue.value, newValue.label);
|
|
100
|
+
if (hasCustomValue !== newValue.__isNew__) {
|
|
101
|
+
setHasCustomValue(newValue.__isNew__);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function VariableValueSelectMulti({ model }) {
|
|
107
|
+
const {
|
|
108
|
+
value,
|
|
109
|
+
options,
|
|
110
|
+
key,
|
|
111
|
+
maxVisibleValues,
|
|
112
|
+
noValueOnClear,
|
|
113
|
+
includeAll,
|
|
114
|
+
isReadOnly,
|
|
115
|
+
allowCustomValue = true
|
|
116
|
+
} = model.useState();
|
|
117
|
+
const arrayValue = useMemo(() => isArray(value) ? value : [value], [value]);
|
|
118
|
+
const [uncommittedValue, setUncommittedValue] = useState(arrayValue);
|
|
119
|
+
const [inputValue, setInputValue] = useState("");
|
|
120
|
+
const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
|
|
121
|
+
useEffect(() => {
|
|
122
|
+
setUncommittedValue(arrayValue);
|
|
123
|
+
}, [arrayValue]);
|
|
124
|
+
const onInputChange = (value2, { action }) => {
|
|
125
|
+
if (action === "input-change") {
|
|
126
|
+
setInputValue(value2);
|
|
127
|
+
if (model.onSearchChange) {
|
|
128
|
+
model.onSearchChange(value2);
|
|
129
|
+
}
|
|
130
|
+
return value2;
|
|
131
|
+
}
|
|
132
|
+
if (action === "input-blur") {
|
|
133
|
+
setInputValue("");
|
|
134
|
+
return "";
|
|
135
|
+
}
|
|
136
|
+
return inputValue;
|
|
137
|
+
};
|
|
138
|
+
const placeholder = options.length > 0 ? "Select value" : "";
|
|
139
|
+
const filteredOptions = optionSearcher(inputValue);
|
|
140
|
+
return /* @__PURE__ */ React.createElement(MultiSelect, {
|
|
141
|
+
id: key,
|
|
142
|
+
placeholder,
|
|
143
|
+
width: "auto",
|
|
144
|
+
inputValue,
|
|
145
|
+
disabled: isReadOnly,
|
|
146
|
+
value: uncommittedValue,
|
|
147
|
+
noMultiValueWrap: true,
|
|
148
|
+
maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,
|
|
149
|
+
tabSelectsValue: false,
|
|
150
|
+
virtualized: true,
|
|
151
|
+
allowCustomValue,
|
|
152
|
+
toggleAllOptions: {
|
|
153
|
+
enabled: true,
|
|
154
|
+
optionsFilter: filterAll,
|
|
155
|
+
determineToggleAllState
|
|
156
|
+
},
|
|
157
|
+
options: filteredOptions,
|
|
158
|
+
closeMenuOnSelect: false,
|
|
159
|
+
components: { Option: OptionWithCheckbox },
|
|
160
|
+
isClearable: true,
|
|
161
|
+
hideSelectedOptions: false,
|
|
162
|
+
onInputChange,
|
|
163
|
+
onBlur: () => {
|
|
164
|
+
model.changeValueTo(uncommittedValue);
|
|
165
|
+
},
|
|
166
|
+
filterOption: filterNoOp,
|
|
167
|
+
"data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownValueLinkTexts(`${uncommittedValue}`),
|
|
168
|
+
onChange: (newValue, action) => {
|
|
169
|
+
if (action.action === "clear" && noValueOnClear) {
|
|
170
|
+
model.changeValueTo([]);
|
|
171
|
+
}
|
|
172
|
+
setUncommittedValue(newValue.map((x) => x.value));
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
const OptionWithCheckbox = ({
|
|
177
|
+
children,
|
|
178
|
+
data,
|
|
179
|
+
innerProps,
|
|
180
|
+
innerRef,
|
|
181
|
+
isFocused,
|
|
182
|
+
isSelected,
|
|
183
|
+
indeterminate,
|
|
184
|
+
renderOptionLabel
|
|
185
|
+
}) => {
|
|
186
|
+
var _b;
|
|
187
|
+
const _a = innerProps, rest = __objRest(_a, ["onMouseMove", "onMouseOver"]);
|
|
188
|
+
const theme = useTheme2();
|
|
189
|
+
const selectStyles = getSelectStyles(theme);
|
|
190
|
+
const optionStyles = useStyles2(getOptionStyles);
|
|
191
|
+
return /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({
|
|
192
|
+
ref: innerRef,
|
|
193
|
+
className: cx(selectStyles.option, isFocused && selectStyles.optionFocused)
|
|
194
|
+
}, rest), {
|
|
195
|
+
"data-testid": "data-testid Select option",
|
|
196
|
+
title: data.title
|
|
197
|
+
}), /* @__PURE__ */ React.createElement("div", {
|
|
198
|
+
className: optionStyles.checkbox
|
|
199
|
+
}, /* @__PURE__ */ React.createElement(Checkbox, {
|
|
200
|
+
indeterminate,
|
|
201
|
+
value: isSelected
|
|
202
|
+
})), /* @__PURE__ */ React.createElement("div", {
|
|
203
|
+
className: selectStyles.optionBody,
|
|
204
|
+
"data-testid": selectors.pages.Dashboard.SubMenu.submenuItemValueDropDownOptionTexts(
|
|
205
|
+
(_b = data.label) != null ? _b : String(data.value)
|
|
206
|
+
)
|
|
207
|
+
}, /* @__PURE__ */ React.createElement("span", null, children)));
|
|
208
|
+
};
|
|
209
|
+
OptionWithCheckbox.displayName = "SelectMenuOptions";
|
|
210
|
+
const getOptionStyles = (theme) => ({
|
|
211
|
+
checkbox: css({
|
|
212
|
+
marginRight: theme.spacing(2)
|
|
213
|
+
})
|
|
214
|
+
});
|
|
215
|
+
function renderSelectForVariable(model) {
|
|
216
|
+
if (model.state.isMulti) {
|
|
217
|
+
return /* @__PURE__ */ React.createElement(VariableValueSelectMulti, {
|
|
218
|
+
model
|
|
219
|
+
});
|
|
220
|
+
} else {
|
|
221
|
+
return /* @__PURE__ */ React.createElement(VariableValueSelect, {
|
|
222
|
+
model
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
export { OptionWithCheckbox, VariableValueSelect, VariableValueSelectMulti, renderSelectForVariable, toSelectableValue };
|
|
228
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZVNlbGVjdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2NvbXBvbmVudHMvVmFyaWFibGVWYWx1ZVNlbGVjdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0FycmF5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU2VsZWN0LCBNdWx0aVNlbGVjdCwgdXNlVGhlbWUyLCBnZXRTZWxlY3RTdHlsZXMsIHVzZVN0eWxlczIsIENoZWNrYm94LCBUb2dnbGVBbGxTdGF0ZSB9IGZyb20gJ0BncmFmYW5hL3VpJztcbmltcG9ydCB7IHNlbGVjdG9ycyB9IGZyb20gJ0BncmFmYW5hL2UyZS1zZWxlY3RvcnMnO1xuaW1wb3J0IHsgY3gsIGNzcyB9IGZyb20gJ0BlbW90aW9uL2Nzcyc7XG5pbXBvcnQgeyBnZXRPcHRpb25TZWFyY2hlciB9IGZyb20gJy4vZ2V0T3B0aW9uU2VhcmNoZXIuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbnZhciBfX29ialJlc3QgPSAoc291cmNlLCBleGNsdWRlKSA9PiB7XG4gIHZhciB0YXJnZXQgPSB7fTtcbiAgZm9yICh2YXIgcHJvcCBpbiBzb3VyY2UpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKHNvdXJjZSwgcHJvcCkgJiYgZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMClcbiAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgaWYgKHNvdXJjZSAhPSBudWxsICYmIF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKHNvdXJjZSkpIHtcbiAgICAgIGlmIChleGNsdWRlLmluZGV4T2YocHJvcCkgPCAwICYmIF9fcHJvcElzRW51bS5jYWxsKHNvdXJjZSwgcHJvcCkpXG4gICAgICAgIHRhcmdldFtwcm9wXSA9IHNvdXJjZVtwcm9wXTtcbiAgICB9XG4gIHJldHVybiB0YXJnZXQ7XG59O1xuY29uc3QgZmlsdGVyTm9PcCA9ICgpID0+IHRydWU7XG5jb25zdCBmaWx0ZXJBbGwgPSAodikgPT4gdi52YWx1ZSAhPT0gXCIkX19hbGxcIjtcbmNvbnN0IGRldGVybWluZVRvZ2dsZUFsbFN0YXRlID0gKHNlbGVjdGVkVmFsdWVzLCBvcHRpb25zKSA9PiB7XG4gIGlmIChzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IG9wdGlvbnMuZmlsdGVyKGZpbHRlckFsbCkubGVuZ3RoKSB7XG4gICAgcmV0dXJuIFRvZ2dsZUFsbFN0YXRlLmFsbFNlbGVjdGVkO1xuICB9IGVsc2UgaWYgKHNlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCB8fCBzZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDEgJiYgc2VsZWN0ZWRWYWx1ZXNbMF0gJiYgc2VsZWN0ZWRWYWx1ZXNbMF0udmFsdWUgPT09IFwiJF9fYWxsXCIpIHtcbiAgICByZXR1cm4gVG9nZ2xlQWxsU3RhdGUubm9uZVNlbGVjdGVkO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBUb2dnbGVBbGxTdGF0ZS5pbmRldGVybWluYXRlO1xuICB9XG59O1xuZnVuY3Rpb24gdG9TZWxlY3RhYmxlVmFsdWUodmFsdWUsIGxhYmVsKSB7XG4gIHJldHVybiB7XG4gICAgdmFsdWUsXG4gICAgbGFiZWw6IGxhYmVsICE9IG51bGwgPyBsYWJlbCA6IFN0cmluZyh2YWx1ZSlcbiAgfTtcbn1cbmZ1bmN0aW9uIFZhcmlhYmxlVmFsdWVTZWxlY3QoeyBtb2RlbCB9KSB7XG4gIGNvbnN0IHsgdmFsdWUsIHRleHQsIGtleSwgb3B0aW9ucywgaW5jbHVkZUFsbCwgaXNSZWFkT25seSwgYWxsb3dDdXN0b21WYWx1ZSA9IHRydWUgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbaGFzQ3VzdG9tVmFsdWUsIHNldEhhc0N1c3RvbVZhbHVlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2VsZWN0VmFsdWUgPSB0b1NlbGVjdGFibGVWYWx1ZSh2YWx1ZSwgU3RyaW5nKHRleHQpKTtcbiAgY29uc3Qgb3B0aW9uU2VhcmNoZXIgPSB1c2VNZW1vKCgpID0+IGdldE9wdGlvblNlYXJjaGVyKG9wdGlvbnMsIGluY2x1ZGVBbGwpLCBbb3B0aW9ucywgaW5jbHVkZUFsbF0pO1xuICBjb25zdCBvbklucHV0Q2hhbmdlID0gKHZhbHVlMiwgeyBhY3Rpb24gfSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09IFwiaW5wdXQtY2hhbmdlXCIpIHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUyKTtcbiAgICAgIGlmIChtb2RlbC5vblNlYXJjaENoYW5nZSkge1xuICAgICAgICBtb2RlbC5vblNlYXJjaENoYW5nZSh2YWx1ZTIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlMjtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlMjtcbiAgfTtcbiAgY29uc3QgZmlsdGVyZWRPcHRpb25zID0gb3B0aW9uU2VhcmNoZXIoaW5wdXRWYWx1ZSk7XG4gIGNvbnN0IG9uT3Blbk1lbnUgPSAoKSA9PiB7XG4gICAgaWYgKGhhc0N1c3RvbVZhbHVlKSB7XG4gICAgICBzZXRJbnB1dFZhbHVlKFN0cmluZyh0ZXh0KSk7XG4gICAgfVxuICB9O1xuICBjb25zdCBvbkNsb3NlTWVudSA9ICgpID0+IHtcbiAgICBzZXRJbnB1dFZhbHVlKFwiXCIpO1xuICB9O1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VsZWN0LCB7XG4gICAgaWQ6IGtleSxcbiAgICBpc1ZhbGlkTmV3T3B0aW9uOiAoaW5wdXRWYWx1ZTIpID0+IGlucHV0VmFsdWUyLnRyaW0oKS5sZW5ndGggPiAwLFxuICAgIHBsYWNlaG9sZGVyOiBcIlNlbGVjdCB2YWx1ZVwiLFxuICAgIHdpZHRoOiBcImF1dG9cIixcbiAgICBkaXNhYmxlZDogaXNSZWFkT25seSxcbiAgICB2YWx1ZTogc2VsZWN0VmFsdWUsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBhbGxvd0N1c3RvbVZhbHVlLFxuICAgIHZpcnR1YWxpemVkOiB0cnVlLFxuICAgIGZpbHRlck9wdGlvbjogZmlsdGVyTm9PcCxcbiAgICB0YWJTZWxlY3RzVmFsdWU6IGZhbHNlLFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25PcGVuTWVudSxcbiAgICBvbkNsb3NlTWVudSxcbiAgICBvcHRpb25zOiBmaWx0ZXJlZE9wdGlvbnMsXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1WYWx1ZURyb3BEb3duVmFsdWVMaW5rVGV4dHMoYCR7dmFsdWV9YCksXG4gICAgb25DaGFuZ2U6IChuZXdWYWx1ZSkgPT4ge1xuICAgICAgbW9kZWwuY2hhbmdlVmFsdWVUbyhuZXdWYWx1ZS52YWx1ZSwgbmV3VmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGhhc0N1c3RvbVZhbHVlICE9PSBuZXdWYWx1ZS5fX2lzTmV3X18pIHtcbiAgICAgICAgc2V0SGFzQ3VzdG9tVmFsdWUobmV3VmFsdWUuX19pc05ld19fKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuZnVuY3Rpb24gVmFyaWFibGVWYWx1ZVNlbGVjdE11bHRpKHsgbW9kZWwgfSkge1xuICBjb25zdCB7XG4gICAgdmFsdWUsXG4gICAgb3B0aW9ucyxcbiAgICBrZXksXG4gICAgbWF4VmlzaWJsZVZhbHVlcyxcbiAgICBub1ZhbHVlT25DbGVhcixcbiAgICBpbmNsdWRlQWxsLFxuICAgIGlzUmVhZE9ubHksXG4gICAgYWxsb3dDdXN0b21WYWx1ZSA9IHRydWVcbiAgfSA9IG1vZGVsLnVzZVN0YXRlKCk7XG4gIGNvbnN0IGFycmF5VmFsdWUgPSB1c2VNZW1vKCgpID0+IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdLCBbdmFsdWVdKTtcbiAgY29uc3QgW3VuY29tbWl0dGVkVmFsdWUsIHNldFVuY29tbWl0dGVkVmFsdWVdID0gdXNlU3RhdGUoYXJyYXlWYWx1ZSk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvcHRpb25TZWFyY2hlciA9IHVzZU1lbW8oKCkgPT4gZ2V0T3B0aW9uU2VhcmNoZXIob3B0aW9ucywgaW5jbHVkZUFsbCksIFtvcHRpb25zLCBpbmNsdWRlQWxsXSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0VW5jb21taXR0ZWRWYWx1ZShhcnJheVZhbHVlKTtcbiAgfSwgW2FycmF5VmFsdWVdKTtcbiAgY29uc3Qgb25JbnB1dENoYW5nZSA9ICh2YWx1ZTIsIHsgYWN0aW9uIH0pID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSBcImlucHV0LWNoYW5nZVwiKSB7XG4gICAgICBzZXRJbnB1dFZhbHVlKHZhbHVlMik7XG4gICAgICBpZiAobW9kZWwub25TZWFyY2hDaGFuZ2UpIHtcbiAgICAgICAgbW9kZWwub25TZWFyY2hDaGFuZ2UodmFsdWUyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTI7XG4gICAgfVxuICAgIGlmIChhY3Rpb24gPT09IFwiaW5wdXQtYmx1clwiKSB7XG4gICAgICBzZXRJbnB1dFZhbHVlKFwiXCIpO1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFZhbHVlO1xuICB9O1xuICBjb25zdCBwbGFjZWhvbGRlciA9IG9wdGlvbnMubGVuZ3RoID4gMCA/IFwiU2VsZWN0IHZhbHVlXCIgOiBcIlwiO1xuICBjb25zdCBmaWx0ZXJlZE9wdGlvbnMgPSBvcHRpb25TZWFyY2hlcihpbnB1dFZhbHVlKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KE11bHRpU2VsZWN0LCB7XG4gICAgaWQ6IGtleSxcbiAgICBwbGFjZWhvbGRlcixcbiAgICB3aWR0aDogXCJhdXRvXCIsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICBkaXNhYmxlZDogaXNSZWFkT25seSxcbiAgICB2YWx1ZTogdW5jb21taXR0ZWRWYWx1ZSxcbiAgICBub011bHRpVmFsdWVXcmFwOiB0cnVlLFxuICAgIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMgIT0gbnVsbCA/IG1heFZpc2libGVWYWx1ZXMgOiA1LFxuICAgIHRhYlNlbGVjdHNWYWx1ZTogZmFsc2UsXG4gICAgdmlydHVhbGl6ZWQ6IHRydWUsXG4gICAgYWxsb3dDdXN0b21WYWx1ZSxcbiAgICB0b2dnbGVBbGxPcHRpb25zOiB7XG4gICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgb3B0aW9uc0ZpbHRlcjogZmlsdGVyQWxsLFxuICAgICAgZGV0ZXJtaW5lVG9nZ2xlQWxsU3RhdGVcbiAgICB9LFxuICAgIG9wdGlvbnM6IGZpbHRlcmVkT3B0aW9ucyxcbiAgICBjbG9zZU1lbnVPblNlbGVjdDogZmFsc2UsXG4gICAgY29tcG9uZW50czogeyBPcHRpb246IE9wdGlvbldpdGhDaGVja2JveCB9LFxuICAgIGlzQ2xlYXJhYmxlOiB0cnVlLFxuICAgIGhpZGVTZWxlY3RlZE9wdGlvbnM6IGZhbHNlLFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICBtb2RlbC5jaGFuZ2VWYWx1ZVRvKHVuY29tbWl0dGVkVmFsdWUpO1xuICAgIH0sXG4gICAgZmlsdGVyT3B0aW9uOiBmaWx0ZXJOb09wLFxuICAgIFwiZGF0YS10ZXN0aWRcIjogc2VsZWN0b3JzLnBhZ2VzLkRhc2hib2FyZC5TdWJNZW51LnN1Ym1lbnVJdGVtVmFsdWVEcm9wRG93blZhbHVlTGlua1RleHRzKGAke3VuY29tbWl0dGVkVmFsdWV9YCksXG4gICAgb25DaGFuZ2U6IChuZXdWYWx1ZSwgYWN0aW9uKSA9PiB7XG4gICAgICBpZiAoYWN0aW9uLmFjdGlvbiA9PT0gXCJjbGVhclwiICYmIG5vVmFsdWVPbkNsZWFyKSB7XG4gICAgICAgIG1vZGVsLmNoYW5nZVZhbHVlVG8oW10pO1xuICAgICAgfVxuICAgICAgc2V0VW5jb21taXR0ZWRWYWx1ZShuZXdWYWx1ZS5tYXAoKHgpID0+IHgudmFsdWUpKTtcbiAgICB9XG4gIH0pO1xufVxuY29uc3QgT3B0aW9uV2l0aENoZWNrYm94ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGRhdGEsXG4gIGlubmVyUHJvcHMsXG4gIGlubmVyUmVmLFxuICBpc0ZvY3VzZWQsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV0ZXJtaW5hdGUsXG4gIHJlbmRlck9wdGlvbkxhYmVsXG59KSA9PiB7XG4gIHZhciBfYjtcbiAgY29uc3QgX2EgPSBpbm5lclByb3BzLCByZXN0ID0gX19vYmpSZXN0KF9hLCBbXCJvbk1vdXNlTW92ZVwiLCBcIm9uTW91c2VPdmVyXCJdKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZTIoKTtcbiAgY29uc3Qgc2VsZWN0U3R5bGVzID0gZ2V0U2VsZWN0U3R5bGVzKHRoZW1lKTtcbiAgY29uc3Qgb3B0aW9uU3R5bGVzID0gdXNlU3R5bGVzMihnZXRPcHRpb25TdHlsZXMpO1xuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwgX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7XG4gICAgcmVmOiBpbm5lclJlZixcbiAgICBjbGFzc05hbWU6IGN4KHNlbGVjdFN0eWxlcy5vcHRpb24sIGlzRm9jdXNlZCAmJiBzZWxlY3RTdHlsZXMub3B0aW9uRm9jdXNlZClcbiAgfSwgcmVzdCksIHtcbiAgICBcImRhdGEtdGVzdGlkXCI6IFwiZGF0YS10ZXN0aWQgU2VsZWN0IG9wdGlvblwiLFxuICAgIHRpdGxlOiBkYXRhLnRpdGxlXG4gIH0pLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgY2xhc3NOYW1lOiBvcHRpb25TdHlsZXMuY2hlY2tib3hcbiAgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ2hlY2tib3gsIHtcbiAgICBpbmRldGVybWluYXRlLFxuICAgIHZhbHVlOiBpc1NlbGVjdGVkXG4gIH0pKSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogc2VsZWN0U3R5bGVzLm9wdGlvbkJvZHksXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1WYWx1ZURyb3BEb3duT3B0aW9uVGV4dHMoXG4gICAgICAoX2IgPSBkYXRhLmxhYmVsKSAhPSBudWxsID8gX2IgOiBTdHJpbmcoZGF0YS52YWx1ZSlcbiAgICApXG4gIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBjaGlsZHJlbikpKTtcbn07XG5PcHRpb25XaXRoQ2hlY2tib3guZGlzcGxheU5hbWUgPSBcIlNlbGVjdE1lbnVPcHRpb25zXCI7XG5jb25zdCBnZXRPcHRpb25TdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIGNoZWNrYm94OiBjc3Moe1xuICAgIG1hcmdpblJpZ2h0OiB0aGVtZS5zcGFjaW5nKDIpXG4gIH0pXG59KTtcbmZ1bmN0aW9uIHJlbmRlclNlbGVjdEZvclZhcmlhYmxlKG1vZGVsKSB7XG4gIGlmIChtb2RlbC5zdGF0ZS5pc011bHRpKSB7XG4gICAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFZhcmlhYmxlVmFsdWVTZWxlY3RNdWx0aSwge1xuICAgICAgbW9kZWxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmFyaWFibGVWYWx1ZVNlbGVjdCwge1xuICAgICAgbW9kZWxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBPcHRpb25XaXRoQ2hlY2tib3gsIFZhcmlhYmxlVmFsdWVTZWxlY3QsIFZhcmlhYmxlVmFsdWVTZWxlY3RNdWx0aSwgcmVuZGVyU2VsZWN0Rm9yVmFyaWFibGUsIHRvU2VsZWN0YWJsZVZhbHVlIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVZtRnlhV0ZpYkdWV1lXeDFaVk5sYkdWamRDNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dkxpNHZjM0pqTDNaaGNtbGhZbXhsY3k5amIyMXdiMjVsYm5SekwxWmhjbWxoWW14bFZtRnNkV1ZUWld4bFkzUXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lHbHpRWEp5WVhrZ2ZTQm1jbTl0SUNkc2IyUmhjMmduTzF4dWFXMXdiM0owSUZKbFlXTjBMQ0I3SUZKbFprTmhiR3hpWVdOckxDQjFjMlZGWm1abFkzUXNJSFZ6WlUxbGJXOHNJSFZ6WlZOMFlYUmxJSDBnWm5KdmJTQW5jbVZoWTNRbk8xeHVhVzF3YjNKMElIdGNiaUFnUTJobFkydGliM2dzWEc0Z0lFbHVjSFYwUVdOMGFXOXVUV1YwWVN4Y2JpQWdUWFZzZEdsVFpXeGxZM1FzWEc0Z0lGTmxiR1ZqZEN4Y2JpQWdWRzluWjJ4bFFXeHNVM1JoZEdVc1hHNGdJR2RsZEZObGJHVmpkRk4wZVd4bGN5eGNiaUFnZFhObFUzUjViR1Z6TWl4Y2JpQWdkWE5sVkdobGJXVXlMRnh1ZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzkxYVNjN1hHNWNibWx0Y0c5eWRDQjdJRk5qWlc1bFEyOXRjRzl1Wlc1MFVISnZjSE1nZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDNSNWNHVnpKenRjYm1sdGNHOXlkQ0I3SUUxMWJIUnBWbUZzZFdWV1lYSnBZV0pzWlNCOUlHWnliMjBnSnk0dUwzWmhjbWxoYm5SekwwMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pTYzdYRzVwYlhCdmNuUWdleUJXWVhKcFlXSnNaVlpoYkhWbExDQldZWEpwWVdKc1pWWmhiSFZsVTJsdVoyeGxJSDBnWm5KdmJTQW5MaTR2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnYzJWc1pXTjBiM0p6SUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WlRKbExYTmxiR1ZqZEc5eWN5YzdYRzVwYlhCdmNuUWdleUJIY21GbVlXNWhWR2hsYldVeUxDQlRaV3hsWTNSaFlteGxWbUZzZFdVZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5a1lYUmhKenRjYm1sdGNHOXlkQ0I3SUdOemN5d2dZM2dnZlNCbWNtOXRJQ2RBWlcxdmRHbHZiaTlqYzNNbk8xeHVhVzF3YjNKMElIc2daMlYwVDNCMGFXOXVVMlZoY21Ob1pYSWdmU0JtY205dElDY3VMMmRsZEU5d2RHbHZibE5sWVhKamFHVnlKenRjYmx4dVkyOXVjM1FnWm1sc2RHVnlUbTlQY0NBOUlDZ3BJRDArSUhSeWRXVTdYRzVjYm1OdmJuTjBJR1pwYkhSbGNrRnNiQ0E5SUNoMk9pQlRaV3hsWTNSaFlteGxWbUZzZFdVOFZtRnlhV0ZpYkdWV1lXeDFaVk5wYm1kc1pUNHBJRDArSUhZdWRtRnNkV1VnSVQwOUlDY2tYMTloYkd3bk8xeHVYRzVqYjI1emRDQmtaWFJsY20xcGJtVlViMmRuYkdWQmJHeFRkR0YwWlNBOUlDaGNiaUFnYzJWc1pXTjBaV1JXWVd4MVpYTTZJRUZ5Y21GNVBGTmxiR1ZqZEdGaWJHVldZV3gxWlR4V1lYSnBZV0pzWlZaaGJIVmxVMmx1WjJ4bFBqNHNYRzRnSUc5d2RHbHZibk02SUVGeWNtRjVQRk5sYkdWamRHRmliR1ZXWVd4MVpUeFdZWEpwWVdKc1pWWmhiSFZsVTJsdVoyeGxQajVjYmlrZ1BUNGdlMXh1SUNCcFppQW9jMlZzWldOMFpXUldZV3gxWlhNdWJHVnVaM1JvSUQwOVBTQnZjSFJwYjI1ekxtWnBiSFJsY2lobWFXeDBaWEpCYkd3cExteGxibWQwYUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJVYjJkbmJHVkJiR3hUZEdGMFpTNWhiR3hUWld4bFkzUmxaRHRjYmlBZ2ZTQmxiSE5sSUdsbUlDaGNiaUFnSUNCelpXeGxZM1JsWkZaaGJIVmxjeTVzWlc1bmRHZ2dQVDA5SURBZ2ZIeGNiaUFnSUNBb2MyVnNaV04wWldSV1lXeDFaWE11YkdWdVozUm9JRDA5UFNBeElDWW1JSE5sYkdWamRHVmtWbUZzZFdWeld6QmRJQ1ltSUhObGJHVmpkR1ZrVm1Gc2RXVnpXekJkTG5aaGJIVmxJRDA5UFNBbkpGOWZZV3hzSnlsY2JpQWdLU0I3WEc0Z0lDQWdjbVYwZFhKdUlGUnZaMmRzWlVGc2JGTjBZWFJsTG01dmJtVlRaV3hsWTNSbFpEdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnlaWFIxY200Z1ZHOW5aMnhsUVd4c1UzUmhkR1V1YVc1a1pYUmxjbTFwYm1GMFpUdGNiaUFnZlZ4dWZUdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFJ2VTJWc1pXTjBZV0pzWlZaaGJIVmxQRlErS0haaGJIVmxPaUJVTENCc1lXSmxiRDg2SUhOMGNtbHVaeWs2SUZObGJHVmpkR0ZpYkdWV1lXeDFaVHhVUGlCN1hHNGdJSEpsZEhWeWJpQjdYRzRnSUNBZ2RtRnNkV1VzWEc0Z0lDQWdiR0ZpWld3NklHeGhZbVZzSUQ4L0lGTjBjbWx1WnloMllXeDFaU2tzWEc0Z0lIMDdYRzU5WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCV1lYSnBZV0pzWlZaaGJIVmxVMlZzWldOMEtIc2diVzlrWld3Z2ZUb2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjenhOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1UrS1NCN1hHNGdJR052Ym5OMElIc2dkbUZzZFdVc0lIUmxlSFFzSUd0bGVTd2diM0IwYVc5dWN5d2dhVzVqYkhWa1pVRnNiQ3dnYVhOU1pXRmtUMjVzZVN3Z1lXeHNiM2REZFhOMGIyMVdZV3gxWlNBOUlIUnlkV1VnZlNBOUlHMXZaR1ZzTG5WelpWTjBZWFJsS0NrN1hHNGdJR052Ym5OMElGdHBibkIxZEZaaGJIVmxMQ0J6WlhSSmJuQjFkRlpoYkhWbFhTQTlJSFZ6WlZOMFlYUmxLQ2NuS1R0Y2JpQWdZMjl1YzNRZ1cyaGhjME4xYzNSdmJWWmhiSFZsTENCelpYUklZWE5EZFhOMGIyMVdZV3gxWlYwZ1BTQjFjMlZUZEdGMFpTaG1ZV3h6WlNrN1hHNGdJR052Ym5OMElITmxiR1ZqZEZaaGJIVmxJRDBnZEc5VFpXeGxZM1JoWW14bFZtRnNkV1VvZG1Gc2RXVXNJRk4wY21sdVp5aDBaWGgwS1NrN1hHNWNiaUFnWTI5dWMzUWdiM0IwYVc5dVUyVmhjbU5vWlhJZ1BTQjFjMlZOWlcxdktDZ3BJRDArSUdkbGRFOXdkR2x2YmxObFlYSmphR1Z5S0c5d2RHbHZibk1zSUdsdVkyeDFaR1ZCYkd3cExDQmJiM0IwYVc5dWN5d2dhVzVqYkhWa1pVRnNiRjBwTzF4dVhHNGdJR052Ym5OMElHOXVTVzV3ZFhSRGFHRnVaMlVnUFNBb2RtRnNkV1U2SUhOMGNtbHVaeXdnZXlCaFkzUnBiMjRnZlRvZ1NXNXdkWFJCWTNScGIyNU5aWFJoS1NBOVBpQjdYRzRnSUNBZ2FXWWdLR0ZqZEdsdmJpQTlQVDBnSjJsdWNIVjBMV05vWVc1blpTY3BJSHRjYmlBZ0lDQWdJSE5sZEVsdWNIVjBWbUZzZFdVb2RtRnNkV1VwTzF4dUlDQWdJQ0FnYVdZZ0tHMXZaR1ZzTG05dVUyVmhjbU5vUTJoaGJtZGxLU0I3WEc0Z0lDQWdJQ0FnSUcxdlpHVnNMbTl1VTJWaGNtTm9RMmhoYm1kbElTaDJZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCeVpYUjFjbTRnZG1Gc2RXVTdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhaaGJIVmxPMXh1SUNCOU8xeHVYRzRnSUdOdmJuTjBJR1pwYkhSbGNtVmtUM0IwYVc5dWN5QTlJRzl3ZEdsdmJsTmxZWEpqYUdWeUtHbHVjSFYwVm1Gc2RXVXBPMXh1WEc0Z0lHTnZibk4wSUc5dVQzQmxiazFsYm5VZ1BTQW9LU0E5UGlCN1hHNGdJQ0FnYVdZZ0tHaGhjME4xYzNSdmJWWmhiSFZsS1NCN1hHNGdJQ0FnSUNCelpYUkpibkIxZEZaaGJIVmxLRk4wY21sdVp5aDBaWGgwS1NrN1hHNGdJQ0FnZlZ4dUlDQjlPMXh1WEc0Z0lHTnZibk4wSUc5dVEyeHZjMlZOWlc1MUlEMGdLQ2tnUFQ0Z2UxeHVJQ0FnSUhObGRFbHVjSFYwVm1Gc2RXVW9KeWNwTzF4dUlDQjlPMXh1WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEZObGJHVmpkRHhXWVhKcFlXSnNaVlpoYkhWbFBseHVJQ0FnSUNBZ2FXUTllMnRsZVgxY2JpQWdJQ0FnSUdselZtRnNhV1JPWlhkUGNIUnBiMjQ5ZXlocGJuQjFkRlpoYkhWbEtTQTlQaUJwYm5CMWRGWmhiSFZsTG5SeWFXMG9LUzVzWlc1bmRHZ2dQaUF3ZlZ4dUlDQWdJQ0FnY0d4aFkyVm9iMnhrWlhJOVhDSlRaV3hsWTNRZ2RtRnNkV1ZjSWx4dUlDQWdJQ0FnZDJsa2RHZzlYQ0poZFhSdlhDSmNiaUFnSUNBZ0lHUnBjMkZpYkdWa1BYdHBjMUpsWVdSUGJteDVmVnh1SUNBZ0lDQWdkbUZzZFdVOWUzTmxiR1ZqZEZaaGJIVmxmVnh1SUNBZ0lDQWdhVzV3ZFhSV1lXeDFaVDE3YVc1d2RYUldZV3gxWlgxY2JpQWdJQ0FnSUdGc2JHOTNRM1Z6ZEc5dFZtRnNkV1U5ZTJGc2JHOTNRM1Z6ZEc5dFZtRnNkV1Y5WEc0Z0lDQWdJQ0IyYVhKMGRXRnNhWHBsWkZ4dUlDQWdJQ0FnWm1sc2RHVnlUM0IwYVc5dVBYdG1hV3gwWlhKT2IwOXdmVnh1SUNBZ0lDQWdkR0ZpVTJWc1pXTjBjMVpoYkhWbFBYdG1ZV3h6WlgxY2JpQWdJQ0FnSUc5dVNXNXdkWFJEYUdGdVoyVTllMjl1U1c1d2RYUkRhR0Z1WjJWOVhHNGdJQ0FnSUNCdmJrOXdaVzVOWlc1MVBYdHZiazl3Wlc1TlpXNTFmVnh1SUNBZ0lDQWdiMjVEYkc5elpVMWxiblU5ZTI5dVEyeHZjMlZOWlc1MWZWeHVJQ0FnSUNBZ2IzQjBhVzl1Y3oxN1ptbHNkR1Z5WldSUGNIUnBiMjV6ZlZ4dUlDQWdJQ0FnWkdGMFlTMTBaWE4wYVdROWUzTmxiR1ZqZEc5eWN5NXdZV2RsY3k1RVlYTm9ZbTloY21RdVUzVmlUV1Z1ZFM1emRXSnRaVzUxU1hSbGJWWmhiSFZsUkhKdmNFUnZkMjVXWVd4MVpVeHBibXRVWlhoMGN5aGdKSHQyWVd4MVpYMWdLWDFjYmlBZ0lDQWdJRzl1UTJoaGJtZGxQWHNvYm1WM1ZtRnNkV1VwSUQwK0lIdGNiaUFnSUNBZ0lDQWdiVzlrWld3dVkyaGhibWRsVm1Gc2RXVlVieWh1WlhkV1lXeDFaUzUyWVd4MVpTRXNJRzVsZDFaaGJIVmxMbXhoWW1Wc0lTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHaGhjME4xYzNSdmJWWmhiSFZsSUNFOVBTQnVaWGRXWVd4MVpTNWZYMmx6VG1WM1gxOHBJSHRjYmlBZ0lDQWdJQ0FnSUNCelpYUklZWE5EZFhOMGIyMVdZV3gxWlNodVpYZFdZV3gxWlM1ZlgybHpUbVYzWDE4cE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlmVnh1SUNBZ0lDOCtYRzRnSUNrN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJXWVhKcFlXSnNaVlpoYkhWbFUyVnNaV04wVFhWc2RHa29leUJ0YjJSbGJDQjlPaUJUWTJWdVpVTnZiWEJ2Ym1WdWRGQnliM0J6UEUxMWJIUnBWbUZzZFdWV1lYSnBZV0pzWlQ0cElIdGNiaUFnWTI5dWMzUWdlMXh1SUNBZ0lIWmhiSFZsTEZ4dUlDQWdJRzl3ZEdsdmJuTXNYRzRnSUNBZ2EyVjVMRnh1SUNBZ0lHMWhlRlpwYzJsaWJHVldZV3gxWlhNc1hHNGdJQ0FnYm05V1lXeDFaVTl1UTJ4bFlYSXNYRzRnSUNBZ2FXNWpiSFZrWlVGc2JDeGNiaUFnSUNCcGMxSmxZV1JQYm14NUxGeHVJQ0FnSUdGc2JHOTNRM1Z6ZEc5dFZtRnNkV1VnUFNCMGNuVmxMRnh1SUNCOUlEMGdiVzlrWld3dWRYTmxVM1JoZEdVb0tUdGNiaUFnWTI5dWMzUWdZWEp5WVhsV1lXeDFaU0E5SUhWelpVMWxiVzhvS0NrZ1BUNGdLR2x6UVhKeVlYa29kbUZzZFdVcElEOGdkbUZzZFdVZ09pQmJkbUZzZFdWZEtTd2dXM1poYkhWbFhTazdYRzRnSUM4dklGUnZJRzV2ZENCMGNtbG5aMlZ5SUhGMVpYSnBaWE1nYjI0Z1pYWmxjbmtnYzJWc1pXTjBhVzl1SUhkbElITjBiM0psSUhSb2FYTWdjM1JoZEdVZ2JHOWpZV3hzZVNCb1pYSmxJR0Z1WkNCdmJteDVJSFZ3WkdGMFpTQjBhR1VnZG1GeWFXRmliR1VnYjI1Q2JIVnlYRzRnSUdOdmJuTjBJRnQxYm1OdmJXMXBkSFJsWkZaaGJIVmxMQ0J6WlhSVmJtTnZiVzFwZEhSbFpGWmhiSFZsWFNBOUlIVnpaVk4wWVhSbEtHRnljbUY1Vm1Gc2RXVXBPMXh1SUNCamIyNXpkQ0JiYVc1d2RYUldZV3gxWlN3Z2MyVjBTVzV3ZFhSV1lXeDFaVjBnUFNCMWMyVlRkR0YwWlNnbkp5azdYRzVjYmlBZ1kyOXVjM1FnYjNCMGFXOXVVMlZoY21Ob1pYSWdQU0IxYzJWTlpXMXZLQ2dwSUQwK0lHZGxkRTl3ZEdsdmJsTmxZWEpqYUdWeUtHOXdkR2x2Ym5Nc0lHbHVZMngxWkdWQmJHd3BMQ0JiYjNCMGFXOXVjeXdnYVc1amJIVmtaVUZzYkYwcE8xeHVYRzRnSUM4dklFUmxkR1ZqZENCMllXeDFaU0JqYUdGdVoyVnpJRzkxZEhOcFpHVmNiaUFnZFhObFJXWm1aV04wS0NncElEMCtJSHRjYmlBZ0lDQnpaWFJWYm1OdmJXMXBkSFJsWkZaaGJIVmxLR0Z5Y21GNVZtRnNkV1VwTzF4dUlDQjlMQ0JiWVhKeVlYbFdZV3gxWlYwcE8xeHVYRzRnSUdOdmJuTjBJRzl1U1c1d2RYUkRhR0Z1WjJVZ1BTQW9kbUZzZFdVNklITjBjbWx1Wnl3Z2V5QmhZM1JwYjI0Z2ZUb2dTVzV3ZFhSQlkzUnBiMjVOWlhSaEtTQTlQaUI3WEc0Z0lDQWdhV1lnS0dGamRHbHZiaUE5UFQwZ0oybHVjSFYwTFdOb1lXNW5aU2NwSUh0Y2JpQWdJQ0FnSUhObGRFbHVjSFYwVm1Gc2RXVW9kbUZzZFdVcE8xeHVJQ0FnSUNBZ2FXWWdLRzF2WkdWc0xtOXVVMlZoY21Ob1EyaGhibWRsS1NCN1hHNGdJQ0FnSUNBZ0lHMXZaR1ZzTG05dVUyVmhjbU5vUTJoaGJtZGxJU2gyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ0lDQnlaWFIxY200Z2RtRnNkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0dGamRHbHZiaUE5UFQwZ0oybHVjSFYwTFdKc2RYSW5LU0I3WEc0Z0lDQWdJQ0J6WlhSSmJuQjFkRlpoYkhWbEtDY25LVHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z2FXNXdkWFJXWVd4MVpUdGNiaUFnZlR0Y2JseHVJQ0JqYjI1emRDQndiR0ZqWldodmJHUmxjaUE5SUc5d2RHbHZibk11YkdWdVozUm9JRDRnTUNBL0lDZFRaV3hsWTNRZ2RtRnNkV1VuSURvZ0p5YzdYRzRnSUdOdmJuTjBJR1pwYkhSbGNtVmtUM0IwYVc5dWN5QTlJRzl3ZEdsdmJsTmxZWEpqYUdWeUtHbHVjSFYwVm1Gc2RXVXBPMXh1WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEUxMWJIUnBVMlZzWldOMFBGWmhjbWxoWW14bFZtRnNkV1ZUYVc1bmJHVStYRzRnSUNBZ0lDQnBaRDE3YTJWNWZWeHVJQ0FnSUNBZ2NHeGhZMlZvYjJ4a1pYSTllM0JzWVdObGFHOXNaR1Z5ZlZ4dUlDQWdJQ0FnZDJsa2RHZzlYQ0poZFhSdlhDSmNiaUFnSUNBZ0lHbHVjSFYwVm1Gc2RXVTllMmx1Y0hWMFZtRnNkV1Y5WEc0Z0lDQWdJQ0JrYVhOaFlteGxaRDE3YVhOU1pXRmtUMjVzZVgxY2JpQWdJQ0FnSUhaaGJIVmxQWHQxYm1OdmJXMXBkSFJsWkZaaGJIVmxmVnh1SUNBZ0lDQWdibTlOZFd4MGFWWmhiSFZsVjNKaGNEMTdkSEoxWlgxY2JpQWdJQ0FnSUcxaGVGWnBjMmxpYkdWV1lXeDFaWE05ZTIxaGVGWnBjMmxpYkdWV1lXeDFaWE1nUHo4Z05YMWNiaUFnSUNBZ0lIUmhZbE5sYkdWamRITldZV3gxWlQxN1ptRnNjMlY5WEc0Z0lDQWdJQ0IyYVhKMGRXRnNhWHBsWkZ4dUlDQWdJQ0FnWVd4c2IzZERkWE4wYjIxV1lXeDFaVDE3WVd4c2IzZERkWE4wYjIxV1lXeDFaWDFjYmlBZ0lDQWdJQzh2UUhSekxXbG5ibTl5WlZ4dUlDQWdJQ0FnZEc5bloyeGxRV3hzVDNCMGFXOXVjejE3ZTF4dUlDQWdJQ0FnSUNCbGJtRmliR1ZrT2lCMGNuVmxMRnh1SUNBZ0lDQWdJQ0J2Y0hScGIyNXpSbWxzZEdWeU9pQm1hV3gwWlhKQmJHd3NYRzRnSUNBZ0lDQWdJR1JsZEdWeWJXbHVaVlJ2WjJkc1pVRnNiRk4wWVhSbE9pQmtaWFJsY20xcGJtVlViMmRuYkdWQmJHeFRkR0YwWlN4Y2JpQWdJQ0FnSUgxOVhHNGdJQ0FnSUNCdmNIUnBiMjV6UFh0bWFXeDBaWEpsWkU5d2RHbHZibk45WEc0Z0lDQWdJQ0JqYkc5elpVMWxiblZQYmxObGJHVmpkRDE3Wm1Gc2MyVjlYRzRnSUNBZ0lDQmpiMjF3YjI1bGJuUnpQWHQ3SUU5d2RHbHZiam9nVDNCMGFXOXVWMmwwYUVOb1pXTnJZbTk0SUgxOVhHNGdJQ0FnSUNCcGMwTnNaV0Z5WVdKc1pUMTdkSEoxWlgxY2JpQWdJQ0FnSUdocFpHVlRaV3hsWTNSbFpFOXdkR2x2Ym5NOWUyWmhiSE5sZlZ4dUlDQWdJQ0FnYjI1SmJuQjFkRU5vWVc1blpUMTdiMjVKYm5CMWRFTm9ZVzVuWlgxY2JpQWdJQ0FnSUc5dVFteDFjajE3S0NrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0J0YjJSbGJDNWphR0Z1WjJWV1lXeDFaVlJ2S0hWdVkyOXRiV2wwZEdWa1ZtRnNkV1VwTzF4dUlDQWdJQ0FnZlgxY2JpQWdJQ0FnSUdacGJIUmxjazl3ZEdsdmJqMTdabWxzZEdWeVRtOVBjSDFjYmlBZ0lDQWdJR1JoZEdFdGRHVnpkR2xrUFh0elpXeGxZM1J2Y25NdWNHRm5aWE11UkdGemFHSnZZWEprTGxOMVlrMWxiblV1YzNWaWJXVnVkVWwwWlcxV1lXeDFaVVJ5YjNCRWIzZHVWbUZzZFdWTWFXNXJWR1Y0ZEhNb1lDUjdkVzVqYjIxdGFYUjBaV1JXWVd4MVpYMWdLWDFjYmlBZ0lDQWdJRzl1UTJoaGJtZGxQWHNvYm1WM1ZtRnNkV1VzSUdGamRHbHZiaWtnUFQ0Z2UxeHVJQ0FnSUNBZ0lDQnBaaUFvWVdOMGFXOXVMbUZqZEdsdmJpQTlQVDBnSjJOc1pXRnlKeUFtSmlCdWIxWmhiSFZsVDI1RGJHVmhjaWtnZTF4dUlDQWdJQ0FnSUNBZ0lHMXZaR1ZzTG1Ob1lXNW5aVlpoYkhWbFZHOG9XMTBwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNBZ0lITmxkRlZ1WTI5dGJXbDBkR1ZrVm1Gc2RXVW9ibVYzVm1Gc2RXVXViV0Z3S0NoNEtTQTlQaUI0TG5aaGJIVmxJU2twTzF4dUlDQWdJQ0FnZlgxY2JpQWdJQ0F2UGx4dUlDQXBPMXh1ZlZ4dVhHNXBiblJsY21aaFkyVWdVMlZzWldOMFRXVnVkVTl3ZEdsdmJsQnliM0J6UEZRK0lIdGNiaUFnYVhORWFYTmhZbXhsWkRvZ1ltOXZiR1ZoYmp0Y2JpQWdhWE5HYjJOMWMyVmtPaUJpYjI5c1pXRnVPMXh1SUNCcGMxTmxiR1ZqZEdWa09pQmliMjlzWldGdU8xeHVJQ0JwYm01bGNsQnliM0J6T2lCS1UxZ3VTVzUwY21sdWMybGpSV3hsYldWdWRITmJKMlJwZGlkZE8xeHVJQ0JwYm01bGNsSmxaam9nVW1WbVEyRnNiR0poWTJzOFNGUk5URVJwZGtWc1pXMWxiblErTzF4dUlDQnlaVzVrWlhKUGNIUnBiMjVNWVdKbGJEODZJQ2gyWVd4MVpUb2dVMlZzWldOMFlXSnNaVlpoYkhWbFBGUStLU0E5UGlCS1UxZ3VSV3hsYldWdWREdGNiaUFnWkdGMFlUb2dVMlZzWldOMFlXSnNaVlpoYkhWbFBGUStPMXh1SUNCcGJtUmxkR1Z5YldsdVlYUmxPaUJpYjI5c1pXRnVPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnVDNCMGFXOXVWMmwwYUVOb1pXTnJZbTk0SUQwZ0tIdGNiaUFnWTJocGJHUnlaVzRzWEc0Z0lHUmhkR0VzWEc0Z0lHbHVibVZ5VUhKdmNITXNYRzRnSUdsdWJtVnlVbVZtTEZ4dUlDQnBjMFp2WTNWelpXUXNYRzRnSUdselUyVnNaV04wWldRc1hHNGdJR2x1WkdWMFpYSnRhVzVoZEdVc1hHNGdJSEpsYm1SbGNrOXdkR2x2Ymt4aFltVnNMRnh1ZlRvZ1VtVmhZM1F1VUhKdmNITlhhWFJvUTJocGJHUnlaVzQ4VTJWc1pXTjBUV1Z1ZFU5d2RHbHZibEJ5YjNCelBIVnVhMjV2ZDI0K1Bpa2dQVDRnZTF4dUlDQXZMeUJYWlNCaGNtVWdjbVZ0YjNacGJtY2diMjVOYjNWelpVMXZkbVVnWVc1a0lHOXVUVzkxYzJWUGRtVnlJR1p5YjIwZ2FXNXVaWEpRY205d2N5QmlaV05oZFhObElIUm9aWGtnWTJGMWMyVWdkR2hsSUhkb2IyeGxYRzRnSUM4dklHeHBjM1FnZEc4Z2NtVXRjbVZ1WkdWeUlHVjJaWEo1ZEdsdFpTQjBhR1VnZFhObGNpQm9iM1psY25NZ2IzWmxjaUJoYmlCdmNIUnBiMjR1SUZSb2FYTWdhWE1nWVNCd1pYSm1iM0p0WVc1alpTQnBjM04xWlM1Y2JpQWdMeThnVTJWbElHaDBkSEJ6T2k4dloybDBhSFZpTG1OdmJTOUtaV1JYWVhSemIyNHZjbVZoWTNRdGMyVnNaV04wTDJsemMzVmxjeTh6TVRJNEkybHpjM1ZsWTI5dGJXVnVkQzAwTlRFNU16WTNORE5jYmlBZ1kyOXVjM1FnZXlCdmJrMXZkWE5sVFc5MlpTd2diMjVOYjNWelpVOTJaWElzSUM0dUxuSmxjM1FnZlNBOUlHbHVibVZ5VUhKdmNITTdYRzRnSUdOdmJuTjBJSFJvWlcxbElEMGdkWE5sVkdobGJXVXlLQ2s3WEc0Z0lHTnZibk4wSUhObGJHVmpkRk4wZVd4bGN5QTlJR2RsZEZObGJHVmpkRk4wZVd4bGN5aDBhR1Z0WlNrN1hHNGdJR052Ym5OMElHOXdkR2x2YmxOMGVXeGxjeUE5SUhWelpWTjBlV3hsY3pJb1oyVjBUM0IwYVc5dVUzUjViR1Z6S1R0Y2JseHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeGthWFpjYmlBZ0lDQWdJSEpsWmoxN2FXNXVaWEpTWldaOVhHNGdJQ0FnSUNCamJHRnpjMDVoYldVOWUyTjRLSE5sYkdWamRGTjBlV3hsY3k1dmNIUnBiMjRzSUdselJtOWpkWE5sWkNBbUppQnpaV3hsWTNSVGRIbHNaWE11YjNCMGFXOXVSbTlqZFhObFpDbDlYRzRnSUNBZ0lDQjdMaTR1Y21WemRIMWNiaUFnSUNBZ0lDOHZJRlJQUkU4NklIVnpaU0JpWld4dmR5QnpaV3hsWTNSdmNpQnZibU5sSUhkbElIVndaR0YwWlNCbmNtRm1ZVzVoSUdSbGNHVnVaR1Z1WTJsbGN5QjBieUJlTVRFdU1TNHdYRzRnSUNBZ0lDQXZMeUJrWVhSaExYUmxjM1JwWkQxN2MyVnNaV04wYjNKekxtTnZiWEJ2Ym1WdWRITXVVMlZzWldOMExtOXdkR2x2Ym4xY2JpQWdJQ0FnSUdSaGRHRXRkR1Z6ZEdsa1BWd2laR0YwWVMxMFpYTjBhV1FnVTJWc1pXTjBJRzl3ZEdsdmJsd2lYRzRnSUNBZ0lDQjBhWFJzWlQxN1pHRjBZUzUwYVhSc1pYMWNiaUFnSUNBK1hHNGdJQ0FnSUNBOFpHbDJJR05zWVhOelRtRnRaVDE3YjNCMGFXOXVVM1I1YkdWekxtTm9aV05yWW05NGZUNWNiaUFnSUNBZ0lDQWdQRU5vWldOclltOTRJR2x1WkdWMFpYSnRhVzVoZEdVOWUybHVaR1YwWlhKdGFXNWhkR1Y5SUhaaGJIVmxQWHRwYzFObGJHVmpkR1ZrZlNBdlBseHVJQ0FnSUNBZ1BDOWthWFkrWEc0Z0lDQWdJQ0E4WkdsMlhHNGdJQ0FnSUNBZ0lHTnNZWE56VG1GdFpUMTdjMlZzWldOMFUzUjViR1Z6TG05d2RHbHZia0p2WkhsOVhHNGdJQ0FnSUNBZ0lHUmhkR0V0ZEdWemRHbGtQWHR6Wld4bFkzUnZjbk11Y0dGblpYTXVSR0Z6YUdKdllYSmtMbE4xWWsxbGJuVXVjM1ZpYldWdWRVbDBaVzFXWVd4MVpVUnliM0JFYjNkdVQzQjBhVzl1VkdWNGRITW9YRzRnSUNBZ0lDQWdJQ0FnWkdGMFlTNXNZV0psYkNBL1B5QlRkSEpwYm1jb1pHRjBZUzUyWVd4MVpTbGNiaUFnSUNBZ0lDQWdLWDFjYmlBZ0lDQWdJRDVjYmlBZ0lDQWdJQ0FnUEhOd1lXNCtlMk5vYVd4a2NtVnVmVHd2YzNCaGJqNWNiaUFnSUNBZ0lEd3ZaR2wyUGx4dUlDQWdJRHd2WkdsMlBseHVJQ0FwTzF4dWZUdGNibHh1VDNCMGFXOXVWMmwwYUVOb1pXTnJZbTk0TG1ScGMzQnNZWGxPWVcxbElEMGdKMU5sYkdWamRFMWxiblZQY0hScGIyNXpKenRjYmx4dVkyOXVjM1FnWjJWMFQzQjBhVzl1VTNSNWJHVnpJRDBnS0hSb1pXMWxPaUJIY21GbVlXNWhWR2hsYldVeUtTQTlQaUFvZTF4dUlDQmphR1ZqYTJKdmVEb2dZM056S0h0Y2JpQWdJQ0J0WVhKbmFXNVNhV2RvZERvZ2RHaGxiV1V1YzNCaFkybHVaeWd5S1N4Y2JpQWdmU2tzWEc1OUtUdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSEpsYm1SbGNsTmxiR1ZqZEVadmNsWmhjbWxoWW14bEtHMXZaR1ZzT2lCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdVcElIdGNiaUFnYVdZZ0tHMXZaR1ZzTG5OMFlYUmxMbWx6VFhWc2RHa3BJSHRjYmlBZ0lDQnlaWFIxY200Z1BGWmhjbWxoWW14bFZtRnNkV1ZUWld4bFkzUk5kV3gwYVNCdGIyUmxiRDE3Ylc5a1pXeDlJQzgrTzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUhKbGRIVnliaUE4Vm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZENCdGIyUmxiRDE3Ylc5a1pXeDlJQzgrTzF4dUlDQjlYRzU5WEc0aVhTd2libUZ0WlhNaU9sc2lkbUZzZFdVaUxDSnBibkIxZEZaaGJIVmxJbDBzSW0xaGNIQnBibWR6SWpvaU96czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEJRWEZDUVN4TlFVRk5MR0ZCUVdFc1RVRkJUU3hKUVVGQkxFTkJRVUU3UVVGRmVrSXNUVUZCVFN4VFFVRlpMRWRCUVVFc1EwRkJReXhEUVVFMFF5eExRVUZCTEVOQlFVRXNRMEZCUlN4TFFVRlZMRXRCUVVFc1VVRkJRU3hEUVVGQk8wRkJSVE5GTEUxQlFVMHNkVUpCUVVFc1IwRkJNRUlzUTBGRE9VSXNZMEZCUVN4RlFVTkJMRTlCUTBjc1MwRkJRVHRCUVVOSUxFVkJRVUVzU1VGQlNTeGxRVUZsTEUxQlFWY3NTMEZCUVN4UFFVRkJMRU5CUVZFc1RVRkJUeXhEUVVGQkxGTkJRVk1zUlVGQlJTeE5RVUZSTEVWQlFVRTdRVUZET1VRc1NVRkJRU3hQUVVGUExHTkJRV1VzUTBGQlFTeFhRVUZCTEVOQlFVRTdRVUZCUVN4SFFVVjBRaXhOUVVGQkxFbEJRVUVzWTBGQlFTeERRVUZsTEUxQlFWY3NTMEZCUVN4RFFVRkJMRWxCUTNwQ0xHTkJRV1VzUTBGQlFTeE5RVUZCTEV0QlFWY3NRMEZCU3l4SlFVRkJMR05CUVVFc1EwRkJaU3hEUVVGTkxFTkJRVUVzU1VGQlFTeGpRVUZCTEVOQlFXVXNRMEZCUnl4RFFVRkJMRU5CUVVFc1MwRkJRU3hMUVVGVkxGRkJRMnBHTEVWQlFVRTdRVUZEUVN4SlFVRkJMRTlCUVU4c1kwRkJaU3hEUVVGQkxGbEJRVUVzUTBGQlFUdEJRVUZCTEVkQlEycENMRTFCUVVFN1FVRkRUQ3hKUVVGQkxFOUJRVThzWTBGQlpTeERRVUZCTEdGQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTNoQ08wRkJRMFlzUTBGQlFTeERRVUZCTzBGQlJXZENMRk5CUVVFc2FVSkJRVUVzUTBGQmNVSXNUMEZCVlN4TFFVRnZReXhGUVVGQk8wRkJRMnBHTEVWQlFVOHNUMEZCUVR0QlFVRkJMRWxCUTB3c1MwRkJRVHRCUVVGQkxFbEJRMEVzUzBGQlFTeEZRVUZQTEV0QlFWTXNTVUZCUVN4SlFVRkJMRWRCUVVFc1MwRkJRU3hIUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZMTEVOQlFVRTdRVUZCUVN4SFFVTTVRaXhEUVVGQk8wRkJRMFlzUTBGQlFUdEJRVVZuUWl4VFFVRkJMRzFDUVVGQkxFTkJRVzlDTEVWQlFVVXNTMEZCUVN4RlFVRnJSQ3hGUVVGQk8wRkJRM1JHTEVWQlFVMHNUVUZCUVN4RlFVRkZMRXRCUVU4c1JVRkJRU3hKUVVGQkxFVkJRVTBzUjBGQlN5eEZRVUZCTEU5QlFVRXNSVUZCVXl4VlFVRlpMRVZCUVVFc1ZVRkJRU3hGUVVGWkxHZENRVUZ0UWl4SFFVRkJMRWxCUVVFc1JVRkJVeXhIUVVGQkxFdEJRVUVzUTBGQlRTeFJRVUZUTEVWQlFVRXNRMEZCUVR0QlFVTjBSeXhGUVVGQkxFMUJRVTBzUTBGQlF5eFZRVUZCTEVWQlFWa3NZVUZCWVN4RFFVRkJMRWRCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVU12UXl4RlFVRkJMRTFCUVUwc1EwRkJReXhqUVVGQkxFVkJRV2RDTEdsQ1FVRnBRaXhEUVVGQkxFZEJRVWtzVTBGQlV5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTXhSQ3hGUVVGQkxFMUJRVTBzVjBGQll5eEhRVUZCTEdsQ1FVRkJMRU5CUVd0Q0xFdEJRVThzUlVGQlFTeE5RVUZCTEVOQlFVOHNTVUZCU1N4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVWNlJDeEZRVUZOTEUxQlFVRXNZMEZCUVN4SFFVRnBRaXhQUVVGUkxFTkJRVUVzVFVGQlRTeHBRa0ZCYTBJc1EwRkJRU3hQUVVGQkxFVkJRVk1zVlVGQlZTeERRVUZITEVWQlFVRXNRMEZCUXl4UFFVRlRMRVZCUVVFc1ZVRkJWU3hEUVVGRExFTkJRVUVzUTBGQlFUdEJRVVZzUnl4RlFVRkJMRTFCUVUwc1lVRkJaMElzUjBGQlFTeERRVUZEUVN4TlFVRmxMRVZCUVVFc1JVRkJSU3hSUVVFNFFpeExRVUZCTzBGQlEzQkZMRWxCUVVFc1NVRkJTU3hYUVVGWExHTkJRV2RDTEVWQlFVRTdRVUZETjBJc1RVRkJRU3hoUVVGQkxFTkJRV05CTEUxQlFVc3NRMEZCUVN4RFFVRkJPMEZCUTI1Q0xFMUJRVUVzU1VGQlNTeE5RVUZOTEdOQlFXZENMRVZCUVVFN1FVRkRlRUlzVVVGQlFTeExRVUZCTEVOQlFVMHNaVUZCWjBKQkxFMUJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNUMEZETjBJN1FVRkRRU3hOUVVGUFFTeFBRVUZCUVN4TlFVRkJRU3hEUVVGQlFUdEJRVUZCTEV0QlExUTdRVUZGUVN4SlFVRlBRU3hQUVVGQlFTeE5RVUZCUVN4RFFVRkJRVHRCUVVGQkxFZEJRMVFzUTBGQlFUdEJRVVZCTEVWQlFVMHNUVUZCUVN4bFFVRkJMRWRCUVd0Q0xHVkJRV1VzVlVGQlZTeERRVUZCTEVOQlFVRTdRVUZGYWtRc1JVRkJRU3hOUVVGTkxHRkJRV0VzVFVGQlRUdEJRVU4yUWl4SlFVRkJMRWxCUVVrc1kwRkJaMElzUlVGQlFUdEJRVU5zUWl4TlFVRmpMR0ZCUVVFc1EwRkJRU3hOUVVGQkxFTkJRVThzU1VGQlNTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUXpWQ08wRkJRVUVzUjBGRFJpeERRVUZCTzBGQlJVRXNSVUZCUVN4TlFVRk5MR05CUVdNc1RVRkJUVHRCUVVONFFpeEpRVUZCTEdGQlFVRXNRMEZCWXl4RlFVRkZMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMnhDTEVOQlFVRTdRVUZGUVN4RlFVRkJMSFZDUVVOSExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNUVUZCUVN4RlFVRkJPMEZCUVVFc1NVRkRReXhGUVVGSkxFVkJRVUVzUjBGQlFUdEJRVUZCTEVsQlEwb3NhMEpCUVd0Q0xFTkJRVU5ETEZkQlFVRkJMRXRCUVdWQkxGZEJRVmNzUTBGQlFTeEpRVUZCTEVkQlFVOHNUVUZCVXl4SFFVRkJMRU5CUVVFN1FVRkJRU3hKUVVNM1JDeFhRVUZaTEVWQlFVRXNZMEZCUVR0QlFVRkJMRWxCUTFvc1MwRkJUU3hGUVVGQkxFMUJRVUU3UVVGQlFTeEpRVU5PTEZGQlFWVXNSVUZCUVN4VlFVRkJPMEZCUVVFc1NVRkRWaXhMUVVGUExFVkJRVUVzVjBGQlFUdEJRVUZCTEVsQlExQXNWVUZCUVR0QlFVRkJMRWxCUTBFc1owSkJRVUU3UVVGQlFTeEpRVU5CTEZkQlFWY3NSVUZCUVN4SlFVRkJPMEZCUVVFc1NVRkRXQ3haUVVGakxFVkJRVUVzVlVGQlFUdEJRVUZCTEVsQlEyUXNaVUZCYVVJc1JVRkJRU3hMUVVGQk8wRkJRVUVzU1VGRGFrSXNZVUZCUVR0QlFVRkJMRWxCUTBFc1ZVRkJRVHRCUVVGQkxFbEJRMEVzVjBGQlFUdEJRVUZCTEVsQlEwRXNUMEZCVXl4RlFVRkJMR1ZCUVVFN1FVRkJRU3hKUVVOVUxHVkJRV0VzVTBGQlZTeERRVUZCTEV0QlFVRXNRMEZCVFN4VlFVRlZMRTlCUVZFc1EwRkJRU3h6UTBGQlFTeERRVUYxUXl4SFFVRkhMRXRCUVU4c1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5vUnl4UlFVRkJMRVZCUVZVc1EwRkJReXhSUVVGaExFdEJRVUU3UVVGRGRFSXNUVUZCUVN4TFFVRkJMRU5CUVUwc1lVRkJZeXhEUVVGQkxGRkJRVUVzUTBGQlV5eExRVUZSTEVWQlFVRXNVVUZCUVN4RFFVRlRMRXRCUVUwc1EwRkJRU3hEUVVGQk8wRkJSWEJFTEUxQlFVa3NTVUZCUVN4alFVRkJMRXRCUVcxQ0xGTkJRVk1zVTBGQlZ5eEZRVUZCTzBGQlEzcERMRkZCUVVFc2FVSkJRVUVzUTBGQmEwSXNVMEZCVXl4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM1JETzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUTBZc1EwRkJRU3hEUVVGQk8wRkJSVW9zUTBGQlFUdEJRVVZuUWl4VFFVRkJMSGRDUVVGQkxFTkJRWGxDTEVWQlFVVXNTMEZCUVN4RlFVRnJSQ3hGUVVGQk8wRkJRek5HTEVWQlFVMHNUVUZCUVR0QlFVRkJMRWxCUTBvc1MwRkJRVHRCUVVGQkxFbEJRMEVzVDBGQlFUdEJRVUZCTEVsQlEwRXNSMEZCUVR0QlFVRkJMRWxCUTBFc1owSkJRVUU3UVVGQlFTeEpRVU5CTEdOQlFVRTdRVUZCUVN4SlFVTkJMRlZCUVVFN1FVRkJRU3hKUVVOQkxGVkJRVUU3UVVGQlFTeEpRVU5CTEdkQ1FVRnRRaXhIUVVGQkxFbEJRVUU3UVVGQlFTeEhRVU55UWl4SFFVRkpMRTFCUVUwc1VVRkJVeXhGUVVGQkxFTkJRVUU3UVVGRGJrSXNSVUZCUVN4TlFVRk5MRlZCUVdFc1IwRkJRU3hQUVVGQkxFTkJRVkVzVFVGQlR5eFBRVUZCTEVOQlFWRXNTMEZCU3l4RFFVRkJMRWRCUVVrc1MwRkJVU3hIUVVGQkxFTkJRVU1zUzBGQlN5eERRVUZCTEVWQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRU3hEUVVGQk8wRkJSVFZGTEVWQlFVRXNUVUZCVFN4RFFVRkRMR2RDUVVGQkxFVkJRV3RDTEcxQ1FVRnRRaXhEUVVGQkxFZEJRVWtzVTBGQlV5eFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVTnVSU3hGUVVGQkxFMUJRVTBzUTBGQlF5eFZRVUZCTEVWQlFWa3NZVUZCWVN4RFFVRkJMRWRCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVVV2UXl4RlFVRk5MRTFCUVVFc1kwRkJRU3hIUVVGcFFpeFBRVUZSTEVOQlFVRXNUVUZCVFN4cFFrRkJhMElzUTBGQlFTeFBRVUZCTEVWQlFWTXNWVUZCVlN4RFFVRkhMRVZCUVVFc1EwRkJReXhQUVVGVExFVkJRVUVzVlVGQlZTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVZHNSeXhGUVVGQkxGTkJRVUVzUTBGQlZTeE5RVUZOTzBGQlEyUXNTVUZCUVN4dFFrRkJRU3hEUVVGdlFpeFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJoRExFVkJRVWNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUldZc1JVRkJRU3hOUVVGTkxHRkJRV2RDTEVkQlFVRXNRMEZCUTBRc1RVRkJaU3hGUVVGQkxFVkJRVVVzVVVGQk9FSXNTMEZCUVR0QlFVTndSU3hKUVVGQkxFbEJRVWtzVjBGQlZ5eGpRVUZuUWl4RlFVRkJPMEZCUXpkQ0xFMUJRVUVzWVVGQlFTeERRVUZqUVN4TlFVRkxMRU5CUVVFc1EwRkJRVHRCUVVOdVFpeE5RVUZCTEVsQlFVa3NUVUZCVFN4alFVRm5RaXhGUVVGQk8wRkJRM2hDTEZGQlFVRXNTMEZCUVN4RFFVRk5MR1ZCUVdkQ1FTeE5RVUZMTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUXpkQ08wRkJRMEVzVFVGQlQwRXNUMEZCUVVFc1RVRkJRVUVzUTBGQlFVRTdRVUZCUVN4TFFVTlVPMEZCUlVFc1NVRkJRU3hKUVVGSkxGZEJRVmNzV1VGQll5eEZRVUZCTzBGQlF6TkNMRTFCUVVFc1lVRkJRU3hEUVVGakxFVkJRVVVzUTBGQlFTeERRVUZCTzBGQlEyaENMRTFCUVU4c1QwRkJRU3hGUVVGQkxFTkJRVUU3UVVGQlFTeExRVU5VTzBGQlJVRXNTVUZCVHl4UFFVRkJMRlZCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMVFzUTBGQlFUdEJRVVZCTEVWQlFVRXNUVUZCVFN4WFFVRmpMRWRCUVVFc1QwRkJRU3hEUVVGUkxFMUJRVk1zUjBGQlFTeERRVUZCTEVkQlFVa3NZMEZCYVVJc1IwRkJRU3hGUVVGQkxFTkJRVUU3UVVGRE1VUXNSVUZCVFN4TlFVRkJMR1ZCUVVFc1IwRkJhMElzWlVGQlpTeFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVVnFSQ3hGUVVGQkxIVkNRVU5ITEV0QlFVRXNRMEZCUVN4aFFVRkJMRU5CUVVFc1YwRkJRU3hGUVVGQk8wRkJRVUVzU1VGRFF5eEZRVUZKTEVWQlFVRXNSMEZCUVR0QlFVRkJMRWxCUTBvc1YwRkJRVHRCUVVGQkxFbEJRMEVzUzBGQlRTeEZRVUZCTEUxQlFVRTdRVUZCUVN4SlFVTk9MRlZCUVVFN1FVRkJRU3hKUVVOQkxGRkJRVlVzUlVGQlFTeFZRVUZCTzBGQlFVRXNTVUZEVml4TFFVRlBMRVZCUVVFc1owSkJRVUU3UVVGQlFTeEpRVU5RTEdkQ1FVRnJRaXhGUVVGQkxFbEJRVUU3UVVGQlFTeEpRVU5zUWl4clFrRkJhMElzWjBKQlFXOUNMRWxCUVVFc1NVRkJRU3hIUVVGQkxHZENRVUZCTEVkQlFVRXNRMEZCUVR0QlFVRkJMRWxCUTNSRExHVkJRV2xDTEVWQlFVRXNTMEZCUVR0QlFVRkJMRWxCUTJwQ0xGZEJRVmNzUlVGQlFTeEpRVUZCTzBGQlFVRXNTVUZEV0N4blFrRkJRVHRCUVVGQkxFbEJSVUVzWjBKQlFXdENMRVZCUVVFN1FVRkJRU3hOUVVOb1FpeFBRVUZUTEVWQlFVRXNTVUZCUVR0QlFVRkJMRTFCUTFRc1lVRkJaU3hGUVVGQkxGTkJRVUU3UVVGQlFTeE5RVU5tTEhWQ1FVRkJPMEZCUVVFc1MwRkRSanRCUVVGQkxFbEJRMEVzVDBGQlV5eEZRVUZCTEdWQlFVRTdRVUZCUVN4SlFVTlVMR2xDUVVGdFFpeEZRVUZCTEV0QlFVRTdRVUZCUVN4SlFVTnVRaXhWUVVGQkxFVkJRVmtzUlVGQlJTeE5RVUZCTEVWQlFWRXNhMEpCUVcxQ0xFVkJRVUU3UVVGQlFTeEpRVU42UXl4WFFVRmhMRVZCUVVFc1NVRkJRVHRCUVVGQkxFbEJRMklzYlVKQlFYRkNMRVZCUVVFc1MwRkJRVHRCUVVGQkxFbEJRM0pDTEdGQlFVRTdRVUZCUVN4SlFVTkJMRkZCUVZFc1RVRkJUVHRCUVVOYUxFMUJRVUVzUzBGQlFTeERRVUZOTEdOQlFXTXNaMEpCUVdkQ0xFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzUkRPMEZCUVVFc1NVRkRRU3haUVVGakxFVkJRVUVzVlVGQlFUdEJRVUZCTEVsQlEyUXNaVUZCWVN4VFFVRlZMRU5CUVVFc1MwRkJRU3hEUVVGTkxGVkJRVlVzVDBGQlVTeERRVUZCTEhORFFVRkJMRU5CUVhWRExFZEJRVWNzWjBKQlFXdENMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzU1VGRE0wY3NVVUZCUVN4RlFVRlZMRU5CUVVNc1VVRkJRU3hGUVVGVkxFMUJRVmNzUzBGQlFUdEJRVU01UWl4TlFVRkpMRWxCUVVFc1RVRkJRU3hEUVVGUExFMUJRVmNzUzBGQlFTeFBRVUZCTEVsQlFWY3NZMEZCWjBJc1JVRkJRVHRCUVVNdlF5eFJRVUZOTEV0QlFVRXNRMEZCUVN4aFFVRkJMRU5CUVdNc1JVRkJSU3hEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU40UWp0QlFVTkJMRTFCUVVFc2JVSkJRVUVzUTBGQmIwSXNVMEZCVXl4SFFVRkpMRU5CUVVFc1EwRkJReXhEUVVGTkxFdEJRVUVzUTBGQlFTeERRVUZGTEV0QlFVMHNRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOdVJEdEJRVUZCTEVkQlEwWXNRMEZCUVN4RFFVRkJPMEZCUlVvc1EwRkJRVHRCUVdGUExFMUJRVTBzY1VKQlFYRkNMRU5CUVVNN1FVRkJRU3hGUVVOcVF5eFJRVUZCTzBGQlFVRXNSVUZEUVN4SlFVRkJPMEZCUVVFc1JVRkRRU3hWUVVGQk8wRkJRVUVzUlVGRFFTeFJRVUZCTzBGQlFVRXNSVUZEUVN4VFFVRkJPMEZCUVVFc1JVRkRRU3hWUVVGQk8wRkJRVUVzUlVGRFFTeGhRVUZCTzBGQlFVRXNSVUZEUVN4cFFrRkJRVHRCUVVOR0xFTkJRU3RFTEV0QlFVRTdRVUZ3VGk5RUxFVkJRVUVzU1VGQlFTeEZRVUZCTEVOQlFVRTdRVUYzVGtVc1JVRkJPRU1zVFVGQlFTeEZRVUZCTEVkQlFVRXNWVUZCUVN4RFFVRkJMRU5CUVZRc1NVRkJVeXhIUVVGQkxGTkJRVUVzUTBGQlFTeEZRVUZCTEVWQlFWUXNRMEZCTjBJc1lVRkJZU3hGUVVGQkxHRkJRVUVzUTBGQlFTeEZRVUZCTzBGQlEzSkNMRVZCUVVFc1RVRkJUU3hSUVVGUkxGTkJRVlVzUlVGQlFTeERRVUZCTzBGQlEzaENMRVZCUVUwc1RVRkJRU3haUVVGQkxFZEJRV1VzWjBKQlFXZENMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRekZETEVWQlFVMHNUVUZCUVN4WlFVRkJMRWRCUVdVc1YwRkJWeXhsUVVGbExFTkJRVUVzUTBGQlFUdEJRVVV2UXl4RlFVRkJMSFZDUVVOSExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNTMEZCUVN4RlFVRkJMR0ZCUVVFc1EwRkJRU3hqUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5ETEVkQlFVc3NSVUZCUVN4UlFVRkJPMEZCUVVFc1NVRkRUQ3hYUVVGWExFVkJRVWNzUTBGQlFTeFpRVUZCTEVOQlFXRXNUVUZCVVN4RlFVRkJMRk5CUVVFc1NVRkJZU3hoUVVGaExHRkJRV0VzUTBGQlFUdEJRVUZCTEVkQlFVRXNSVUZEZEVVc1NVRklUQ3hEUVVGQkxFVkJRVUU3UVVGQlFTeEpRVTFETEdGQlFWa3NSVUZCUVN3eVFrRkJRVHRCUVVGQkxFbEJRMW9zVDBGQlR5eEpRVUZMTEVOQlFVRXNTMEZCUVR0QlFVRkJMRWRCUVVFc1EwRkJRU3hyUWtGRldDeExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMRXRCUVVFc1JVRkJRVHRCUVVGQkxFbEJRVWtzVjBGQlZ5eFpRVUZoTEVOQlFVRXNVVUZCUVR0QlFVRkJMRWRCUVVFc2EwSkJRekZDTEV0QlFVRXNRMEZCUVN4aFFVRkJMRU5CUVVFc1VVRkJRU3hGUVVGQk8wRkJRVUVzU1VGQlV5eGhRVUZCTzBGQlFVRXNTVUZCT0VJc1MwRkJUeXhGUVVGQkxGVkJRVUU3UVVGQlFTeEhRVUZaTEVOQlF6ZEVMRzFDUVVORExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNTMEZCUVN4RlFVRkJPMEZCUVVFc1NVRkRReXhYUVVGWExGbEJRV0VzUTBGQlFTeFZRVUZCTzBGQlFVRXNTVUZEZUVJc1lVRkJZU3hGUVVGQkxGTkJRVUVzUTBGQlZTeExRVUZOTEVOQlFVRXNVMEZCUVN4RFFVRlZMRTlCUVZFc1EwRkJRU3h0UTBGQlFUdEJRVUZCTEUxQlFVRXNRMEZETjBNc1JVRkJTeXhIUVVGQkxFbEJRVUVzUTBGQlFTeExRVUZCTEV0QlFVd3NTVUZCWXl4SFFVRkJMRVZCUVVFc1IwRkJRU3hOUVVGQkxFTkJRVThzUzBGQlN5eExRVUZMTEVOQlFVRTdRVUZCUVN4TFFVTnFRenRCUVVGQkxFZEJRVUVzYTBKQlJVTXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hOUVVGQkxFVkJRVUVzU1VGQlFTeEZRVUZOTEZGQlFWTXNRMEZEYkVJc1EwRkRSaXhEUVVGQkxFTkJRVUU3UVVGRlNpeEZRVUZCTzBGQlJVRXNhMEpCUVVFc1EwRkJiVUlzVjBGQll5eEhRVUZCTEcxQ1FVRkJMRU5CUVVFN1FVRkZha01zVFVGQlRTeGxRVUZCTEVkQlFXdENMRU5CUVVNc1MwRkJNRUlzVFVGQlFUdEJRVUZCTEVWQlEycEVMRlZCUVZVc1IwRkJTU3hEUVVGQk8wRkJRVUVzU1VGRFdpeFhRVUZCTEVWQlFXRXNTMEZCVFN4RFFVRkJMRTlCUVVFc1EwRkJVU3hEUVVGRExFTkJRVUU3UVVGQlFTeEhRVU0zUWl4RFFVRkJPMEZCUTBnc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRlR5eFRRVUZUTEhkQ1FVRjNRaXhMUVVFeVFpeEZRVUZCTzBGQlEycEZMRVZCUVVrc1NVRkJRU3hMUVVGQkxFTkJRVTBzVFVGQlRTeFBRVUZUTEVWQlFVRTdRVUZEZGtJc1NVRkJRU3gxUWtGQlVTeExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMSGRDUVVGQkxFVkJRVUU3UVVGQlFTeE5RVUY1UWl4TFFVRkJPMEZCUVVFc1MwRkJZeXhEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU14UXl4TlFVRkJPMEZCUTB3c1NVRkJRU3gxUWtGQlVTeExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMRzFDUVVGQkxFVkJRVUU3UVVGQlFTeE5RVUZ2UWl4TFFVRkJPMEZCUVVFc1MwRkJZeXhEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU0xUXp0QlFVTkdPenM3T3lKOVxuIl0sIm5hbWVzIjpbInZhbHVlIiwiaW5wdXRWYWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQkEsTUFBTSxhQUFhLE1BQU0sSUFBQSxDQUFBO0FBRXpCLE1BQU0sU0FBWSxHQUFBLENBQUMsQ0FBNEMsS0FBQSxDQUFBLENBQUUsS0FBVSxLQUFBLFFBQUEsQ0FBQTtBQUUzRSxNQUFNLHVCQUFBLEdBQTBCLENBQzlCLGNBQUEsRUFDQSxPQUNHLEtBQUE7QUFDSCxFQUFBLElBQUksZUFBZSxNQUFXLEtBQUEsT0FBQSxDQUFRLE1BQU8sQ0FBQSxTQUFTLEVBQUUsTUFBUSxFQUFBO0FBQzlELElBQUEsT0FBTyxjQUFlLENBQUEsV0FBQSxDQUFBO0dBRXRCLE1BQUEsSUFBQSxjQUFBLENBQWUsTUFBVyxLQUFBLENBQUEsSUFDekIsY0FBZSxDQUFBLE1BQUEsS0FBVyxDQUFLLElBQUEsY0FBQSxDQUFlLENBQU0sQ0FBQSxJQUFBLGNBQUEsQ0FBZSxDQUFHLENBQUEsQ0FBQSxLQUFBLEtBQVUsUUFDakYsRUFBQTtBQUNBLElBQUEsT0FBTyxjQUFlLENBQUEsWUFBQSxDQUFBO0dBQ2pCLE1BQUE7QUFDTCxJQUFBLE9BQU8sY0FBZSxDQUFBLGFBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFMUIsQ0FBQSxDQUFBO0FBRWdCLFNBQUEsaUJBQUEsQ0FBcUIsT0FBVSxLQUFvQyxFQUFBO0FBQzFFLEVBQUEsT0FBQTtBQUNMLElBQUEsS0FBQTtBQUNBLElBQUEsS0FBQSxFQUFPLEtBQVMsSUFBQSxJQUFBLEdBQUEsS0FBQSxHQUFBLE1BQUEsQ0FBTyxLQUFLLENBQUE7QUFBQSxHQUFBLENBQUE7QUFFaEMsQ0FBQTtBQUVnQixTQUFBLG1CQUFBLENBQW9CLEVBQUUsS0FBQSxFQUFrRCxFQUFBO0FBQ2hGLEVBQUEsTUFBQSxFQUFFLEtBQU8sRUFBQSxJQUFBLEVBQU0sR0FBSyxFQUFBLE9BQUEsRUFBUyxVQUFZLEVBQUEsVUFBQSxFQUFZLGdCQUFtQixHQUFBLElBQUEsRUFBUyxHQUFBLEtBQUEsQ0FBTSxRQUFTLEVBQUEsQ0FBQTtBQUN0RyxFQUFBLE1BQU0sQ0FBQyxVQUFBLEVBQVksYUFBYSxDQUFBLEdBQUksU0FBUyxFQUFFLENBQUEsQ0FBQTtBQUMvQyxFQUFBLE1BQU0sQ0FBQyxjQUFBLEVBQWdCLGlCQUFpQixDQUFBLEdBQUksU0FBUyxLQUFLLENBQUEsQ0FBQTtBQUMxRCxFQUFBLE1BQU0sV0FBYyxHQUFBLGlCQUFBLENBQWtCLEtBQU8sRUFBQSxNQUFBLENBQU8sSUFBSSxDQUFDLENBQUEsQ0FBQTtBQUVuRCxFQUFBLE1BQUEsY0FBQSxHQUFpQixPQUFRLENBQUEsTUFBTSxpQkFBa0IsQ0FBQSxPQUFBLEVBQVMsVUFBVSxDQUFHLEVBQUEsQ0FBQyxPQUFTLEVBQUEsVUFBVSxDQUFDLENBQUEsQ0FBQTtBQUVsRyxFQUFBLE1BQU0sYUFBZ0IsR0FBQSxDQUFDQSxNQUFlLEVBQUEsRUFBRSxRQUE4QixLQUFBO0FBQ3BFLElBQUEsSUFBSSxXQUFXLGNBQWdCLEVBQUE7QUFDN0IsTUFBQSxhQUFBLENBQWNBLE1BQUssQ0FBQSxDQUFBO0FBQ25CLE1BQUEsSUFBSSxNQUFNLGNBQWdCLEVBQUE7QUFDeEIsUUFBQSxLQUFBLENBQU0sZUFBZ0JBLE1BQUssQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUV0QkEsTUFBQUEsT0FBQUEsTUFBQUEsQ0FBQUE7QUFBQSxLQUFBO0FBR0ZBLElBQUFBLE9BQUFBLE1BQUFBLENBQUFBO0FBQUEsR0FBQSxDQUFBO0FBR0gsRUFBQSxNQUFBLGVBQUEsR0FBa0IsZUFBZSxVQUFVLENBQUEsQ0FBQTtBQUVqRCxFQUFBLE1BQU0sYUFBYSxNQUFNO0FBQ3ZCLElBQUEsSUFBSSxjQUFnQixFQUFBO0FBQ0osTUFBQSxhQUFBLENBQUEsTUFBQSxDQUFPLElBQUksQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQzVCLEdBQUEsQ0FBQTtBQUdGLEVBQUEsTUFBTSxjQUFjLE1BQU07QUFDeEIsSUFBQSxhQUFBLENBQWMsRUFBRSxDQUFBLENBQUE7QUFBQSxHQUFBLENBQUE7QUFHbEIsRUFDRyx1QkFBQSxLQUFBLENBQUEsY0FBQSxNQUFBLEVBQUE7SUFDQyxFQUFJLEVBQUEsR0FBQTtBQUNKLElBQUEsZ0JBQUEsRUFBa0IsQ0FBQ0MsV0FBQUEsS0FBZUEsV0FBVyxDQUFBLElBQUEsR0FBTyxNQUFTLEdBQUEsQ0FBQTtJQUM3RCxXQUFZLEVBQUEsY0FBQTtJQUNaLEtBQU0sRUFBQSxNQUFBO0lBQ04sUUFBVSxFQUFBLFVBQUE7SUFDVixLQUFPLEVBQUEsV0FBQTtBQUNQLElBQUEsVUFBQTtBQUNBLElBQUEsZ0JBQUE7SUFDQSxXQUFXLEVBQUEsSUFBQTtJQUNYLFlBQWMsRUFBQSxVQUFBO0lBQ2QsZUFBaUIsRUFBQSxLQUFBO0FBQ2pCLElBQUEsYUFBQTtBQUNBLElBQUEsVUFBQTtBQUNBLElBQUEsV0FBQTtJQUNBLE9BQVMsRUFBQSxlQUFBO0FBQ1QsSUFBQSxhQUFBLEVBQWEsVUFBVSxLQUFNLENBQUEsU0FBQSxDQUFVLE9BQVEsQ0FBQSxzQ0FBQSxDQUF1QyxHQUFHLEtBQU8sQ0FBQSxDQUFBLENBQUE7QUFDaEcsSUFBQSxRQUFBLEVBQVUsQ0FBQyxRQUFhLEtBQUE7QUFDdEIsTUFBQSxLQUFBLENBQU0sYUFBYyxDQUFBLFFBQUEsQ0FBUyxLQUFRLEVBQUEsUUFBQSxDQUFTLEtBQU0sQ0FBQSxDQUFBO0FBRWhELE1BQUEsSUFBQSxjQUFBLEtBQW1CLFNBQVMsU0FBVyxFQUFBO0FBQ3pDLFFBQUEsaUJBQUEsQ0FBa0IsU0FBUyxTQUFTLENBQUEsQ0FBQTtBQUFBLE9BQUE7QUFDdEMsS0FBQTtHQUVKLENBQUEsQ0FBQTtBQUVKLENBQUE7QUFFZ0IsU0FBQSx3QkFBQSxDQUF5QixFQUFFLEtBQUEsRUFBa0QsRUFBQTtBQUNyRixFQUFBLE1BQUE7QUFDSixJQUFBLEtBQUE7QUFDQSxJQUFBLE9BQUE7QUFDQSxJQUFBLEdBQUE7QUFDQSxJQUFBLGdCQUFBO0FBQ0EsSUFBQSxjQUFBO0FBQ0EsSUFBQSxVQUFBO0FBQ0EsSUFBQSxVQUFBO0lBQ0EsZ0JBQW1CLEdBQUEsSUFBQTtBQUFBLEdBQUEsR0FDakIsTUFBTSxRQUFTLEVBQUEsQ0FBQTtBQUNuQixFQUFBLE1BQU0sVUFBYSxHQUFBLE9BQUEsQ0FBUSxNQUFPLE9BQUEsQ0FBUSxLQUFLLENBQUEsR0FBSSxLQUFRLEdBQUEsQ0FBQyxLQUFLLENBQUEsRUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBLENBQUE7QUFFNUUsRUFBQSxNQUFNLENBQUMsZ0JBQUEsRUFBa0IsbUJBQW1CLENBQUEsR0FBSSxTQUFTLFVBQVUsQ0FBQSxDQUFBO0FBQ25FLEVBQUEsTUFBTSxDQUFDLFVBQUEsRUFBWSxhQUFhLENBQUEsR0FBSSxTQUFTLEVBQUUsQ0FBQSxDQUFBO0FBRXpDLEVBQUEsTUFBQSxjQUFBLEdBQWlCLE9BQVEsQ0FBQSxNQUFNLGlCQUFrQixDQUFBLE9BQUEsRUFBUyxVQUFVLENBQUcsRUFBQSxDQUFDLE9BQVMsRUFBQSxVQUFVLENBQUMsQ0FBQSxDQUFBO0FBR2xHLEVBQUEsU0FBQSxDQUFVLE1BQU07QUFDZCxJQUFBLG1CQUFBLENBQW9CLFVBQVUsQ0FBQSxDQUFBO0dBQzdCLEVBQUEsQ0FBQyxVQUFVLENBQUMsQ0FBQSxDQUFBO0FBRWYsRUFBQSxNQUFNLGFBQWdCLEdBQUEsQ0FBQ0QsTUFBZSxFQUFBLEVBQUUsUUFBOEIsS0FBQTtBQUNwRSxJQUFBLElBQUksV0FBVyxjQUFnQixFQUFBO0FBQzdCLE1BQUEsYUFBQSxDQUFjQSxNQUFLLENBQUEsQ0FBQTtBQUNuQixNQUFBLElBQUksTUFBTSxjQUFnQixFQUFBO0FBQ3hCLFFBQUEsS0FBQSxDQUFNLGVBQWdCQSxNQUFLLENBQUEsQ0FBQTtBQUFBLE9BQUE7QUFFdEJBLE1BQUFBLE9BQUFBLE1BQUFBLENBQUFBO0FBQUEsS0FBQTtBQUdULElBQUEsSUFBSSxXQUFXLFlBQWMsRUFBQTtBQUMzQixNQUFBLGFBQUEsQ0FBYyxFQUFFLENBQUEsQ0FBQTtBQUNULE1BQUEsT0FBQSxFQUFBLENBQUE7QUFBQSxLQUFBO0FBR0YsSUFBQSxPQUFBLFVBQUEsQ0FBQTtBQUFBLEdBQUEsQ0FBQTtBQUdULEVBQUEsTUFBTSxXQUFjLEdBQUEsT0FBQSxDQUFRLE1BQVMsR0FBQSxDQUFBLEdBQUksY0FBaUIsR0FBQSxFQUFBLENBQUE7QUFDcEQsRUFBQSxNQUFBLGVBQUEsR0FBa0IsZUFBZSxVQUFVLENBQUEsQ0FBQTtBQUVqRCxFQUNHLHVCQUFBLEtBQUEsQ0FBQSxjQUFBLFdBQUEsRUFBQTtJQUNDLEVBQUksRUFBQSxHQUFBO0FBQ0osSUFBQSxXQUFBO0lBQ0EsS0FBTSxFQUFBLE1BQUE7QUFDTixJQUFBLFVBQUE7SUFDQSxRQUFVLEVBQUEsVUFBQTtJQUNWLEtBQU8sRUFBQSxnQkFBQTtJQUNQLGdCQUFrQixFQUFBLElBQUE7SUFDbEIsZ0JBQWtCLEVBQUEsZ0JBQUEsSUFBb0IsT0FBQSxnQkFBQSxHQUFBLENBQUE7SUFDdEMsZUFBaUIsRUFBQSxLQUFBO0lBQ2pCLFdBQVcsRUFBQSxJQUFBO0FBQ1gsSUFBQSxnQkFBQTtJQUVBLGdCQUFrQixFQUFBO01BQ2hCLE9BQVMsRUFBQSxJQUFBO01BQ1QsYUFBZSxFQUFBLFNBQUE7QUFDZixNQUFBLHVCQUFBO0FBQUEsS0FBQTtJQUVGLE9BQVMsRUFBQSxlQUFBO0lBQ1QsaUJBQW1CLEVBQUEsS0FBQTtJQUNuQixVQUFZLEVBQUEsRUFBRSxRQUFRLGtCQUFtQixFQUFBO0lBQ3pDLFdBQWEsRUFBQSxJQUFBO0lBQ2IsbUJBQXFCLEVBQUEsS0FBQTtBQUNyQixJQUFBLGFBQUE7QUFDQSxJQUFBLE1BQUEsRUFBUSxNQUFNO0FBQ1osTUFBQSxLQUFBLENBQU0sY0FBYyxnQkFBZ0IsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUV0QyxZQUFjLEVBQUEsVUFBQTtBQUNkLElBQUEsYUFBQSxFQUFhLFVBQVUsS0FBTSxDQUFBLFNBQUEsQ0FBVSxPQUFRLENBQUEsc0NBQUEsQ0FBdUMsR0FBRyxnQkFBa0IsQ0FBQSxDQUFBLENBQUE7SUFDM0csUUFBVSxFQUFBLENBQUMsVUFBVSxNQUFXLEtBQUE7QUFDMUIsTUFBQSxJQUFBLE1BQUEsQ0FBTyxNQUFXLEtBQUEsT0FBQSxJQUFXLGNBQWdCLEVBQUE7QUFDekMsUUFBQSxLQUFBLENBQUEsYUFBQSxDQUFjLEVBQUUsQ0FBQSxDQUFBO0FBQUEsT0FBQTtBQUV4QixNQUFBLG1CQUFBLENBQW9CLFNBQVMsR0FBSSxDQUFBLENBQUMsQ0FBTSxLQUFBLENBQUEsQ0FBRSxLQUFNLENBQUMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtHQUVyRCxDQUFBLENBQUE7QUFFSixDQUFBO0FBYU8sTUFBTSxxQkFBcUIsQ0FBQztBQUNqQyxFQUFBLFFBQUE7QUFDQSxFQUFBLElBQUE7QUFDQSxFQUFBLFVBQUE7QUFDQSxFQUFBLFFBQUE7QUFDQSxFQUFBLFNBQUE7QUFDQSxFQUFBLFVBQUE7QUFDQSxFQUFBLGFBQUE7QUFDQSxFQUFBLGlCQUFBO0FBQ0YsQ0FBK0QsS0FBQTtBQXBOL0QsRUFBQSxJQUFBLEVBQUEsQ0FBQTtBQXdOZ0QsRUFBQSxNQUFBLEVBQUEsR0FBQSxZQUFULElBQVMsR0FBQSxTQUFBLENBQUEsSUFBVCxDQUE3QixhQUFBLEVBQWEsYUFBQSxDQUFBLENBQUEsQ0FBQTtBQUNyQixFQUFBLE1BQU0sUUFBUSxTQUFVLEVBQUEsQ0FBQTtBQUNsQixFQUFBLE1BQUEsWUFBQSxHQUFlLGdCQUFnQixLQUFLLENBQUEsQ0FBQTtBQUNwQyxFQUFBLE1BQUEsWUFBQSxHQUFlLFdBQVcsZUFBZSxDQUFBLENBQUE7QUFFL0MsRUFBQSx1QkFDRyxLQUFBLENBQUEsYUFBQSxDQUFBLEtBQUEsRUFBQSxhQUFBLENBQUEsY0FBQSxDQUFBO0lBQ0MsR0FBSyxFQUFBLFFBQUE7QUFDTCxJQUFBLFNBQUEsRUFBVyxFQUFHLENBQUEsWUFBQSxDQUFhLE1BQVEsRUFBQSxTQUFBLElBQWEsYUFBYSxhQUFhLENBQUE7QUFBQSxHQUFBLEVBQ3RFLElBSEwsQ0FBQSxFQUFBO0lBTUMsYUFBWSxFQUFBLDJCQUFBO0FBQ1osSUFBQSxLQUFBLEVBQU8sSUFBSyxDQUFBLEtBQUE7R0FBQSxDQUFBLGtCQUVYLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQUksSUFBQSxTQUFBLEVBQVcsWUFBYSxDQUFBLFFBQUE7R0FDMUIsa0JBQUEsS0FBQSxDQUFBLGNBQUEsUUFBQSxFQUFBO0FBQVMsSUFBQSxhQUFBO0lBQThCLEtBQU8sRUFBQSxVQUFBO0FBQUEsR0FBWSxDQUM3RCxDQUFBLGtCQUNDLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxFQUFBO0FBQ0MsSUFBQSxTQUFBLEVBQVcsWUFBYSxDQUFBLFVBQUE7SUFDeEIsYUFBYSxFQUFBLFNBQUEsQ0FBVSxLQUFNLENBQUEsU0FBQSxDQUFVLE9BQVEsQ0FBQSxtQ0FBQTtBQUM3QyxNQUFBLENBQUEsRUFBQSxHQUFLLEtBQUEsS0FBTCxLQUFBLElBQUEsR0FBYyxFQUFBLEdBQUEsTUFBQSxDQUFPLEtBQUssS0FBSyxDQUFBO0FBQUEsS0FBQTtBQUNqQyxHQUFBLHdCQUVDLGFBQUEsQ0FBQSxNQUFBLEVBQUEsSUFBTSxFQUFBLFFBQVMsQ0FDbEIsQ0FDRixDQUFBLENBQUE7QUFFSixFQUFBO0FBRUEsa0JBQUEsQ0FBbUIsV0FBYyxHQUFBLG1CQUFBLENBQUE7QUFFakMsTUFBTSxlQUFBLEdBQWtCLENBQUMsS0FBMEIsTUFBQTtBQUNqRCxFQUFBLFFBQUEsRUFBVSxHQUFJLENBQUE7SUFDWixXQUFhLEVBQUEsS0FBQSxDQUFNLFFBQVEsQ0FBQyxDQUFBO0dBQzdCLENBQUE7QUFDSCxDQUFBLENBQUEsQ0FBQTtBQUVPLFNBQVMsd0JBQXdCLEtBQTJCLEVBQUE7QUFDN0QsRUFBQSxJQUFBLEtBQUEsQ0FBTSxNQUFNLE9BQVMsRUFBQTtBQUN2QixJQUFRLHVCQUFBLEtBQUEsQ0FBQSxjQUFBLHdCQUFBLEVBQUE7QUFBeUIsTUFBQSxLQUFBO0tBQWMsQ0FBQSxDQUFBO0dBQzFDLE1BQUE7QUFDTCxJQUFRLHVCQUFBLEtBQUEsQ0FBQSxjQUFBLG1CQUFBLEVBQUE7QUFBb0IsTUFBQSxLQUFBO0tBQWMsQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUU5Qzs7OzsifQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { VariableHide } from '@grafana/data';
|
|
3
|
+
import { useSceneObjectState, SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
4
|
+
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
5
|
+
import { ControlsLabel } from '../../utils/ControlsLabel.js';
|
|
6
|
+
import { css } from '@emotion/css';
|
|
7
|
+
import { selectors } from '@grafana/e2e-selectors';
|
|
8
|
+
|
|
9
|
+
class VariableValueSelectors extends SceneObjectBase {
|
|
10
|
+
}
|
|
11
|
+
VariableValueSelectors.Component = VariableValueSelectorsRenderer;
|
|
12
|
+
function VariableValueSelectorsRenderer({ model }) {
|
|
13
|
+
const variables = sceneGraph.getVariables(model).useState();
|
|
14
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, variables.variables.map((variable) => /* @__PURE__ */ React.createElement(VariableValueSelectWrapper, {
|
|
15
|
+
key: variable.state.key,
|
|
16
|
+
variable,
|
|
17
|
+
layout: model.state.layout
|
|
18
|
+
})));
|
|
19
|
+
}
|
|
20
|
+
function VariableValueSelectWrapper({ variable, layout, showAlways, hideLabel }) {
|
|
21
|
+
const state = useSceneObjectState(variable, { shouldActivateOrKeepAlive: true });
|
|
22
|
+
if (state.hide === VariableHide.hideVariable && !showAlways) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
if (layout === "vertical") {
|
|
26
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
27
|
+
className: verticalContainer,
|
|
28
|
+
"data-testid": selectors.pages.Dashboard.SubMenu.submenuItem
|
|
29
|
+
}, /* @__PURE__ */ React.createElement(VariableLabel, {
|
|
30
|
+
variable,
|
|
31
|
+
layout,
|
|
32
|
+
hideLabel
|
|
33
|
+
}), /* @__PURE__ */ React.createElement(variable.Component, {
|
|
34
|
+
model: variable
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
38
|
+
className: containerStyle,
|
|
39
|
+
"data-testid": selectors.pages.Dashboard.SubMenu.submenuItem
|
|
40
|
+
}, /* @__PURE__ */ React.createElement(VariableLabel, {
|
|
41
|
+
variable,
|
|
42
|
+
hideLabel
|
|
43
|
+
}), /* @__PURE__ */ React.createElement(variable.Component, {
|
|
44
|
+
model: variable
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
function VariableLabel({ variable, layout, hideLabel }) {
|
|
48
|
+
var _a;
|
|
49
|
+
const { state } = variable;
|
|
50
|
+
if (variable.state.hide === VariableHide.hideLabel || hideLabel) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const elementId = `var-${state.key}`;
|
|
54
|
+
const labelOrName = state.label || state.name;
|
|
55
|
+
return /* @__PURE__ */ React.createElement(ControlsLabel, {
|
|
56
|
+
htmlFor: elementId,
|
|
57
|
+
isLoading: state.loading,
|
|
58
|
+
onCancel: () => {
|
|
59
|
+
var _a2;
|
|
60
|
+
return (_a2 = variable.onCancel) == null ? void 0 : _a2.call(variable);
|
|
61
|
+
},
|
|
62
|
+
label: labelOrName,
|
|
63
|
+
error: state.error,
|
|
64
|
+
layout,
|
|
65
|
+
description: (_a = state.description) != null ? _a : void 0
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
const containerStyle = css({ display: "flex" });
|
|
69
|
+
const verticalContainer = css({ display: "flex", flexDirection: "column" });
|
|
70
|
+
|
|
71
|
+
export { VariableValueSelectWrapper, VariableValueSelectors };
|
|
72
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFyaWFibGVWYWx1ZVNlbGVjdG9ycy5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2NvbXBvbmVudHMvVmFyaWFibGVWYWx1ZVNlbGVjdG9ycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgVmFyaWFibGVIaWRlIH0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBTY2VuZU9iamVjdEJhc2UsIHVzZVNjZW5lT2JqZWN0U3RhdGUgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyc7XG5pbXBvcnQgeyBzY2VuZUdyYXBoIH0gZnJvbSAnLi4vLi4vY29yZS9zY2VuZUdyYXBoL2luZGV4LmpzJztcbmltcG9ydCB7IENvbnRyb2xzTGFiZWwgfSBmcm9tICcuLi8uLi91dGlscy9Db250cm9sc0xhYmVsLmpzJztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL2Nzcyc7XG5pbXBvcnQgeyBzZWxlY3RvcnMgfSBmcm9tICdAZ3JhZmFuYS9lMmUtc2VsZWN0b3JzJztcblxuY2xhc3MgVmFyaWFibGVWYWx1ZVNlbGVjdG9ycyBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG59XG5WYXJpYWJsZVZhbHVlU2VsZWN0b3JzLkNvbXBvbmVudCA9IFZhcmlhYmxlVmFsdWVTZWxlY3RvcnNSZW5kZXJlcjtcbmZ1bmN0aW9uIFZhcmlhYmxlVmFsdWVTZWxlY3RvcnNSZW5kZXJlcih7IG1vZGVsIH0pIHtcbiAgY29uc3QgdmFyaWFibGVzID0gc2NlbmVHcmFwaC5nZXRWYXJpYWJsZXMobW9kZWwpLnVzZVN0YXRlKCk7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChSZWFjdC5GcmFnbWVudCwgbnVsbCwgdmFyaWFibGVzLnZhcmlhYmxlcy5tYXAoKHZhcmlhYmxlKSA9PiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChWYXJpYWJsZVZhbHVlU2VsZWN0V3JhcHBlciwge1xuICAgIGtleTogdmFyaWFibGUuc3RhdGUua2V5LFxuICAgIHZhcmlhYmxlLFxuICAgIGxheW91dDogbW9kZWwuc3RhdGUubGF5b3V0XG4gIH0pKSk7XG59XG5mdW5jdGlvbiBWYXJpYWJsZVZhbHVlU2VsZWN0V3JhcHBlcih7IHZhcmlhYmxlLCBsYXlvdXQsIHNob3dBbHdheXMsIGhpZGVMYWJlbCB9KSB7XG4gIGNvbnN0IHN0YXRlID0gdXNlU2NlbmVPYmplY3RTdGF0ZSh2YXJpYWJsZSwgeyBzaG91bGRBY3RpdmF0ZU9yS2VlcEFsaXZlOiB0cnVlIH0pO1xuICBpZiAoc3RhdGUuaGlkZSA9PT0gVmFyaWFibGVIaWRlLmhpZGVWYXJpYWJsZSAmJiAhc2hvd0Fsd2F5cykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChsYXlvdXQgPT09IFwidmVydGljYWxcIikge1xuICAgIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICBjbGFzc05hbWU6IHZlcnRpY2FsQ29udGFpbmVyLFxuICAgICAgXCJkYXRhLXRlc3RpZFwiOiBzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1cbiAgICB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChWYXJpYWJsZUxhYmVsLCB7XG4gICAgICB2YXJpYWJsZSxcbiAgICAgIGxheW91dCxcbiAgICAgIGhpZGVMYWJlbFxuICAgIH0pLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudCh2YXJpYWJsZS5Db21wb25lbnQsIHtcbiAgICAgIG1vZGVsOiB2YXJpYWJsZVxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgIGNsYXNzTmFtZTogY29udGFpbmVyU3R5bGUsXG4gICAgXCJkYXRhLXRlc3RpZFwiOiBzZWxlY3RvcnMucGFnZXMuRGFzaGJvYXJkLlN1Yk1lbnUuc3VibWVudUl0ZW1cbiAgfSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoVmFyaWFibGVMYWJlbCwge1xuICAgIHZhcmlhYmxlLFxuICAgIGhpZGVMYWJlbFxuICB9KSwgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQodmFyaWFibGUuQ29tcG9uZW50LCB7XG4gICAgbW9kZWw6IHZhcmlhYmxlXG4gIH0pKTtcbn1cbmZ1bmN0aW9uIFZhcmlhYmxlTGFiZWwoeyB2YXJpYWJsZSwgbGF5b3V0LCBoaWRlTGFiZWwgfSkge1xuICB2YXIgX2E7XG4gIGNvbnN0IHsgc3RhdGUgfSA9IHZhcmlhYmxlO1xuICBpZiAodmFyaWFibGUuc3RhdGUuaGlkZSA9PT0gVmFyaWFibGVIaWRlLmhpZGVMYWJlbCB8fCBoaWRlTGFiZWwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBlbGVtZW50SWQgPSBgdmFyLSR7c3RhdGUua2V5fWA7XG4gIGNvbnN0IGxhYmVsT3JOYW1lID0gc3RhdGUubGFiZWwgfHwgc3RhdGUubmFtZTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRyb2xzTGFiZWwsIHtcbiAgICBodG1sRm9yOiBlbGVtZW50SWQsXG4gICAgaXNMb2FkaW5nOiBzdGF0ZS5sb2FkaW5nLFxuICAgIG9uQ2FuY2VsOiAoKSA9PiB7XG4gICAgICB2YXIgX2EyO1xuICAgICAgcmV0dXJuIChfYTIgPSB2YXJpYWJsZS5vbkNhbmNlbCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hMi5jYWxsKHZhcmlhYmxlKTtcbiAgICB9LFxuICAgIGxhYmVsOiBsYWJlbE9yTmFtZSxcbiAgICBlcnJvcjogc3RhdGUuZXJyb3IsXG4gICAgbGF5b3V0LFxuICAgIGRlc2NyaXB0aW9uOiAoX2EgPSBzdGF0ZS5kZXNjcmlwdGlvbikgIT0gbnVsbCA/IF9hIDogdm9pZCAwXG4gIH0pO1xufVxuY29uc3QgY29udGFpbmVyU3R5bGUgPSBjc3MoeyBkaXNwbGF5OiBcImZsZXhcIiB9KTtcbmNvbnN0IHZlcnRpY2FsQ29udGFpbmVyID0gY3NzKHsgZGlzcGxheTogXCJmbGV4XCIsIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIgfSk7XG5cbmV4cG9ydCB7IFZhcmlhYmxlVmFsdWVTZWxlY3RXcmFwcGVyLCBWYXJpYWJsZVZhbHVlU2VsZWN0b3JzIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVZtRnlhV0ZpYkdWV1lXeDFaVk5sYkdWamRHOXljeTVxY3lJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzWmhjbWxoWW14bGN5OWpiMjF3YjI1bGJuUnpMMVpoY21saFlteGxWbUZzZFdWVFpXeGxZM1J2Y25NdWRITjRJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JTWldGamRDQm1jbTl0SUNkeVpXRmpkQ2M3WEc1Y2JtbHRjRzl5ZENCN0lGWmhjbWxoWW14bFNHbGtaU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVYRzVwYlhCdmNuUWdleUJUWTJWdVpVOWlhbVZqZEVKaGMyVXNJSFZ6WlZOalpXNWxUMkpxWldOMFUzUmhkR1VnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDFOalpXNWxUMkpxWldOMFFtRnpaU2M3WEc1cGJYQnZjblFnZXlCelkyVnVaVWR5WVhCb0lIMGdabkp2YlNBbkxpNHZMaTR2WTI5eVpTOXpZMlZ1WlVkeVlYQm9KenRjYm1sdGNHOXlkQ0I3SUVOdmJuUnliMnh6VEdGNWIzVjBMQ0JUWTJWdVpVTnZiWEJ2Ym1WdWRGQnliM0J6TENCVFkyVnVaVTlpYW1WamRGTjBZWFJsSUgwZ1puSnZiU0FuTGk0dkxpNHZZMjl5WlM5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCVFkyVnVaVlpoY21saFlteGxMQ0JUWTJWdVpWWmhjbWxoWW14bFUzUmhkR1VnZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCRGIyNTBjbTlzYzB4aFltVnNJSDBnWm5KdmJTQW5MaTR2TGk0dmRYUnBiSE12UTI5dWRISnZiSE5NWVdKbGJDYzdYRzVwYlhCdmNuUWdleUJqYzNNZ2ZTQm1jbTl0SUNkQVpXMXZkR2x2Ymk5amMzTW5PMXh1YVcxd2IzSjBJSHNnYzJWc1pXTjBiM0p6SUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WlRKbExYTmxiR1ZqZEc5eWN5YzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnVm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZEc5eWMxTjBZWFJsSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSVGRHRjBaU0I3WEc0Z0lHeGhlVzkxZEQ4NklFTnZiblJ5YjJ4elRHRjViM1YwTzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZtRnlhV0ZpYkdWV1lXeDFaVk5sYkdWamRHOXljeUJsZUhSbGJtUnpJRk5qWlc1bFQySnFaV04wUW1GelpUeFdZWEpwWVdKc1pWWmhiSFZsVTJWc1pXTjBiM0p6VTNSaGRHVStJSHRjYmlBZ2NIVmliR2xqSUhOMFlYUnBZeUJEYjIxd2IyNWxiblFnUFNCV1lYSnBZV0pzWlZaaGJIVmxVMlZzWldOMGIzSnpVbVZ1WkdWeVpYSTdYRzU5WEc1Y2JtWjFibU4wYVc5dUlGWmhjbWxoWW14bFZtRnNkV1ZUWld4bFkzUnZjbk5TWlc1a1pYSmxjaWg3SUcxdlpHVnNJSDA2SUZOalpXNWxRMjl0Y0c5dVpXNTBVSEp2Y0hNOFZtRnlhV0ZpYkdWV1lXeDFaVk5sYkdWamRHOXljejRwSUh0Y2JpQWdZMjl1YzNRZ2RtRnlhV0ZpYkdWeklEMGdjMk5sYm1WSGNtRndhQzVuWlhSV1lYSnBZV0pzWlhNb2JXOWtaV3dwSVM1MWMyVlRkR0YwWlNncE8xeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQRDVjYmlBZ0lDQWdJSHQyWVhKcFlXSnNaWE11ZG1GeWFXRmliR1Z6TG0xaGNDZ29kbUZ5YVdGaWJHVXBJRDArSUNoY2JpQWdJQ0FnSUNBZ1BGWmhjbWxoWW14bFZtRnNkV1ZUWld4bFkzUlhjbUZ3Y0dWeUlHdGxlVDE3ZG1GeWFXRmliR1V1YzNSaGRHVXVhMlY1ZlNCMllYSnBZV0pzWlQxN2RtRnlhV0ZpYkdWOUlHeGhlVzkxZEQxN2JXOWtaV3d1YzNSaGRHVXViR0Y1YjNWMGZTQXZQbHh1SUNBZ0lDQWdLU2w5WEc0Z0lDQWdQQzgrWEc0Z0lDazdYRzU5WEc1Y2JtbHVkR1Z5Wm1GalpTQldZWEpwWVdKc1pWTmxiR1ZqZEZCeWIzQnpJSHRjYmlBZ2JHRjViM1YwUHpvZ1EyOXVkSEp2YkhOTVlYbHZkWFE3WEc0Z0lIWmhjbWxoWW14bE9pQlRZMlZ1WlZaaGNtbGhZbXhsTzF4dUlDQXZLaW9nVkc4Z2IzWmxjbkpwWkdVZ2FHbGtaU0JtY205dElGWmhjbWxoWW14bFZtRnNkV1ZUWld4bFkzUkNlVTVoYldVZ0lDb3ZYRzRnSUhOb2IzZEJiSGRoZVhNL09pQmliMjlzWldGdU8xeHVJQ0F2S2lvZ1ZHOGdjSEp2ZG1sa1pTQmhiaUJ2Y0hScGIyNGdkRzhnYUdsa1pTQjBhR1VnYkdGaVpXd2dhVzRnZEdobElIWmhjbWxoWW14bElIWmhiSFZsSUhObGJHVmpkRzl5SUNvdlhHNGdJR2hwWkdWTVlXSmxiRDg2SUdKdmIyeGxZVzQ3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQldZWEpwWVdKc1pWWmhiSFZsVTJWc1pXTjBWM0poY0hCbGNpaDdJSFpoY21saFlteGxMQ0JzWVhsdmRYUXNJSE5vYjNkQmJIZGhlWE1zSUdocFpHVk1ZV0psYkNCOU9pQldZWEpwWVdKc1pWTmxiR1ZqZEZCeWIzQnpLU0I3WEc0Z0lHTnZibk4wSUhOMFlYUmxJRDBnZFhObFUyTmxibVZQWW1wbFkzUlRkR0YwWlR4VFkyVnVaVlpoY21saFlteGxVM1JoZEdVK0tIWmhjbWxoWW14bExDQjdJSE5vYjNWc1pFRmpkR2wyWVhSbFQzSkxaV1Z3UVd4cGRtVTZJSFJ5ZFdVZ2ZTazdYRzVjYmlBZ2FXWWdLSE4wWVhSbExtaHBaR1VnUFQwOUlGWmhjbWxoWW14bFNHbGtaUzVvYVdSbFZtRnlhV0ZpYkdVZ0ppWWdJWE5vYjNkQmJIZGhlWE1wSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHbG1JQ2hzWVhsdmRYUWdQVDA5SUNkMlpYSjBhV05oYkNjcElIdGNiaUFnSUNCeVpYUjFjbTRnS0Z4dUlDQWdJQ0FnUEdScGRpQmpiR0Z6YzA1aGJXVTllM1psY25ScFkyRnNRMjl1ZEdGcGJtVnlmU0JrWVhSaExYUmxjM1JwWkQxN2MyVnNaV04wYjNKekxuQmhaMlZ6TGtSaGMyaGliMkZ5WkM1VGRXSk5aVzUxTG5OMVltMWxiblZKZEdWdGZUNWNiaUFnSUNBZ0lDQWdQRlpoY21saFlteGxUR0ZpWld3Z2RtRnlhV0ZpYkdVOWUzWmhjbWxoWW14bGZTQnNZWGx2ZFhROWUyeGhlVzkxZEgwZ2FHbGtaVXhoWW1Wc1BYdG9hV1JsVEdGaVpXeDlJQzgrWEc0Z0lDQWdJQ0FnSUR4MllYSnBZV0pzWlM1RGIyMXdiMjVsYm5RZ2JXOWtaV3c5ZTNaaGNtbGhZbXhsZlNBdlBseHVJQ0FnSUNBZ1BDOWthWFkrWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUhKbGRIVnliaUFvWEc0Z0lDQWdQR1JwZGlCamJHRnpjMDVoYldVOWUyTnZiblJoYVc1bGNsTjBlV3hsZlNCa1lYUmhMWFJsYzNScFpEMTdjMlZzWldOMGIzSnpMbkJoWjJWekxrUmhjMmhpYjJGeVpDNVRkV0pOWlc1MUxuTjFZbTFsYm5WSmRHVnRmVDVjYmlBZ0lDQWdJRHhXWVhKcFlXSnNaVXhoWW1Wc0lIWmhjbWxoWW14bFBYdDJZWEpwWVdKc1pYMGdhR2xrWlV4aFltVnNQWHRvYVdSbFRHRmlaV3g5SUM4K1hHNGdJQ0FnSUNBOGRtRnlhV0ZpYkdVdVEyOXRjRzl1Wlc1MElHMXZaR1ZzUFh0MllYSnBZV0pzWlgwZ0x6NWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1ZtRnlhV0ZpYkdWTVlXSmxiQ2g3SUhaaGNtbGhZbXhsTENCc1lYbHZkWFFzSUdocFpHVk1ZV0psYkNCOU9pQldZWEpwWVdKc1pWTmxiR1ZqZEZCeWIzQnpLU0I3WEc0Z0lHTnZibk4wSUhzZ2MzUmhkR1VnZlNBOUlIWmhjbWxoWW14bE8xeHVYRzRnSUdsbUlDaDJZWEpwWVdKc1pTNXpkR0YwWlM1b2FXUmxJRDA5UFNCV1lYSnBZV0pzWlVocFpHVXVhR2xrWlV4aFltVnNJSHg4SUdocFpHVk1ZV0psYkNrZ2UxeHVJQ0FnSUhKbGRIVnliaUJ1ZFd4c08xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ1pXeGxiV1Z1ZEVsa0lEMGdZSFpoY2kwa2UzTjBZWFJsTG10bGVYMWdPMXh1SUNCamIyNXpkQ0JzWVdKbGJFOXlUbUZ0WlNBOUlITjBZWFJsTG14aFltVnNJSHg4SUhOMFlYUmxMbTVoYldVN1hHNWNiaUFnY21WMGRYSnVJQ2hjYmlBZ0lDQThRMjl1ZEhKdmJITk1ZV0psYkZ4dUlDQWdJQ0FnYUhSdGJFWnZjajE3Wld4bGJXVnVkRWxrZlZ4dUlDQWdJQ0FnYVhOTWIyRmthVzVuUFh0emRHRjBaUzVzYjJGa2FXNW5mVnh1SUNBZ0lDQWdiMjVEWVc1alpXdzlleWdwSUQwK0lIWmhjbWxoWW14bExtOXVRMkZ1WTJWc1B5NG9LWDFjYmlBZ0lDQWdJR3hoWW1Wc1BYdHNZV0psYkU5eVRtRnRaWDFjYmlBZ0lDQWdJR1Z5Y205eVBYdHpkR0YwWlM1bGNuSnZjbjFjYmlBZ0lDQWdJR3hoZVc5MWREMTdiR0Y1YjNWMGZWeHVJQ0FnSUNBZ1pHVnpZM0pwY0hScGIyNDllM04wWVhSbExtUmxjMk55YVhCMGFXOXVJRDgvSUhWdVpHVm1hVzVsWkgxY2JpQWdJQ0F2UGx4dUlDQXBPMXh1ZlZ4dVhHNWpiMjV6ZENCamIyNTBZV2x1WlhKVGRIbHNaU0E5SUdOemN5aDdJR1JwYzNCc1lYazZJQ2RtYkdWNEp5QjlLVHRjYm1OdmJuTjBJSFpsY25ScFkyRnNRMjl1ZEdGcGJtVnlJRDBnWTNOektIc2daR2x6Y0d4aGVUb2dKMlpzWlhnbkxDQm1iR1Y0UkdseVpXTjBhVzl1T2lBblkyOXNkVzF1SnlCOUtUdGNiaUpkTENKdVlXMWxjeUk2V3lKZllTSmRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3UVVGblFrOHNUVUZCVFN3clFrRkJLMElzWlVGQk5rTXNRMEZCUVR0QlFVVjZSaXhEUVVGQk8wRkJSbUVzYzBKQlFVRXNRMEZEUnl4VFFVRlpMRWRCUVVFc09FSkJRVUVzUTBGQlFUdEJRVWMxUWl4VFFVRlRMRGhDUVVGQkxFTkJRU3RDTEVWQlFVVXNTMEZCUVN4RlFVRnpSQ3hGUVVGQk8wRkJRemxHTEVWQlFVRXNUVUZCVFN4VFFVRlpMRWRCUVVFc1ZVRkJRU3hEUVVGWExGbEJRV0VzUTBGQlFTeExRVUZMTEVWQlFVY3NVVUZCVXl4RlFVRkJMRU5CUVVFN1FVRkZNMFFzUlVGQlFTeHBSVUZGU3l4VFFVRlZMRU5CUVVFc1UwRkJRU3hEUVVGVkxFZEJRVWtzUTBGQlFTeERRVUZETERaQ1FVTjJRaXhMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTERCQ1FVRkJMRVZCUVVFN1FVRkJRU3hKUVVFeVFpeEhRVUZCTEVWQlFVc3NVMEZCVXl4TFFVRk5MRU5CUVVFc1IwRkJRVHRCUVVGQkxFbEJRVXNzVVVGQlFUdEJRVUZCTEVsQlFXOUNMRTFCUVVFc1JVRkJVU3hOUVVGTkxFdEJRVTBzUTBGQlFTeE5RVUZCTzBGQlFVRXNSMEZCVVN4RFFVTjBSeXhEUVVOSUxFTkJRVUVzUTBGQlFUdEJRVVZLTEVOQlFVRTdRVUZYVHl4VFFVRlRMREpDUVVFeVFpeEZRVUZGTEZGQlFVRXNSVUZCVlN4TlFVRlJMRVZCUVVFc1ZVRkJRU3hGUVVGWkxGZEJRV3RETEVWQlFVRTdRVUZETTBjc1JVRkJRU3hOUVVGTkxGRkJRVkVzYlVKQlFYZERMRU5CUVVFc1VVRkJRU3hGUVVGVkxFVkJRVVVzZVVKQlFVRXNSVUZCTWtJc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGRmJrY3NSVUZCUVN4SlFVRkpMRXRCUVUwc1EwRkJRU3hKUVVGQkxFdEJRVk1zV1VGQllTeERRVUZCTEZsQlFVRXNTVUZCWjBJc1EwRkJReXhWUVVGWkxFVkJRVUU3UVVGRE0wUXNTVUZCVHl4UFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMVE3UVVGRlFTeEZRVUZCTEVsQlFVa3NWMEZCVnl4VlFVRlpMRVZCUVVFN1FVRkRla0lzU1VGQlFTeDFRa0ZEUnl4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlFUdEJRVUZCTEUxQlFVa3NVMEZCVnl4RlFVRkJMR2xDUVVGQk8wRkJRVUVzVFVGQmJVSXNZVUZCWVN4RlFVRkJMRk5CUVVFc1EwRkJWU3hMUVVGTkxFTkJRVUVzVTBGQlFTeERRVUZWTEU5QlFWRXNRMEZCUVN4WFFVRkJPMEZCUVVFc1MwRkJRU3hyUWtGREwwVXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hoUVVGQkxFVkJRVUU3UVVGQlFTeE5RVUZqTEZGQlFVRTdRVUZCUVN4TlFVRnZRaXhOUVVGQk8wRkJRVUVzVFVGQlowSXNVMEZCUVR0QlFVRkJMRXRCUVhOQ0xFTkJRVUVzYTBKQlEzaEZMRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRVUVzVVVGQlFTeERRVUZUTEZOQlFWUXNSVUZCUVR0QlFVRkJMRTFCUVcxQ0xFdEJRVThzUlVGQlFTeFJRVUZCTzBGQlFVRXNTMEZCVlN4RFFVTjJReXhEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVVZLTzBGQlJVRXNSVUZCUVN4MVFrRkRSeXhMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEV0QlFVRXNSVUZCUVR0QlFVRkJMRWxCUVVrc1UwRkJWeXhGUVVGQkxHTkJRVUU3UVVGQlFTeEpRVUZuUWl4aFFVRmhMRVZCUVVFc1UwRkJRU3hEUVVGVkxFdEJRVTBzUTBGQlFTeFRRVUZCTEVOQlFWVXNUMEZCVVN4RFFVRkJMRmRCUVVFN1FVRkJRU3hIUVVGQkxHdENRVU0xUlN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxHRkJRVUVzUlVGQlFUdEJRVUZCTEVsQlFXTXNVVUZCUVR0QlFVRkJMRWxCUVc5Q0xGTkJRVUU3UVVGQlFTeEhRVUZ6UWl4RFFVRkJMR3RDUVVONFJDeExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMRkZCUVVFc1EwRkJVeXhUUVVGVUxFVkJRVUU3UVVGQlFTeEpRVUZ0UWl4TFFVRlBMRVZCUVVFc1VVRkJRVHRCUVVGQkxFZEJRVlVzUTBGRGRrTXNRMEZCUVN4RFFVRkJPMEZCUlVvc1EwRkJRVHRCUVVWQkxGTkJRVk1zWVVGQll5eERRVUZCTEVWQlFVVXNVVUZCVlN4RlFVRkJMRTFCUVVFc1JVRkJVU3hYUVVGclF5eEZRVUZCTzBGQmFrVTNSU3hGUVVGQkxFbEJRVUVzUlVGQlFTeERRVUZCTzBGQmEwVkZMRVZCUVUwc1RVRkJRU3hGUVVGRkxFOUJRVlVzUjBGQlFTeFJRVUZCTEVOQlFVRTdRVUZGYkVJc1JVRkJRU3hKUVVGSkxGRkJRVk1zUTBGQlFTeExRVUZCTEVOQlFVMHNTVUZCVXl4TFFVRkJMRmxCUVVFc1EwRkJZU3hoUVVGaExGTkJRVmNzUlVGQlFUdEJRVU12UkN4SlFVRlBMRTlCUVVFc1NVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVVZCTEVWQlFVMHNUVUZCUVN4VFFVRkJMRWRCUVZrc1QwRkJUeXhMUVVGTkxFTkJRVUVzUjBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTXZRaXhGUVVGTkxFMUJRVUVzVjBGQlFTeEhRVUZqTEV0QlFVMHNRMEZCUVN4TFFVRkJMRWxCUVZNc1MwRkJUU3hEUVVGQkxFbEJRVUVzUTBGQlFUdEJRVVY2UXl4RlFVRkJMSFZDUVVOSExFdEJRVUVzUTBGQlFTeGhRVUZCTEVOQlFVRXNZVUZCUVN4RlFVRkJPMEZCUVVFc1NVRkRReXhQUVVGVExFVkJRVUVzVTBGQlFUdEJRVUZCTEVsQlExUXNWMEZCVnl4TFFVRk5MRU5CUVVFc1QwRkJRVHRCUVVGQkxFbEJRMnBDTEZWQlFWVXNUVUZCUnp0QlFTOUZia0lzVFVGQlFVRXNTVUZCUVVFc1IwRkJRVUVzUTBGQlFVRTdRVUVyUlhOQ0xFMUJRVUVzVDBGQlFTeERRVUZCUVN4SFFVRkJMRWRCUVVFc1VVRkJRU3hEUVVGVExGRkJRVlFzUzBGQlFTeEpRVUZCTEVkQlFVRXNTMEZCUVN4RFFVRkJMRWRCUVVGQkxFZEJRVUVzUTBGQlFTeEpRVUZCTEVOQlFVRXNVVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVGQk8wRkJRVUVzU1VGRGFFSXNTMEZCVHl4RlFVRkJMRmRCUVVFN1FVRkJRU3hKUVVOUUxFOUJRVThzUzBGQlRTeERRVUZCTEV0QlFVRTdRVUZCUVN4SlFVTmlMRTFCUVVFN1FVRkJRU3hKUVVOQkxGZEJRVUVzUlVGQlFTeERRVUZoTEVWQlFVMHNSMEZCUVN4TFFVRkJMRU5CUVVFc1YwRkJRU3hMUVVGT0xFbEJRWEZDTEVkQlFVRXNSVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxFZEJRM0JETEVOQlFVRXNRMEZCUVR0QlFVVktMRU5CUVVFN1FVRkZRU3hOUVVGTkxHTkJRV2xDTEVkQlFVRXNSMEZCUVN4RFFVRkpMRVZCUVVVc1QwRkJRU3hGUVVGVExGRkJRVkVzUTBGQlFTeERRVUZCTzBGQlF6bERMRTFCUVUwc2IwSkJRVzlDTEVkQlFVa3NRMEZCUVN4RlFVRkZMRk5CUVZNc1RVRkJVU3hGUVVGQkxHRkJRVUVzUlVGQlpTeFZRVUZWTEVOQlFVRTdPenM3SW4wPVxuIl0sIm5hbWVzIjpbIl9hIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQWdCTyxNQUFNLCtCQUErQixlQUE2QyxDQUFBO0FBRXpGLENBQUE7QUFGYSxzQkFBQSxDQUNHLFNBQVksR0FBQSw4QkFBQSxDQUFBO0FBRzVCLFNBQVMsOEJBQUEsQ0FBK0IsRUFBRSxLQUFBLEVBQXNELEVBQUE7QUFDOUYsRUFBQSxNQUFNLFNBQVksR0FBQSxVQUFBLENBQVcsWUFBYSxDQUFBLEtBQUssRUFBRyxRQUFTLEVBQUEsQ0FBQTtBQUUzRCxFQUFBLHVCQUFBLEtBQUEsQ0FBQSxhQUFBLENBQUEsS0FBQSxDQUFBLFFBQUEsRUFBQSxJQUVLLEVBQUEsU0FBQSxDQUFVLFNBQVUsQ0FBQSxHQUFBLENBQUksQ0FBQyxRQUFBLHFCQUN2QixLQUFBLENBQUEsYUFBQSxDQUFBLDBCQUFBLEVBQUE7QUFBMkIsSUFBQSxHQUFBLEVBQUssU0FBUyxLQUFN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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ALL_VARIABLE_VALUE, ALL_VARIABLE_TEXT } from '../constants.js';
|
|
2
|
+
import { getFuzzySearcher } from '../utils.js';
|
|
3
|
+
|
|
4
|
+
function getOptionSearcher(options, includeAll = false) {
|
|
5
|
+
let allOptions = options;
|
|
6
|
+
if (includeAll) {
|
|
7
|
+
allOptions = [{ value: ALL_VARIABLE_VALUE, label: ALL_VARIABLE_TEXT }, ...allOptions];
|
|
8
|
+
}
|
|
9
|
+
const haystack = allOptions.map((o) => o.label);
|
|
10
|
+
const fuzzySearch = getFuzzySearcher(haystack);
|
|
11
|
+
return (search) => fuzzySearch(search).map((i) => allOptions[i]);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { getOptionSearcher };
|
|
15
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0T3B0aW9uU2VhcmNoZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9jb21wb25lbnRzL2dldE9wdGlvblNlYXJjaGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFMTF9WQVJJQUJMRV9WQUxVRSwgQUxMX1ZBUklBQkxFX1RFWFQgfSBmcm9tICcuLi9jb25zdGFudHMuanMnO1xuaW1wb3J0IHsgZ2V0RnV6enlTZWFyY2hlciB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuZnVuY3Rpb24gZ2V0T3B0aW9uU2VhcmNoZXIob3B0aW9ucywgaW5jbHVkZUFsbCA9IGZhbHNlKSB7XG4gIGxldCBhbGxPcHRpb25zID0gb3B0aW9ucztcbiAgaWYgKGluY2x1ZGVBbGwpIHtcbiAgICBhbGxPcHRpb25zID0gW3sgdmFsdWU6IEFMTF9WQVJJQUJMRV9WQUxVRSwgbGFiZWw6IEFMTF9WQVJJQUJMRV9URVhUIH0sIC4uLmFsbE9wdGlvbnNdO1xuICB9XG4gIGNvbnN0IGhheXN0YWNrID0gYWxsT3B0aW9ucy5tYXAoKG8pID0+IG8ubGFiZWwpO1xuICBjb25zdCBmdXp6eVNlYXJjaCA9IGdldEZ1enp5U2VhcmNoZXIoaGF5c3RhY2spO1xuICByZXR1cm4gKHNlYXJjaCkgPT4gZnV6enlTZWFyY2goc2VhcmNoKS5tYXAoKGkpID0+IGFsbE9wdGlvbnNbaV0pO1xufVxuXG5leHBvcnQgeyBnZXRPcHRpb25TZWFyY2hlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwVDNCMGFXOXVVMlZoY21Ob1pYSXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdlkyOXRjRzl1Wlc1MGN5OW5aWFJQY0hScGIyNVRaV0Z5WTJobGNpNTBjeUpkTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZXlCV1lYSnBZV0pzWlZaaGJIVmxUM0IwYVc5dUlIMGdabkp2YlNBbkxpNHZkSGx3WlhNbk8xeHVhVzF3YjNKMElIc2dRVXhNWDFaQlVrbEJRa3hGWDFSRldGUXNJRUZNVEY5V1FWSkpRVUpNUlY5V1FVeFZSU0I5SUdaeWIyMGdKeTR1TDJOdmJuTjBZVzUwY3ljN1hHNXBiWEJ2Y25RZ2V5Qm5aWFJHZFhwNmVWTmxZWEpqYUdWeUlIMGdabkp2YlNBbkxpNHZkWFJwYkhNbk8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdaMlYwVDNCMGFXOXVVMlZoY21Ob1pYSW9iM0IwYVc5dWN6b2dWbUZ5YVdGaWJHVldZV3gxWlU5d2RHbHZibHRkTENCcGJtTnNkV1JsUVd4c0lEMGdabUZzYzJVcElIdGNiaUFnYkdWMElHRnNiRTl3ZEdsdmJuTWdQU0J2Y0hScGIyNXpPMXh1WEc0Z0lHbG1JQ2hwYm1Oc2RXUmxRV3hzS1NCN1hHNGdJQ0FnWVd4c1QzQjBhVzl1Y3lBOUlGdDdJSFpoYkhWbE9pQkJURXhmVmtGU1NVRkNURVZmVmtGTVZVVXNJR3hoWW1Wc09pQkJURXhmVmtGU1NVRkNURVZmVkVWWVZDQjlMQ0F1TGk1aGJHeFBjSFJwYjI1elhUdGNiaUFnZlZ4dVhHNGdJR052Ym5OMElHaGhlWE4wWVdOcklEMGdZV3hzVDNCMGFXOXVjeTV0WVhBb0tHOHBJRDArSUc4dWJHRmlaV3dwTzF4dUlDQmpiMjV6ZENCbWRYcDZlVk5sWVhKamFDQTlJR2RsZEVaMWVucDVVMlZoY21Ob1pYSW9hR0Y1YzNSaFkyc3BPMXh1WEc0Z0lISmxkSFZ5YmlBb2MyVmhjbU5vT2lCemRISnBibWNwSUQwK0lHWjFlbnA1VTJWaGNtTm9LSE5sWVhKamFDa3ViV0Z3S0NocEtTQTlQaUJoYkd4UGNIUnBiMjV6VzJsZEtUdGNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN1FVRkpaMElzVTBGQlFTeHBRa0ZCUVN4RFFVRnJRaXhQUVVGblF5eEZRVUZCTEZWQlFVRXNSMEZCWVN4TFFVRlBMRVZCUVVFN1FVRkRjRVlzUlVGQlFTeEpRVUZKTEZWQlFXRXNSMEZCUVN4UFFVRkJMRU5CUVVFN1FVRkZha0lzUlVGQlFTeEpRVUZKTEZWQlFWa3NSVUZCUVR0QlFVTmtMRWxCUVdFc1ZVRkJRU3hIUVVGQkxFTkJRVU1zUlVGQlJTeExRVUZQTEVWQlFVRXNhMEpCUVVFc1JVRkJiMElzVDBGQlR5eHBRa0ZCYTBJc1JVRkJRU3hGUVVGSExFZEJRVWNzVlVGQlZTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTjBSanRCUVVWQkxFVkJRVUVzVFVGQlRTeFhRVUZYTEZWQlFWY3NRMEZCUVN4SFFVRkJMRU5CUVVrc1EwRkJReXhEUVVGQkxFdEJRVTBzUlVGQlJTeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTTVReXhGUVVGTkxFMUJRVUVzVjBGQlFTeEhRVUZqTEdsQ1FVRnBRaXhSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVVUzUXl4RlFVRlBMRTlCUVVFc1EwRkJReXhYUVVGdFFpeFhRVUZaTEVOQlFVRXNUVUZCVFN4RlFVRkZMRWRCUVVrc1EwRkJRU3hEUVVGRExFTkJRVTBzUzBGQlFTeFZRVUZCTEVOQlFWY3NRMEZCUlN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVONlJUczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlnQixTQUFBLGlCQUFBLENBQWtCLE9BQWdDLEVBQUEsVUFBQSxHQUFhLEtBQU8sRUFBQTtBQUNwRixFQUFBLElBQUksVUFBYSxHQUFBLE9BQUEsQ0FBQTtBQUVqQixFQUFBLElBQUksVUFBWSxFQUFBO0FBQ0QsSUFBQSxVQUFBLEdBQUEsQ0FBQyxFQUFFLEtBQU8sRUFBQSxrQkFBQSxFQUFvQixPQUFPLGlCQUFrQixFQUFBLEVBQUcsR0FBRyxVQUFVLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHdEYsRUFBQSxNQUFNLFdBQVcsVUFBVyxDQUFBLEdBQUEsQ0FBSSxDQUFDLENBQUEsS0FBTSxFQUFFLEtBQUssQ0FBQSxDQUFBO0FBQ3hDLEVBQUEsTUFBQSxXQUFBLEdBQWMsaUJBQWlCLFFBQVEsQ0FBQSxDQUFBO0FBRXRDLEVBQUEsT0FBQSxDQUFDLFdBQW1CLFdBQVksQ0FBQSxNQUFNLEVBQUUsR0FBSSxDQUFBLENBQUMsQ0FBTSxLQUFBLFVBQUEsQ0FBVyxDQUFFLENBQUEsQ0FBQSxDQUFBO0FBQ3pFOzs7OyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const ALL_VARIABLE_TEXT = "All";
|
|
2
|
+
const ALL_VARIABLE_VALUE = "$__all";
|
|
3
|
+
const AUTO_VARIABLE_TEXT = "Auto";
|
|
4
|
+
const AUTO_VARIABLE_VALUE = "$__auto";
|
|
5
|
+
const VARIABLE_REGEX = /\$(\w+)|\[\[(\w+?)(?::(\w+))?\]\]|\${(\w+)(?:\.([^:^\}]+))?(?::([^\}]+))?}/g;
|
|
6
|
+
const SEARCH_FILTER_VARIABLE = "__searchFilter";
|
|
7
|
+
|
|
8
|
+
export { ALL_VARIABLE_TEXT, ALL_VARIABLE_VALUE, AUTO_VARIABLE_TEXT, AUTO_VARIABLE_VALUE, SEARCH_FILTER_VARIABLE, VARIABLE_REGEX };
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi92YXJpYWJsZXMvY29uc3RhbnRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFMTF9WQVJJQUJMRV9URVhUID0gXCJBbGxcIjtcbmNvbnN0IEFMTF9WQVJJQUJMRV9WQUxVRSA9IFwiJF9fYWxsXCI7XG5jb25zdCBBVVRPX1ZBUklBQkxFX1RFWFQgPSBcIkF1dG9cIjtcbmNvbnN0IEFVVE9fVkFSSUFCTEVfVkFMVUUgPSBcIiRfX2F1dG9cIjtcbmNvbnN0IFZBUklBQkxFX1JFR0VYID0gL1xcJChcXHcrKXxcXFtcXFsoXFx3Kz8pKD86OihcXHcrKSk/XFxdXFxdfFxcJHsoXFx3KykoPzpcXC4oW146XlxcfV0rKSk/KD86OihbXlxcfV0rKSk/fS9nO1xuY29uc3QgU0VBUkNIX0ZJTFRFUl9WQVJJQUJMRSA9IFwiX19zZWFyY2hGaWx0ZXJcIjtcblxuZXhwb3J0IHsgQUxMX1ZBUklBQkxFX1RFWFQsIEFMTF9WQVJJQUJMRV9WQUxVRSwgQVVUT19WQVJJQUJMRV9URVhULCBBVVRPX1ZBUklBQkxFX1ZBTFVFLCBTRUFSQ0hfRklMVEVSX1ZBUklBQkxFLCBWQVJJQUJMRV9SRUdFWCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1YzNSaGJuUnpMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOXpjbU12ZG1GeWFXRmliR1Z6TDJOdmJuTjBZVzUwY3k1MGN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpsZUhCdmNuUWdZMjl1YzNRZ1FVeE1YMVpCVWtsQlFreEZYMVJGV0ZRZ1BTQW5RV3hzSnp0Y2JtVjRjRzl5ZENCamIyNXpkQ0JCVEV4ZlZrRlNTVUZDVEVWZlZrRk1WVVVnUFNBbkpGOWZZV3hzSnp0Y2JtVjRjRzl5ZENCamIyNXpkQ0JPVDA1RlgxWkJVa2xCUWt4RlgxUkZXRlFnUFNBblRtOXVaU2M3WEc1bGVIQnZjblFnWTI5dWMzUWdUazlPUlY5V1FWSkpRVUpNUlY5V1FVeFZSU0E5SUNjbk8xeHVaWGh3YjNKMElHTnZibk4wSUVGVlZFOWZWa0ZTU1VGQ1RFVmZWRVZZVkNBOUlDZEJkWFJ2Snp0Y2JtVjRjRzl5ZENCamIyNXpkQ0JCVlZSUFgxWkJVa2xCUWt4RlgxWkJURlZGSUQwZ0p5UmZYMkYxZEc4bk8xeHVYRzR2THlCSGNtRm1ZVzVoSUdOdmNtVWdjMjkxY21ObE9pQm9kSFJ3Y3pvdkwyZHBkR2gxWWk1amIyMHZaM0poWm1GdVlTOW5jbUZtWVc1aEwySnNiMkl2YldGcGJpOXdkV0pzYVdNdllYQndMMlpsWVhSMWNtVnpMM1poY21saFlteGxjeTkxZEdsc2N5NTBjeU5NTWpOY2JpOHFYRzRnS2lCVWFHbHpJSEpsWjJWNElHMWhkR05vWlhNZ015QjBlWEJsY3lCdlppQjJZWEpwWVdKc1pTQnlaV1psY21WdVkyVWdkMmwwYUNCaGJpQnZjSFJwYjI1aGJDQm1iM0p0WVhRZ2MzQmxZMmxtYVdWeVhHNGdLaUJjWENRb1hGeDNLeWtnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ1IyWVhJeFhHNGdLaUJjWEZ0Y1hGc29YRngzS3o4cEtEODZPaWhjWEhjcktTay9YRnhkWEZ4ZElDQWdJQ0FnSUNCYlczWmhjakpkWFNCdmNpQmJXM1poY2pJNlptMTBNbDFkWEc0Z0tpQmNYQ1I3S0Z4Y2R5c3BLRDg2T2loY1hIY3JLU2svZlNBZ0lDQWdJQ0FnSUNBZ0lDQWtlM1poY2pOOUlHOXlJQ1I3ZG1GeU16cG1iWFF6ZlZ4dUlDb3ZYRzVsZUhCdmNuUWdZMjl1YzNRZ1ZrRlNTVUZDVEVWZlVrVkhSVmdnUFNBdlhGd2tLRnhjZHlzcGZGeGNXMXhjV3loY1hIY3JQeWtvUHpvNktGeGNkeXNwS1Q5Y1hGMWNYRjE4WEZ3a2V5aGNYSGNyS1NnL09seGNMaWhiWGpwZVhGeDlYU3NwS1Q4b1B6bzZLRnRlWEZ4OVhTc3BLVDk5TDJjN1hHNWxlSEJ2Y25RZ1kyOXVjM1FnVTBWQlVrTklYMFpKVEZSRlVsOVdRVkpKUVVKTVJTQTlJQ2RmWDNObFlYSmphRVpwYkhSbGNpYzdYRzRpWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVU4c1RVRkJUU3hwUWtGQmIwSXNSMEZCUVN4TlFVRkJPMEZCUXpGQ0xFMUJRVTBzYTBKQlFYRkNMRWRCUVVFc1UwRkJRVHRCUVVjelFpeE5RVUZOTEd0Q1FVRnhRaXhIUVVGQkxFOUJRVUU3UVVGRE0wSXNUVUZCVFN4dFFrRkJjMElzUjBGQlFTeFZRVUZCTzBGQlV6VkNMRTFCUVUwc1kwRkJhVUlzUjBGQlFTdzRSVUZCUVR0QlFVTjJRaXhOUVVGTkxITkNRVUY1UWl4SFFVRkJPenM3T3lKOVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFPLE1BQU0saUJBQW9CLEdBQUEsTUFBQTtBQUMxQixNQUFNLGtCQUFxQixHQUFBLFNBQUE7QUFHM0IsTUFBTSxrQkFBcUIsR0FBQSxPQUFBO0FBQzNCLE1BQU0sbUJBQXNCLEdBQUEsVUFBQTtBQVM1QixNQUFNLGNBQWlCLEdBQUEsOEVBQUE7QUFDdkIsTUFBTSxzQkFBeUIsR0FBQTs7OzsifQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { isFiltersRequestEnricher } from '../core/types.js';
|
|
2
|
+
|
|
3
|
+
function getEnrichedFiltersRequest(sourceRunner) {
|
|
4
|
+
const root = sourceRunner.getRoot();
|
|
5
|
+
if (isFiltersRequestEnricher(root)) {
|
|
6
|
+
return root.enrichFiltersRequest(sourceRunner);
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { getEnrichedFiltersRequest };
|
|
12
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdmFyaWFibGVzL2dldEVucmljaGVkRmlsdGVyc1JlcXVlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNGaWx0ZXJzUmVxdWVzdEVucmljaGVyIH0gZnJvbSAnLi4vY29yZS90eXBlcy5qcyc7XG5cbmZ1bmN0aW9uIGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3Qoc291cmNlUnVubmVyKSB7XG4gIGNvbnN0IHJvb3QgPSBzb3VyY2VSdW5uZXIuZ2V0Um9vdCgpO1xuICBpZiAoaXNGaWx0ZXJzUmVxdWVzdEVucmljaGVyKHJvb3QpKSB7XG4gICAgcmV0dXJuIHJvb3QuZW5yaWNoRmlsdGVyc1JlcXVlc3Qoc291cmNlUnVubmVyKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IHsgZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwUlc1eWFXTm9aV1JHYVd4MFpYSnpVbVZ4ZFdWemRDNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMM1poY21saFlteGxjeTluWlhSRmJuSnBZMmhsWkVacGJIUmxjbk5TWlhGMVpYTjBMblJ6SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN0lFUmhkR0ZUYjNWeVkyVkhaWFJVWVdkTFpYbHpUM0IwYVc5dWN5d2dSR0YwWVZOdmRYSmpaVWRsZEZSaFoxWmhiSFZsYzA5d2RHbHZibk1nZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzlrWVhSaEp6dGNibWx0Y0c5eWRDQjdJR2x6Um1sc2RHVnljMUpsY1hWbGMzUkZibkpwWTJobGNpd2dVMk5sYm1WUFltcGxZM1FnZlNCbWNtOXRJQ2N1TGk5amIzSmxMM1I1Y0dWekp6dGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsZEVWdWNtbGphR1ZrUm1sc2RHVnljMUpsY1hWbGMzUW9YRzRnSUhOdmRYSmpaVkoxYm01bGNqb2dVMk5sYm1WUFltcGxZM1JjYmlrNklGQmhjblJwWVd3OFJHRjBZVk52ZFhKalpVZGxkRlJoWjB0bGVYTlBjSFJwYjI1eklId2dSR0YwWVZOdmRYSmpaVWRsZEZSaFoxWmhiSFZsYzA5d2RHbHZibk0rSUh3Z2JuVnNiQ0I3WEc0Z0lHTnZibk4wSUhKdmIzUWdQU0J6YjNWeVkyVlNkVzV1WlhJdVoyVjBVbTl2ZENncE8xeHVYRzRnSUdsbUlDaHBjMFpwYkhSbGNuTlNaWEYxWlhOMFJXNXlhV05vWlhJb2NtOXZkQ2twSUh0Y2JpQWdJQ0J5WlhSMWNtNGdjbTl2ZEM1bGJuSnBZMmhHYVd4MFpYSnpVbVZ4ZFdWemRDaHpiM1Z5WTJWU2RXNXVaWElwTzF4dUlDQjlYRzVjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkhUeXhUUVVGVExEQkNRVU5rTEZsQlF6WkZMRVZCUVVFN1FVRkROMFVzUlVGQlRTeE5RVUZCTEVsQlFVRXNSMEZCVHl4aFFVRmhMRTlCUVZFc1JVRkJRU3hEUVVGQk8wRkJSV3hETEVWQlFVa3NTVUZCUVN4M1FrRkJRU3hEUVVGNVFpeEpRVUZKTEVOQlFVY3NSVUZCUVR0QlFVTnNReXhKUVVGUExFOUJRVUVzU1VGQlFTeERRVUZMTEhGQ1FVRnhRaXhaUVVGWkxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlF5OURPMEZCUlVFc1JVRkJUeXhQUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU5VT3pzN095SjlcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdPLFNBQVMsMEJBQ2QsWUFDNkUsRUFBQTtBQUN2RSxFQUFBLE1BQUEsSUFBQSxHQUFPLGFBQWEsT0FBUSxFQUFBLENBQUE7QUFFOUIsRUFBQSxJQUFBLHdCQUFBLENBQXlCLElBQUksQ0FBRyxFQUFBO0FBQzNCLElBQUEsT0FBQSxJQUFBLENBQUsscUJBQXFCLFlBQVksQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUd4QyxFQUFBLE9BQUEsSUFBQSxDQUFBO0FBQ1Q7Ozs7In0=
|