@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,57 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
6
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
9
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
10
|
+
var __spreadValues = (a, b) => {
|
|
11
|
+
for (var prop in b || (b = {}))
|
|
12
|
+
if (__hasOwnProp.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
if (__getOwnPropSymbols)
|
|
15
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
16
|
+
if (__propIsEnum.call(b, prop))
|
|
17
|
+
__defNormalProp(a, prop, b[prop]);
|
|
18
|
+
}
|
|
19
|
+
return a;
|
|
20
|
+
};
|
|
21
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
22
|
+
var __objRest = (source, exclude) => {
|
|
23
|
+
var target = {};
|
|
24
|
+
for (var prop in source)
|
|
25
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
26
|
+
target[prop] = source[prop];
|
|
27
|
+
if (source != null && __getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
29
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
30
|
+
target[prop] = source[prop];
|
|
31
|
+
}
|
|
32
|
+
return target;
|
|
33
|
+
};
|
|
34
|
+
function SceneComponentWrapperWithoutMemo(_a) {
|
|
35
|
+
var _b = _a, { model } = _b, otherProps = __objRest(_b, ["model"]);
|
|
36
|
+
var _a2;
|
|
37
|
+
const Component = (_a2 = model.constructor["Component"]) != null ? _a2 : EmptyRenderer;
|
|
38
|
+
const [_, setValue] = useState(0);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
const unsub = model.activate();
|
|
41
|
+
setValue((prevState) => prevState + 1);
|
|
42
|
+
return unsub;
|
|
43
|
+
}, [model]);
|
|
44
|
+
if (!model.isActive && !model.renderBeforeActivation) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return /* @__PURE__ */ React.createElement(Component, __spreadProps(__spreadValues({}, otherProps), {
|
|
48
|
+
model
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
const SceneComponentWrapper = React.memo(SceneComponentWrapperWithoutMemo);
|
|
52
|
+
function EmptyRenderer(_) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { SceneComponentWrapper };
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVDb21wb25lbnRXcmFwcGVyLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL1NjZW5lQ29tcG9uZW50V3JhcHBlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG52YXIgX19vYmpSZXN0ID0gKHNvdXJjZSwgZXhjbHVkZSkgPT4ge1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIGZvciAodmFyIHByb3AgaW4gc291cmNlKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChzb3VyY2UsIHByb3ApICYmIGV4Y2x1ZGUuaW5kZXhPZihwcm9wKSA8IDApXG4gICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhzb3VyY2UpKSB7XG4gICAgICBpZiAoZXhjbHVkZS5pbmRleE9mKHByb3ApIDwgMCAmJiBfX3Byb3BJc0VudW0uY2FsbChzb3VyY2UsIHByb3ApKVxuICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07XG4gICAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcbmZ1bmN0aW9uIFNjZW5lQ29tcG9uZW50V3JhcHBlcldpdGhvdXRNZW1vKF9hKSB7XG4gIHZhciBfYiA9IF9hLCB7IG1vZGVsIH0gPSBfYiwgb3RoZXJQcm9wcyA9IF9fb2JqUmVzdChfYiwgW1wibW9kZWxcIl0pO1xuICB2YXIgX2EyO1xuICBjb25zdCBDb21wb25lbnQgPSAoX2EyID0gbW9kZWwuY29uc3RydWN0b3JbXCJDb21wb25lbnRcIl0pICE9IG51bGwgPyBfYTIgOiBFbXB0eVJlbmRlcmVyO1xuICBjb25zdCBbXywgc2V0VmFsdWVdID0gdXNlU3RhdGUoMCk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdW5zdWIgPSBtb2RlbC5hY3RpdmF0ZSgpO1xuICAgIHNldFZhbHVlKChwcmV2U3RhdGUpID0+IHByZXZTdGF0ZSArIDEpO1xuICAgIHJldHVybiB1bnN1YjtcbiAgfSwgW21vZGVsXSk7XG4gIGlmICghbW9kZWwuaXNBY3RpdmUgJiYgIW1vZGVsLnJlbmRlckJlZm9yZUFjdGl2YXRpb24pIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICByZXR1cm4gLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBvdGhlclByb3BzKSwge1xuICAgIG1vZGVsXG4gIH0pKTtcbn1cbmNvbnN0IFNjZW5lQ29tcG9uZW50V3JhcHBlciA9IFJlYWN0Lm1lbW8oU2NlbmVDb21wb25lbnRXcmFwcGVyV2l0aG91dE1lbW8pO1xuZnVuY3Rpb24gRW1wdHlSZW5kZXJlcihfKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgeyBTY2VuZUNvbXBvbmVudFdyYXBwZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkRiMjF3YjI1bGJuUlhjbUZ3Y0dWeUxtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl5WlM5VFkyVnVaVU52YlhCdmJtVnVkRmR5WVhCd1pYSXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCU1pXRmpkQ3dnZXlCMWMyVkZabVpsWTNRc0lIVnpaVk4wWVhSbElIMGdabkp2YlNBbmNtVmhZM1FuTzF4dVhHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlVOdmJYQnZibVZ1ZEZCeWIzQnpMQ0JUWTJWdVpVOWlhbVZqZENCOUlHWnliMjBnSnk0dmRIbHdaWE1uTzF4dVhHNW1kVzVqZEdsdmJpQlRZMlZ1WlVOdmJYQnZibVZ1ZEZkeVlYQndaWEpYYVhSb2IzVjBUV1Z0Ynp4VUlHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUStLSHNnYlc5a1pXd3NJQzR1TG05MGFHVnlVSEp2Y0hNZ2ZUb2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjenhVUGlrZ2UxeHVJQ0JqYjI1emRDQkRiMjF3YjI1bGJuUWdQU0FvYlc5a1pXd2dZWE1nWVc1NUtTNWpiMjV6ZEhKMVkzUnZjbHNuUTI5dGNHOXVaVzUwSjEwZ1B6OGdSVzF3ZEhsU1pXNWtaWEpsY2p0Y2JpQWdZMjl1YzNRZ1cxOHNJSE5sZEZaaGJIVmxYU0E5SUhWelpWTjBZWFJsS0RBcE8xeHVYRzRnSUhWelpVVm1abVZqZENnb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ2RXNXpkV0lnUFNCdGIyUmxiQzVoWTNScGRtRjBaU2dwTzF4dUlDQWdJSE5sZEZaaGJIVmxLQ2h3Y21WMlUzUmhkR1VwSUQwK0lIQnlaWFpUZEdGMFpTQXJJREVwTzF4dUlDQWdJSEpsZEhWeWJpQjFibk4xWWp0Y2JpQWdmU3dnVzIxdlpHVnNYU2s3WEc1Y2JpQWdMeThnUW5rZ2JtOTBJSEpsYm1SbGNtbHVaeUIwYUdVZ1kyOXRjRzl1Wlc1MElIVnVkR2xzSUhSb1pTQnRiMlJsYkNCcGN5QmhZM1JwWVhaMFpXUWdkMlVnYldGclpTQnpkWEpsSUhSb1lYUWdjR0Z5Wlc1MElHMXZaR1ZzY3lCblpYUWdZV04wYVhaaGRHVmtJR0psWm05eVpTQmphR2xzWkNCdGIyUmxiSE5jYmlBZ0x5OGdUM1JvWlhKM2FYTmxJR05vYVd4a0lHMXZaR1ZzY3lCM2IzVnNaQ0JpWlNCaFkzUnBkbUYwWldRZ1ltVm1iM0psSUhCaGNtVnVkSE1nWVhNZ2RHaGhkQ0JwY3lCMGFHVWdiM0prWlhJZ2IyWWdVbVZoWTNRZ2JXOTFiblFnWldabVpXTjBjeTVjYmlBZ0x5OGdWR2hwY3lCaGJITnZJR1Z1WVdKc1pYTWdjM1JoZEdsaklHeHZaMmxqSUhSdklHaGhjSEJsYmlCcGJuTnBaR1VnWVdOMGFYWmhkR1VnZEdoaGRDQmpZVzRnWTJoaGJtZGxJSE4wWVhSbElHSmxabTl5WlNCMGFHVWdabWx5YzNRZ2NtVnVaR1Z5TGx4dUlDQnBaaUFvSVcxdlpHVnNMbWx6UVdOMGFYWmxJQ1ltSUNGdGIyUmxiQzV5Wlc1a1pYSkNaV1p2Y21WQlkzUnBkbUYwYVc5dUtTQjdYRzRnSUNBZ2NtVjBkWEp1SUc1MWJHdzdYRzRnSUgxY2JseHVJQ0J5WlhSMWNtNGdQRU52YlhCdmJtVnVkQ0I3TGk0dWIzUm9aWEpRY205d2MzMGdiVzlrWld3OWUyMXZaR1ZzZlNBdlBqdGNibjFjYmx4dVpYaHdiM0owSUdOdmJuTjBJRk5qWlc1bFEyOXRjRzl1Wlc1MFYzSmhjSEJsY2lBOUlGSmxZV04wTG0xbGJXOG9VMk5sYm1WRGIyMXdiMjVsYm5SWGNtRndjR1Z5VjJsMGFHOTFkRTFsYlc4cE8xeHVYRzVtZFc1amRHbHZiaUJGYlhCMGVWSmxibVJsY21WeVBGUStLRjg2SUZOalpXNWxRMjl0Y0c5dVpXNTBVSEp2Y0hNOFZENHBPaUJTWldGamRDNVNaV0ZqZEVWc1pXMWxiblFnZkNCdWRXeHNJSHRjYmlBZ2NtVjBkWEp1SUc1MWJHdzdYRzU5WEc0aVhTd2libUZ0WlhNaU9sc2lYMkVpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3p0QlFVbEJMRk5CUVZNc2FVTkJRWGRFTEVWQlFXdEVMRVZCUVVFN1FVRkJiRVFzUlVGQlFTeEpRVUZCTEVWQlFVRXNSMEZCUVN4RlFVRkJMRVZCUVVVc1JVRktia1VzUzBGQlFTeEZRVUZCTEVkQlNXbEZMRVZCUVZrc1JVRkJRU3hWUVVGQkxFZEJRVUVzVTBGQlFTeERRVUZhTEVsQlFWa3NRMEZCVml4UFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJTbTVGTEVWQlFVRkJMRWxCUVVGQkxFZEJRVUZCTEVOQlFVRkJPMEZCUzBVc1JVRkJRU3hOUVVGTkxHRkJRV0ZCTEVkQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVdNc1YwRkJXU3hEUVVGQkxGZEJRVUVzUTBGQlFTeExRVUV4UWl4UFFVRkJRU3hIUVVFd1F5eEhRVUZCTEdGQlFVRXNRMEZCUVR0QlFVTTNSQ3hGUVVGQkxFMUJRVTBzUTBGQlF5eERRVUZCTEVWQlFVY3NVVUZCVVN4RFFVRkJMRWRCUVVrc1UwRkJVeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVVZvUXl4RlFVRkJMRk5CUVVFc1EwRkJWU3hOUVVGTk8wRkJRMlFzU1VGQlRTeE5RVUZCTEV0QlFVRXNSMEZCVVN4TlFVRk5MRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJRemRDTEVsQlFWTXNVVUZCUVN4RFFVRkJMRU5CUVVNc1UwRkJZeXhMUVVGQkxGTkJRVUVzUjBGQldTeERRVUZETEVOQlFVRXNRMEZCUVR0QlFVTnlReXhKUVVGUExFOUJRVUVzUzBGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkN4RlFVRkhMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVXRXTEVWQlFVRXNTVUZCU1N4RFFVRkRMRXRCUVVFc1EwRkJUU3hSUVVGWkxFbEJRVUVzUTBGQlF5eE5RVUZOTEhOQ1FVRjNRaXhGUVVGQk8wRkJRM0JFTEVsQlFVOHNUMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJSVUVzUlVGQlR5eDFRa0ZCUVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGRExEUkRRVUZqTEZWQlFXUXNRMEZCUVN4RlFVRkJPMEZCUVVFc1NVRkJNRUlzUzBGQlFUdEJRVUZCTEVkQlFXTXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRiRVFzUTBGQlFUdEJRVVZoTEUxQlFVRXNjVUpCUVVFc1IwRkJkMElzUzBGQlRTeERRVUZCTEVsQlFVRXNRMEZCU3l4blEwRkJaME1zUlVGQlFUdEJRVVZvUml4VFFVRlRMR05CUVdsQ0xFTkJRWE5FTEVWQlFVRTdRVUZET1VVc1JVRkJUeXhQUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU5VT3pzN095SjlcbiJdLCJuYW1lcyI6WyJfYSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSUEsU0FBUyxpQ0FBd0QsRUFBa0QsRUFBQTtBQUFsRCxFQUFBLElBQUEsRUFBQSxHQUFBLEVBQUUsRUFBQSxFQUpuRSxLQUFBLEVBQUEsR0FJaUUsRUFBWSxFQUFBLFVBQUEsR0FBQSxTQUFaLENBQUEsRUFBQSxFQUFZLENBQVYsT0FBQSxDQUFBLENBQUEsQ0FBQTtBQUpuRUEsRUFBQUEsSUFBQUEsR0FBQUEsQ0FBQUE7QUFLRSxFQUFBLE1BQU0sYUFBYUEsR0FBQSxHQUFBLEtBQUEsQ0FBYyxXQUFZLENBQUEsV0FBQSxDQUFBLEtBQTFCLE9BQUFBLEdBQTBDLEdBQUEsYUFBQSxDQUFBO0FBQzdELEVBQUEsTUFBTSxDQUFDLENBQUEsRUFBRyxRQUFRLENBQUEsR0FBSSxTQUFTLENBQUMsQ0FBQSxDQUFBO0FBRWhDLEVBQUEsU0FBQSxDQUFVLE1BQU07QUFDUixJQUFBLE1BQUEsS0FBQSxHQUFRLE1BQU0sUUFBUyxFQUFBLENBQUE7QUFDcEIsSUFBQSxRQUFBLENBQUEsQ0FBQyxTQUFjLEtBQUEsU0FBQSxHQUFZLENBQUMsQ0FBQSxDQUFBO0FBQzlCLElBQUEsT0FBQSxLQUFBLENBQUE7R0FDTixFQUFBLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQTtBQUtWLEVBQUEsSUFBSSxDQUFDLEtBQUEsQ0FBTSxRQUFZLElBQUEsQ0FBQyxNQUFNLHNCQUF3QixFQUFBO0FBQzdDLElBQUEsT0FBQSxJQUFBLENBQUE7QUFBQSxHQUFBO0FBR0YsRUFBQSx1QkFBQSxLQUFBLENBQUEsY0FBQyxTQUFBLEVBQUEsYUFBQSxDQUFBLGVBQUEsRUFBQSxFQUFjLFVBQWQsQ0FBQSxFQUFBO0FBQTBCLElBQUEsS0FBQTtBQUFBLEdBQWMsQ0FBQSxDQUFBLENBQUE7QUFDbEQsQ0FBQTtBQUVhLE1BQUEscUJBQUEsR0FBd0IsS0FBTSxDQUFBLElBQUEsQ0FBSyxnQ0FBZ0MsRUFBQTtBQUVoRixTQUFTLGNBQWlCLENBQXNELEVBQUE7QUFDdkUsRUFBQSxPQUFBLElBQUEsQ0FBQTtBQUNUOzs7OyJ9
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getDefaultTimeRange } from '@grafana/data';
|
|
2
|
+
import { LoadingState } from '@grafana/schema';
|
|
3
|
+
import { of } from 'rxjs';
|
|
4
|
+
import { SceneObjectBase } from './SceneObjectBase.js';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
class SceneDataNode extends SceneObjectBase {
|
|
23
|
+
constructor(state) {
|
|
24
|
+
super(__spreadValues({
|
|
25
|
+
data: emptyPanelData
|
|
26
|
+
}, state));
|
|
27
|
+
}
|
|
28
|
+
getResultsStream() {
|
|
29
|
+
const result = {
|
|
30
|
+
origin: this,
|
|
31
|
+
data: this.state.data
|
|
32
|
+
};
|
|
33
|
+
return of(result);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const emptyPanelData = {
|
|
37
|
+
state: LoadingState.Done,
|
|
38
|
+
series: [],
|
|
39
|
+
timeRange: getDefaultTimeRange()
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export { SceneDataNode, emptyPanelData };
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVEYXRhTm9kZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vY29yZS9TY2VuZURhdGFOb2RlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldERlZmF1bHRUaW1lUmFuZ2UgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IExvYWRpbmdTdGF0ZSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5pbXBvcnQgeyBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi9TY2VuZU9iamVjdEJhc2UuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG5jbGFzcyBTY2VuZURhdGFOb2RlIGV4dGVuZHMgU2NlbmVPYmplY3RCYXNlIHtcbiAgY29uc3RydWN0b3Ioc3RhdGUpIHtcbiAgICBzdXBlcihfX3NwcmVhZFZhbHVlcyh7XG4gICAgICBkYXRhOiBlbXB0eVBhbmVsRGF0YVxuICAgIH0sIHN0YXRlKSk7XG4gIH1cbiAgZ2V0UmVzdWx0c1N0cmVhbSgpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7XG4gICAgICBvcmlnaW46IHRoaXMsXG4gICAgICBkYXRhOiB0aGlzLnN0YXRlLmRhdGFcbiAgICB9O1xuICAgIHJldHVybiBvZihyZXN1bHQpO1xuICB9XG59XG5jb25zdCBlbXB0eVBhbmVsRGF0YSA9IHtcbiAgc3RhdGU6IExvYWRpbmdTdGF0ZS5Eb25lLFxuICBzZXJpZXM6IFtdLFxuICB0aW1lUmFuZ2U6IGdldERlZmF1bHRUaW1lUmFuZ2UoKVxufTtcblxuZXhwb3J0IHsgU2NlbmVEYXRhTm9kZSwgZW1wdHlQYW5lbERhdGEgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVkVZWFJoVG05a1pTNXFjeUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2TGk0dmMzSmpMMk52Y21VdlUyTmxibVZFWVhSaFRtOWtaUzUwY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5Qm5aWFJFWldaaGRXeDBWR2x0WlZKaGJtZGxMQ0JRWVc1bGJFUmhkR0VnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzlrWVhSaEp6dGNibWx0Y0c5eWRDQjdJRXh2WVdScGJtZFRkR0YwWlNCOUlHWnliMjBnSjBCbmNtRm1ZVzVoTDNOamFHVnRZU2M3WEc1cGJYQnZjblFnZXlCdlppQjlJR1p5YjIwZ0ozSjRhbk1uTzF4dVhHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlU5aWFtVmpkRUpoYzJVZ2ZTQm1jbTl0SUNjdUwxTmpaVzVsVDJKcVpXTjBRbUZ6WlNjN1hHNXBiWEJ2Y25RZ2V5QlRZMlZ1WlVSaGRHRlFjbTkyYVdSbGNpd2dVMk5sYm1WRVlYUmhVSEp2ZG1sa1pYSlNaWE4xYkhRc0lGTmpaVzVsUkdGMFlWTjBZWFJsSUgwZ1puSnZiU0FuTGk5MGVYQmxjeWM3WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1UyTmxibVZFWVhSaFRtOWtaVk4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZFWVhSaFUzUmhkR1VnZTF4dUlDQmtZWFJoT2lCUVlXNWxiRVJoZEdFN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlRZMlZ1WlVSaGRHRk9iMlJsSUdWNGRHVnVaSE1nVTJObGJtVlBZbXBsWTNSQ1lYTmxQRk5qWlc1bFJHRjBZVTV2WkdWVGRHRjBaVDRnYVcxd2JHVnRaVzUwY3lCVFkyVnVaVVJoZEdGUWNtOTJhV1JsY2lCN1hHNGdJSEIxWW14cFl5QmpiMjV6ZEhKMVkzUnZjaWh6ZEdGMFpUODZJRkJoY25ScFlXdzhVMk5sYm1WRVlYUmhUbTlrWlZOMFlYUmxQaWtnZTF4dUlDQWdJSE4xY0dWeUtIdGNiaUFnSUNBZ0lHUmhkR0U2SUdWdGNIUjVVR0Z1Wld4RVlYUmhMRnh1SUNBZ0lDQWdMaTR1YzNSaGRHVXNYRzRnSUNBZ2ZTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwVW1WemRXeDBjMU4wY21WaGJTZ3BJSHRjYmlBZ0lDQmpiMjV6ZENCeVpYTjFiSFE2SUZOalpXNWxSR0YwWVZCeWIzWnBaR1Z5VW1WemRXeDBJRDBnZTF4dUlDQWdJQ0FnYjNKcFoybHVPaUIwYUdsekxGeHVJQ0FnSUNBZ1pHRjBZVG9nZEdocGN5NXpkR0YwWlM1a1lYUmhMRnh1SUNBZ0lIMDdYRzVjYmlBZ0lDQnlaWFIxY200Z2IyWW9jbVZ6ZFd4MEtUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1pXMXdkSGxRWVc1bGJFUmhkR0U2SUZCaGJtVnNSR0YwWVNBOUlIdGNiaUFnYzNSaGRHVTZJRXh2WVdScGJtZFRkR0YwWlM1RWIyNWxMRnh1SUNCelpYSnBaWE02SUZ0ZExGeHVJQ0IwYVcxbFVtRnVaMlU2SUdkbGRFUmxabUYxYkhSVWFXMWxVbUZ1WjJVb0tTeGNibjA3WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3T3pzN08wRkJWMDhzVFVGQlRTeHpRa0ZCYzBJc1pVRkJhVVVzUTBGQlFUdEJRVUZCTEVWQlF6TkdMRmxCUVZrc1MwRkJjVU1zUlVGQlFUdEJRVU4wUkN4SlFVRk5MRXRCUVVFc1EwRkJRU3hqUVVGQkxFTkJRVUU3UVVGQlFTeE5RVU5LTEVsQlFVMHNSVUZCUVN4alFVRkJPMEZCUVVFc1MwRkJRU3hGUVVOSUxFdEJRMG9zUTBGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTklPMEZCUVVFc1JVRkZUeXhuUWtGQmJVSXNSMEZCUVR0QlFVTjRRaXhKUVVGQkxFMUJRVTBzVFVGQmEwTXNSMEZCUVR0QlFVRkJMRTFCUTNSRExFMUJRVkVzUlVGQlFTeEpRVUZCTzBGQlFVRXNUVUZEVWl4SlFVRkJMRVZCUVUwc1MwRkJTeXhMUVVGTkxFTkJRVUVzU1VGQlFUdEJRVUZCTEV0QlEyNUNMRU5CUVVFN1FVRkZRU3hKUVVGQkxFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJ4Q08wRkJRMFlzUTBGQlFUdEJRVVZQTEUxQlFVMHNZMEZCTkVJc1IwRkJRVHRCUVVGQkxFVkJRM1pETEU5QlFVOHNXVUZCWVN4RFFVRkJMRWxCUVVFN1FVRkJRU3hGUVVOd1FpeFJRVUZSTEVWQlFVTTdRVUZCUVN4RlFVTlVMRmRCUVZjc2JVSkJRVzlDTEVWQlFVRTdRVUZEYWtNN096czdJbjA9XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBV08sTUFBTSxzQkFBc0IsZUFBaUUsQ0FBQTtBQUMzRixFQUFBLFdBQUEsQ0FBWSxLQUFxQyxFQUFBO0FBQ2hELElBQUEsS0FBQSxDQUFBLGNBQUEsQ0FBQTtNQUNKLElBQU0sRUFBQSxjQUFBO0FBQUEsS0FBQSxFQUNILEtBQ0osQ0FBQSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR0ksZ0JBQW1CLEdBQUE7QUFDeEIsSUFBQSxNQUFNLE1BQWtDLEdBQUE7TUFDdEMsTUFBUSxFQUFBLElBQUE7QUFDUixNQUFBLElBQUEsRUFBTSxLQUFLLEtBQU0sQ0FBQSxJQUFBO0FBQUEsS0FBQSxDQUFBO0FBR25CLElBQUEsT0FBTyxHQUFHLE1BQU0sQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUVwQixDQUFBO0FBRU8sTUFBTSxjQUE0QixHQUFBO0FBQ3ZDLEVBQUEsS0FBQSxFQUFPLFlBQWEsQ0FBQSxJQUFBO0FBQ3BCLEVBQUEsTUFBQSxFQUFRLEVBQUE7QUFDUixFQUFBLFNBQUEsRUFBVyxtQkFBb0IsRUFBQTtBQUNqQzs7OzsifQ==
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import { Subscription } from 'rxjs';
|
|
3
|
+
import { v4 } from 'uuid';
|
|
4
|
+
import { EventBusSrv } from '@grafana/data';
|
|
5
|
+
import { SceneComponentWrapper } from './SceneComponentWrapper.js';
|
|
6
|
+
import { SceneObjectStateChangedEvent } from './events.js';
|
|
7
|
+
import { cloneSceneObject } from './sceneGraph/utils.js';
|
|
8
|
+
import { SceneObjectRef } from './SceneObjectRef.js';
|
|
9
|
+
|
|
10
|
+
var __defProp = Object.defineProperty;
|
|
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
|
+
class SceneObjectBase {
|
|
27
|
+
constructor(state) {
|
|
28
|
+
this._isActive = false;
|
|
29
|
+
this._activationHandlers = [];
|
|
30
|
+
this._deactivationHandlers = /* @__PURE__ */ new Map();
|
|
31
|
+
this._subs = new Subscription();
|
|
32
|
+
this._refCount = 0;
|
|
33
|
+
this._renderBeforeActivation = false;
|
|
34
|
+
if (!state.key) {
|
|
35
|
+
state.key = v4();
|
|
36
|
+
}
|
|
37
|
+
this._events = new EventBusSrv();
|
|
38
|
+
this._state = Object.freeze(state);
|
|
39
|
+
this._setParent(this._state);
|
|
40
|
+
}
|
|
41
|
+
get state() {
|
|
42
|
+
return this._state;
|
|
43
|
+
}
|
|
44
|
+
get isActive() {
|
|
45
|
+
return this._isActive;
|
|
46
|
+
}
|
|
47
|
+
get renderBeforeActivation() {
|
|
48
|
+
return this._renderBeforeActivation;
|
|
49
|
+
}
|
|
50
|
+
get parent() {
|
|
51
|
+
return this._parent;
|
|
52
|
+
}
|
|
53
|
+
get variableDependency() {
|
|
54
|
+
return this._variableDependency;
|
|
55
|
+
}
|
|
56
|
+
get urlSync() {
|
|
57
|
+
return this._urlSync;
|
|
58
|
+
}
|
|
59
|
+
get Component() {
|
|
60
|
+
return SceneComponentWrapper;
|
|
61
|
+
}
|
|
62
|
+
_setParent(state) {
|
|
63
|
+
forEachChild(state, (child) => {
|
|
64
|
+
if (child._parent && child._parent !== this) {
|
|
65
|
+
console.warn(
|
|
66
|
+
"SceneObject already has a parent set that is different from the new parent. You cannot share the same SceneObject instance in multiple scenes or in multiple different places of the same scene graph. Use SceneObject.clone() to duplicate a SceneObject or store a state key reference and use sceneGraph.findObject to locate it.",
|
|
67
|
+
child,
|
|
68
|
+
this
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
child._parent = this;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
clearParent() {
|
|
75
|
+
this._parent = void 0;
|
|
76
|
+
}
|
|
77
|
+
subscribeToState(handler) {
|
|
78
|
+
return this._events.subscribe(SceneObjectStateChangedEvent, (event) => {
|
|
79
|
+
if (event.payload.changedObject === this) {
|
|
80
|
+
handler(event.payload.newState, event.payload.prevState);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
subscribeToEvent(eventType, handler) {
|
|
85
|
+
return this._events.subscribe(eventType, handler);
|
|
86
|
+
}
|
|
87
|
+
setState(update) {
|
|
88
|
+
const prevState = this._state;
|
|
89
|
+
const newState = __spreadValues(__spreadValues({}, this._state), update);
|
|
90
|
+
this._state = Object.freeze(newState);
|
|
91
|
+
this._setParent(update);
|
|
92
|
+
this._handleActivationOfChangedStateProps(prevState, newState);
|
|
93
|
+
this.publishEvent(
|
|
94
|
+
new SceneObjectStateChangedEvent({
|
|
95
|
+
prevState,
|
|
96
|
+
newState,
|
|
97
|
+
partialUpdate: update,
|
|
98
|
+
changedObject: this
|
|
99
|
+
}),
|
|
100
|
+
true
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
_handleActivationOfChangedStateProps(prevState, newState) {
|
|
104
|
+
if (!this.isActive) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (prevState.$behaviors !== newState.$behaviors) {
|
|
108
|
+
this._handleChangedBehaviors(prevState.$behaviors, newState.$behaviors);
|
|
109
|
+
}
|
|
110
|
+
if (prevState.$data !== newState.$data) {
|
|
111
|
+
this._handleChangedStateActivation(prevState.$data, newState.$data);
|
|
112
|
+
}
|
|
113
|
+
if (prevState.$variables !== newState.$variables) {
|
|
114
|
+
this._handleChangedStateActivation(prevState.$variables, newState.$variables);
|
|
115
|
+
}
|
|
116
|
+
if (prevState.$timeRange !== newState.$timeRange) {
|
|
117
|
+
this._handleChangedStateActivation(prevState.$timeRange, newState.$timeRange);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_handleChangedStateActivation(oldValue, newValue) {
|
|
121
|
+
if (oldValue) {
|
|
122
|
+
const deactivationHandler = this._deactivationHandlers.get(oldValue);
|
|
123
|
+
if (deactivationHandler) {
|
|
124
|
+
deactivationHandler();
|
|
125
|
+
this._deactivationHandlers.delete(oldValue);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (newValue) {
|
|
129
|
+
this._deactivationHandlers.set(newValue, newValue.activate());
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
_handleChangedBehaviors(oldValue, newValue) {
|
|
133
|
+
if (oldValue) {
|
|
134
|
+
for (const oldBehavior of oldValue) {
|
|
135
|
+
if (!newValue || !newValue.includes(oldBehavior)) {
|
|
136
|
+
const deactivationHandler = this._deactivationHandlers.get(oldBehavior);
|
|
137
|
+
if (deactivationHandler) {
|
|
138
|
+
deactivationHandler();
|
|
139
|
+
this._deactivationHandlers.delete(oldBehavior);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (newValue) {
|
|
145
|
+
for (const newBehavior of newValue) {
|
|
146
|
+
if (!oldValue || !oldValue.includes(newBehavior)) {
|
|
147
|
+
this._activateBehavior(newBehavior);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
publishEvent(event, bubble) {
|
|
153
|
+
this._events.publish(event);
|
|
154
|
+
if (bubble && this.parent) {
|
|
155
|
+
this.parent.publishEvent(event, bubble);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
getRoot() {
|
|
159
|
+
return !this._parent ? this : this._parent.getRoot();
|
|
160
|
+
}
|
|
161
|
+
_internalActivate() {
|
|
162
|
+
this._isActive = true;
|
|
163
|
+
const { $data, $variables, $timeRange, $behaviors } = this.state;
|
|
164
|
+
this._activationHandlers.forEach((handler) => {
|
|
165
|
+
const result = handler();
|
|
166
|
+
if (result) {
|
|
167
|
+
this._deactivationHandlers.set(result, result);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if ($timeRange && !$timeRange.isActive) {
|
|
171
|
+
this._deactivationHandlers.set($timeRange, $timeRange.activate());
|
|
172
|
+
}
|
|
173
|
+
if ($variables && !$variables.isActive) {
|
|
174
|
+
this._deactivationHandlers.set($variables, $variables.activate());
|
|
175
|
+
}
|
|
176
|
+
if ($data && !$data.isActive) {
|
|
177
|
+
this._deactivationHandlers.set($data, $data.activate());
|
|
178
|
+
}
|
|
179
|
+
if ($behaviors) {
|
|
180
|
+
for (const behavior of $behaviors) {
|
|
181
|
+
this._activateBehavior(behavior);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
_activateBehavior(behavior) {
|
|
186
|
+
if (behavior instanceof SceneObjectBase) {
|
|
187
|
+
this._deactivationHandlers.set(behavior, behavior.activate());
|
|
188
|
+
} else if (typeof behavior === "function") {
|
|
189
|
+
const deactivate = behavior(this);
|
|
190
|
+
if (deactivate) {
|
|
191
|
+
this._deactivationHandlers.set(behavior, deactivate);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
activate() {
|
|
196
|
+
if (!this.isActive) {
|
|
197
|
+
this._internalActivate();
|
|
198
|
+
}
|
|
199
|
+
this._refCount++;
|
|
200
|
+
let called = false;
|
|
201
|
+
return () => {
|
|
202
|
+
this._refCount--;
|
|
203
|
+
if (called) {
|
|
204
|
+
const msg = `SceneObject cancelation handler returned by activate() called a second time`;
|
|
205
|
+
throw new Error(msg);
|
|
206
|
+
}
|
|
207
|
+
called = true;
|
|
208
|
+
if (this._refCount === 0) {
|
|
209
|
+
this._internalDeactivate();
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
_internalDeactivate() {
|
|
214
|
+
this._isActive = false;
|
|
215
|
+
for (let handler of this._deactivationHandlers.values()) {
|
|
216
|
+
handler();
|
|
217
|
+
}
|
|
218
|
+
this._deactivationHandlers.clear();
|
|
219
|
+
this._events.removeAllListeners();
|
|
220
|
+
this._subs.unsubscribe();
|
|
221
|
+
this._subs = new Subscription();
|
|
222
|
+
}
|
|
223
|
+
useState() {
|
|
224
|
+
return useSceneObjectState(this);
|
|
225
|
+
}
|
|
226
|
+
forceRender() {
|
|
227
|
+
this.setState({});
|
|
228
|
+
}
|
|
229
|
+
clone(withState) {
|
|
230
|
+
return cloneSceneObject(this, withState);
|
|
231
|
+
}
|
|
232
|
+
addActivationHandler(handler) {
|
|
233
|
+
this._activationHandlers.push(handler);
|
|
234
|
+
}
|
|
235
|
+
forEachChild(callback) {
|
|
236
|
+
forEachChild(this.state, callback);
|
|
237
|
+
}
|
|
238
|
+
getRef() {
|
|
239
|
+
if (!this._ref) {
|
|
240
|
+
this._ref = new SceneObjectRef(this);
|
|
241
|
+
}
|
|
242
|
+
return this._ref;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function useSceneObjectState(model, options) {
|
|
246
|
+
var _a;
|
|
247
|
+
const [_, setState] = useState(model.state);
|
|
248
|
+
const stateAtFirstRender = model.state;
|
|
249
|
+
const shouldActivateOrKeepAlive = (_a = options == null ? void 0 : options.shouldActivateOrKeepAlive) != null ? _a : false;
|
|
250
|
+
useEffect(() => {
|
|
251
|
+
let unactivate;
|
|
252
|
+
if (shouldActivateOrKeepAlive) {
|
|
253
|
+
unactivate = model.activate();
|
|
254
|
+
}
|
|
255
|
+
const s = model.subscribeToState((state) => {
|
|
256
|
+
setState(state);
|
|
257
|
+
});
|
|
258
|
+
if (model.state !== stateAtFirstRender) {
|
|
259
|
+
setState(model.state);
|
|
260
|
+
}
|
|
261
|
+
return () => {
|
|
262
|
+
s.unsubscribe();
|
|
263
|
+
if (unactivate) {
|
|
264
|
+
unactivate();
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
}, [model, shouldActivateOrKeepAlive]);
|
|
268
|
+
return model.state;
|
|
269
|
+
}
|
|
270
|
+
function forEachChild(state, callback) {
|
|
271
|
+
for (const propValue of Object.values(state)) {
|
|
272
|
+
if (propValue instanceof SceneObjectBase) {
|
|
273
|
+
callback(propValue);
|
|
274
|
+
}
|
|
275
|
+
if (Array.isArray(propValue)) {
|
|
276
|
+
for (const child of propValue) {
|
|
277
|
+
if (child instanceof SceneObjectBase) {
|
|
278
|
+
callback(child);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
export { SceneObjectBase, useSceneObjectState };
|
|
286
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RCYXNlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb3JlL1NjZW5lT2JqZWN0QmFzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRXZlbnRCdXNTcnYgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFNjZW5lQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJy4vU2NlbmVDb21wb25lbnRXcmFwcGVyLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0U3RhdGVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBjbG9uZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi9zY2VuZUdyYXBoL3V0aWxzLmpzJztcbmltcG9ydCB7IFNjZW5lT2JqZWN0UmVmIH0gZnJvbSAnLi9TY2VuZU9iamVjdFJlZi5qcyc7XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19nZXRPd25Qcm9wU3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgX19oYXNPd25Qcm9wID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBfX3Byb3BJc0VudW0gPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIF9fZGVmTm9ybWFsUHJvcCA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3Aob2JqLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSwgdmFsdWUgfSkgOiBvYmpba2V5XSA9IHZhbHVlO1xudmFyIF9fc3ByZWFkVmFsdWVzID0gKGEsIGIpID0+IHtcbiAgZm9yICh2YXIgcHJvcCBpbiBiIHx8IChiID0ge30pKVxuICAgIGlmIChfX2hhc093blByb3AuY2FsbChiLCBwcm9wKSlcbiAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgaWYgKF9fZ2V0T3duUHJvcFN5bWJvbHMpXG4gICAgZm9yICh2YXIgcHJvcCBvZiBfX2dldE93blByb3BTeW1ib2xzKGIpKSB7XG4gICAgICBpZiAoX19wcm9wSXNFbnVtLmNhbGwoYiwgcHJvcCkpXG4gICAgICAgIF9fZGVmTm9ybWFsUHJvcChhLCBwcm9wLCBiW3Byb3BdKTtcbiAgICB9XG4gIHJldHVybiBhO1xufTtcbmNsYXNzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKHN0YXRlKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl9hY3RpdmF0aW9uSGFuZGxlcnMgPSBbXTtcbiAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgdGhpcy5fc3VicyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLl9yZWZDb3VudCA9IDA7XG4gICAgdGhpcy5fcmVuZGVyQmVmb3JlQWN0aXZhdGlvbiA9IGZhbHNlO1xuICAgIGlmICghc3RhdGUua2V5KSB7XG4gICAgICBzdGF0ZS5rZXkgPSB2NCgpO1xuICAgIH1cbiAgICB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRCdXNTcnYoKTtcbiAgICB0aGlzLl9zdGF0ZSA9IE9iamVjdC5mcmVlemUoc3RhdGUpO1xuICAgIHRoaXMuX3NldFBhcmVudCh0aGlzLl9zdGF0ZSk7XG4gIH1cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuICBnZXQgaXNBY3RpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQWN0aXZlO1xuICB9XG4gIGdldCByZW5kZXJCZWZvcmVBY3RpdmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9yZW5kZXJCZWZvcmVBY3RpdmF0aW9uO1xuICB9XG4gIGdldCBwYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudDtcbiAgfVxuICBnZXQgdmFyaWFibGVEZXBlbmRlbmN5KCkge1xuICAgIHJldHVybiB0aGlzLl92YXJpYWJsZURlcGVuZGVuY3k7XG4gIH1cbiAgZ2V0IHVybFN5bmMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VybFN5bmM7XG4gIH1cbiAgZ2V0IENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gU2NlbmVDb21wb25lbnRXcmFwcGVyO1xuICB9XG4gIF9zZXRQYXJlbnQoc3RhdGUpIHtcbiAgICBmb3JFYWNoQ2hpbGQoc3RhdGUsIChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkLl9wYXJlbnQgJiYgY2hpbGQuX3BhcmVudCAhPT0gdGhpcykge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgXCJTY2VuZU9iamVjdCBhbHJlYWR5IGhhcyBhIHBhcmVudCBzZXQgdGhhdCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbmV3IHBhcmVudC4gWW91IGNhbm5vdCBzaGFyZSB0aGUgc2FtZSBTY2VuZU9iamVjdCBpbnN0YW5jZSBpbiBtdWx0aXBsZSBzY2VuZXMgb3IgaW4gbXVsdGlwbGUgZGlmZmVyZW50IHBsYWNlcyBvZiB0aGUgc2FtZSBzY2VuZSBncmFwaC4gVXNlIFNjZW5lT2JqZWN0LmNsb25lKCkgdG8gZHVwbGljYXRlIGEgU2NlbmVPYmplY3Qgb3Igc3RvcmUgYSBzdGF0ZSBrZXkgcmVmZXJlbmNlIGFuZCB1c2Ugc2NlbmVHcmFwaC5maW5kT2JqZWN0IHRvIGxvY2F0ZSBpdC5cIixcbiAgICAgICAgICBjaGlsZCxcbiAgICAgICAgICB0aGlzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBjaGlsZC5fcGFyZW50ID0gdGhpcztcbiAgICB9KTtcbiAgfVxuICBjbGVhclBhcmVudCgpIHtcbiAgICB0aGlzLl9wYXJlbnQgPSB2b2lkIDA7XG4gIH1cbiAgc3Vic2NyaWJlVG9TdGF0ZShoYW5kbGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5zdWJzY3JpYmUoU2NlbmVPYmplY3RTdGF0ZUNoYW5nZWRFdmVudCwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQucGF5bG9hZC5jaGFuZ2VkT2JqZWN0ID09PSB0aGlzKSB7XG4gICAgICAgIGhhbmRsZXIoZXZlbnQucGF5bG9hZC5uZXdTdGF0ZSwgZXZlbnQucGF5bG9hZC5wcmV2U3RhdGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHN1YnNjcmliZVRvRXZlbnQoZXZlbnRUeXBlLCBoYW5kbGVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX2V2ZW50cy5zdWJzY3JpYmUoZXZlbnRUeXBlLCBoYW5kbGVyKTtcbiAgfVxuICBzZXRTdGF0ZSh1cGRhdGUpIHtcbiAgICBjb25zdCBwcmV2U3RhdGUgPSB0aGlzLl9zdGF0ZTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCB0aGlzLl9zdGF0ZSksIHVwZGF0ZSk7XG4gICAgdGhpcy5fc3RhdGUgPSBPYmplY3QuZnJlZXplKG5ld1N0YXRlKTtcbiAgICB0aGlzLl9zZXRQYXJlbnQodXBkYXRlKTtcbiAgICB0aGlzLl9oYW5kbGVBY3RpdmF0aW9uT2ZDaGFuZ2VkU3RhdGVQcm9wcyhwcmV2U3RhdGUsIG5ld1N0YXRlKTtcbiAgICB0aGlzLnB1Ymxpc2hFdmVudChcbiAgICAgIG5ldyBTY2VuZU9iamVjdFN0YXRlQ2hhbmdlZEV2ZW50KHtcbiAgICAgICAgcHJldlN0YXRlLFxuICAgICAgICBuZXdTdGF0ZSxcbiAgICAgICAgcGFydGlhbFVwZGF0ZTogdXBkYXRlLFxuICAgICAgICBjaGFuZ2VkT2JqZWN0OiB0aGlzXG4gICAgICB9KSxcbiAgICAgIHRydWVcbiAgICApO1xuICB9XG4gIF9oYW5kbGVBY3RpdmF0aW9uT2ZDaGFuZ2VkU3RhdGVQcm9wcyhwcmV2U3RhdGUsIG5ld1N0YXRlKSB7XG4gICAgaWYgKCF0aGlzLmlzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChwcmV2U3RhdGUuJGJlaGF2aW9ycyAhPT0gbmV3U3RhdGUuJGJlaGF2aW9ycykge1xuICAgICAgdGhpcy5faGFuZGxlQ2hhbmdlZEJlaGF2aW9ycyhwcmV2U3RhdGUuJGJlaGF2aW9ycywgbmV3U3RhdGUuJGJlaGF2aW9ycyk7XG4gICAgfVxuICAgIGlmIChwcmV2U3RhdGUuJGRhdGEgIT09IG5ld1N0YXRlLiRkYXRhKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDaGFuZ2VkU3RhdGVBY3RpdmF0aW9uKHByZXZTdGF0ZS4kZGF0YSwgbmV3U3RhdGUuJGRhdGEpO1xuICAgIH1cbiAgICBpZiAocHJldlN0YXRlLiR2YXJpYWJsZXMgIT09IG5ld1N0YXRlLiR2YXJpYWJsZXMpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZWRTdGF0ZUFjdGl2YXRpb24ocHJldlN0YXRlLiR2YXJpYWJsZXMsIG5ld1N0YXRlLiR2YXJpYWJsZXMpO1xuICAgIH1cbiAgICBpZiAocHJldlN0YXRlLiR0aW1lUmFuZ2UgIT09IG5ld1N0YXRlLiR0aW1lUmFuZ2UpIHtcbiAgICAgIHRoaXMuX2hhbmRsZUNoYW5nZWRTdGF0ZUFjdGl2YXRpb24ocHJldlN0YXRlLiR0aW1lUmFuZ2UsIG5ld1N0YXRlLiR0aW1lUmFuZ2UpO1xuICAgIH1cbiAgfVxuICBfaGFuZGxlQ2hhbmdlZFN0YXRlQWN0aXZhdGlvbihvbGRWYWx1ZSwgbmV3VmFsdWUpIHtcbiAgICBpZiAob2xkVmFsdWUpIHtcbiAgICAgIGNvbnN0IGRlYWN0aXZhdGlvbkhhbmRsZXIgPSB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5nZXQob2xkVmFsdWUpO1xuICAgICAgaWYgKGRlYWN0aXZhdGlvbkhhbmRsZXIpIHtcbiAgICAgICAgZGVhY3RpdmF0aW9uSGFuZGxlcigpO1xuICAgICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5kZWxldGUob2xkVmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChuZXdWYWx1ZSwgbmV3VmFsdWUuYWN0aXZhdGUoKSk7XG4gICAgfVxuICB9XG4gIF9oYW5kbGVDaGFuZ2VkQmVoYXZpb3JzKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xuICAgIGlmIChvbGRWYWx1ZSkge1xuICAgICAgZm9yIChjb25zdCBvbGRCZWhhdmlvciBvZiBvbGRWYWx1ZSkge1xuICAgICAgICBpZiAoIW5ld1ZhbHVlIHx8ICFuZXdWYWx1ZS5pbmNsdWRlcyhvbGRCZWhhdmlvcikpIHtcbiAgICAgICAgICBjb25zdCBkZWFjdGl2YXRpb25IYW5kbGVyID0gdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuZ2V0KG9sZEJlaGF2aW9yKTtcbiAgICAgICAgICBpZiAoZGVhY3RpdmF0aW9uSGFuZGxlcikge1xuICAgICAgICAgICAgZGVhY3RpdmF0aW9uSGFuZGxlcigpO1xuICAgICAgICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuZGVsZXRlKG9sZEJlaGF2aW9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5ld1ZhbHVlKSB7XG4gICAgICBmb3IgKGNvbnN0IG5ld0JlaGF2aW9yIG9mIG5ld1ZhbHVlKSB7XG4gICAgICAgIGlmICghb2xkVmFsdWUgfHwgIW9sZFZhbHVlLmluY2x1ZGVzKG5ld0JlaGF2aW9yKSkge1xuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlQmVoYXZpb3IobmV3QmVoYXZpb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHB1Ymxpc2hFdmVudChldmVudCwgYnViYmxlKSB7XG4gICAgdGhpcy5fZXZlbnRzLnB1Ymxpc2goZXZlbnQpO1xuICAgIGlmIChidWJibGUgJiYgdGhpcy5wYXJlbnQpIHtcbiAgICAgIHRoaXMucGFyZW50LnB1Ymxpc2hFdmVudChldmVudCwgYnViYmxlKTtcbiAgICB9XG4gIH1cbiAgZ2V0Um9vdCgpIHtcbiAgICByZXR1cm4gIXRoaXMuX3BhcmVudCA/IHRoaXMgOiB0aGlzLl9wYXJlbnQuZ2V0Um9vdCgpO1xuICB9XG4gIF9pbnRlcm5hbEFjdGl2YXRlKCkge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gdHJ1ZTtcbiAgICBjb25zdCB7ICRkYXRhLCAkdmFyaWFibGVzLCAkdGltZVJhbmdlLCAkYmVoYXZpb3JzIH0gPSB0aGlzLnN0YXRlO1xuICAgIHRoaXMuX2FjdGl2YXRpb25IYW5kbGVycy5mb3JFYWNoKChoYW5kbGVyKSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBoYW5kbGVyKCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChyZXN1bHQsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKCR0aW1lUmFuZ2UgJiYgISR0aW1lUmFuZ2UuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldCgkdGltZVJhbmdlLCAkdGltZVJhbmdlLmFjdGl2YXRlKCkpO1xuICAgIH1cbiAgICBpZiAoJHZhcmlhYmxlcyAmJiAhJHZhcmlhYmxlcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5fZGVhY3RpdmF0aW9uSGFuZGxlcnMuc2V0KCR2YXJpYWJsZXMsICR2YXJpYWJsZXMuYWN0aXZhdGUoKSk7XG4gICAgfVxuICAgIGlmICgkZGF0YSAmJiAhJGRhdGEuaXNBY3RpdmUpIHtcbiAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldCgkZGF0YSwgJGRhdGEuYWN0aXZhdGUoKSk7XG4gICAgfVxuICAgIGlmICgkYmVoYXZpb3JzKSB7XG4gICAgICBmb3IgKGNvbnN0IGJlaGF2aW9yIG9mICRiZWhhdmlvcnMpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVCZWhhdmlvcihiZWhhdmlvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9hY3RpdmF0ZUJlaGF2aW9yKGJlaGF2aW9yKSB7XG4gICAgaWYgKGJlaGF2aW9yIGluc3RhbmNlb2YgU2NlbmVPYmplY3RCYXNlKSB7XG4gICAgICB0aGlzLl9kZWFjdGl2YXRpb25IYW5kbGVycy5zZXQoYmVoYXZpb3IsIGJlaGF2aW9yLmFjdGl2YXRlKCkpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJlaGF2aW9yID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGNvbnN0IGRlYWN0aXZhdGUgPSBiZWhhdmlvcih0aGlzKTtcbiAgICAgIGlmIChkZWFjdGl2YXRlKSB7XG4gICAgICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnNldChiZWhhdmlvciwgZGVhY3RpdmF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFjdGl2YXRlKCkge1xuICAgIGlmICghdGhpcy5pc0FjdGl2ZSkge1xuICAgICAgdGhpcy5faW50ZXJuYWxBY3RpdmF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLl9yZWZDb3VudCsrO1xuICAgIGxldCBjYWxsZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgdGhpcy5fcmVmQ291bnQtLTtcbiAgICAgIGlmIChjYWxsZWQpIHtcbiAgICAgICAgY29uc3QgbXNnID0gYFNjZW5lT2JqZWN0IGNhbmNlbGF0aW9uIGhhbmRsZXIgcmV0dXJuZWQgYnkgYWN0aXZhdGUoKSBjYWxsZWQgYSBzZWNvbmQgdGltZWA7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgY2FsbGVkID0gdHJ1ZTtcbiAgICAgIGlmICh0aGlzLl9yZWZDb3VudCA9PT0gMCkge1xuICAgICAgICB0aGlzLl9pbnRlcm5hbERlYWN0aXZhdGUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIF9pbnRlcm5hbERlYWN0aXZhdGUoKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSBmYWxzZTtcbiAgICBmb3IgKGxldCBoYW5kbGVyIG9mIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLnZhbHVlcygpKSB7XG4gICAgICBoYW5kbGVyKCk7XG4gICAgfVxuICAgIHRoaXMuX2RlYWN0aXZhdGlvbkhhbmRsZXJzLmNsZWFyKCk7XG4gICAgdGhpcy5fZXZlbnRzLnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgIHRoaXMuX3N1YnMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9zdWJzID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICB9XG4gIHVzZVN0YXRlKCkge1xuICAgIHJldHVybiB1c2VTY2VuZU9iamVjdFN0YXRlKHRoaXMpO1xuICB9XG4gIGZvcmNlUmVuZGVyKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe30pO1xuICB9XG4gIGNsb25lKHdpdGhTdGF0ZSkge1xuICAgIHJldHVybiBjbG9uZVNjZW5lT2JqZWN0KHRoaXMsIHdpdGhTdGF0ZSk7XG4gIH1cbiAgYWRkQWN0aXZhdGlvbkhhbmRsZXIoaGFuZGxlcikge1xuICAgIHRoaXMuX2FjdGl2YXRpb25IYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICB9XG4gIGZvckVhY2hDaGlsZChjYWxsYmFjaykge1xuICAgIGZvckVhY2hDaGlsZCh0aGlzLnN0YXRlLCBjYWxsYmFjayk7XG4gIH1cbiAgZ2V0UmVmKCkge1xuICAgIGlmICghdGhpcy5fcmVmKSB7XG4gICAgICB0aGlzLl9yZWYgPSBuZXcgU2NlbmVPYmplY3RSZWYodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9yZWY7XG4gIH1cbn1cbmZ1bmN0aW9uIHVzZVNjZW5lT2JqZWN0U3RhdGUobW9kZWwsIG9wdGlvbnMpIHtcbiAgdmFyIF9hO1xuICBjb25zdCBbXywgc2V0U3RhdGVdID0gdXNlU3RhdGUobW9kZWwuc3RhdGUpO1xuICBjb25zdCBzdGF0ZUF0Rmlyc3RSZW5kZXIgPSBtb2RlbC5zdGF0ZTtcbiAgY29uc3Qgc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZSA9IChfYSA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZSkgIT0gbnVsbCA/IF9hIDogZmFsc2U7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHVuYWN0aXZhdGU7XG4gICAgaWYgKHNob3VsZEFjdGl2YXRlT3JLZWVwQWxpdmUpIHtcbiAgICAgIHVuYWN0aXZhdGUgPSBtb2RlbC5hY3RpdmF0ZSgpO1xuICAgIH1cbiAgICBjb25zdCBzID0gbW9kZWwuc3Vic2NyaWJlVG9TdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgIHNldFN0YXRlKHN0YXRlKTtcbiAgICB9KTtcbiAgICBpZiAobW9kZWwuc3RhdGUgIT09IHN0YXRlQXRGaXJzdFJlbmRlcikge1xuICAgICAgc2V0U3RhdGUobW9kZWwuc3RhdGUpO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuICAgICAgaWYgKHVuYWN0aXZhdGUpIHtcbiAgICAgICAgdW5hY3RpdmF0ZSgpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFttb2RlbCwgc2hvdWxkQWN0aXZhdGVPcktlZXBBbGl2ZV0pO1xuICByZXR1cm4gbW9kZWwuc3RhdGU7XG59XG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGQoc3RhdGUsIGNhbGxiYWNrKSB7XG4gIGZvciAoY29uc3QgcHJvcFZhbHVlIG9mIE9iamVjdC52YWx1ZXMoc3RhdGUpKSB7XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFNjZW5lT2JqZWN0QmFzZSkge1xuICAgICAgY2FsbGJhY2socHJvcFZhbHVlKTtcbiAgICB9XG4gICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgU2NlbmVPYmplY3RCYXNlKSB7XG4gICAgICAgICAgY2FsbGJhY2soY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IFNjZW5lT2JqZWN0QmFzZSwgdXNlU2NlbmVPYmplY3RTdGF0ZSB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVMk5sYm1WUFltcGxZM1JDWVhObExtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk5emNtTXZZMjl5WlM5VFkyVnVaVTlpYW1WamRFSmhjMlV1ZEhONElsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJSFZ6WlVWbVptVmpkQ3dnZFhObFUzUmhkR1VnZlNCbWNtOXRJQ2R5WldGamRDYzdYRzVwYlhCdmNuUWdleUJUZFdKelkzSnBjSFJwYjI0c0lGVnVjM1ZpYzJOeWFXSmhZbXhsSUgwZ1puSnZiU0FuY25ocWN5YzdYRzVwYlhCdmNuUWdleUIyTkNCaGN5QjFkV2xrZGpRZ2ZTQm1jbTl0SUNkMWRXbGtKenRjYmx4dWFXMXdiM0owSUhzZ1FuVnpSWFpsYm5Rc0lFSjFjMFYyWlc1MFNHRnVaR3hsY2l3Z1FuVnpSWFpsYm5SVWVYQmxMQ0JGZG1WdWRFSjFjeXdnUlhabGJuUkNkWE5UY25ZZ2ZTQm1jbTl0SUNkQVozSmhabUZ1WVM5a1lYUmhKenRjYm1sdGNHOXlkQ0I3WEc0Z0lGTmpaVzVsVDJKcVpXTjBMRnh1SUNCVFkyVnVaVU52YlhCdmJtVnVkQ3hjYmlBZ1UyTmxibVZQWW1wbFkzUlZjbXhUZVc1alNHRnVaR3hsY2l4Y2JpQWdVMk5sYm1WVGRHRjBaVU5vWVc1blpXUklZVzVrYkdWeUxGeHVJQ0JUWTJWdVpVRmpkR2wyWVhScGIyNUlZVzVrYkdWeUxGeHVJQ0JUWTJWdVpVUmxZV04wYVhaaGRHbHZia2hoYm1Sc1pYSXNYRzRnSUVOaGJtTmxiRUZqZEdsMllYUnBiMjVJWVc1a2JHVnlMRnh1SUNCVFkyVnVaVTlpYW1WamRGTjBZWFJsTEZ4dUlDQlZjMlZUZEdGMFpVaHZiMnRQY0hScGIyNXpMRnh1SUNCVFkyVnVaVk4wWVhSbGJHVnpjMEpsYUdGMmFXOXlMRnh1ZlNCbWNtOXRJQ2N1TDNSNWNHVnpKenRjYmx4dWFXMXdiM0owSUhzZ1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJSDBnWm5KdmJTQW5MaTlUWTJWdVpVTnZiWEJ2Ym1WdWRGZHlZWEJ3WlhJbk8xeHVhVzF3YjNKMElIc2dVMk5sYm1WUFltcGxZM1JUZEdGMFpVTm9ZVzVuWldSRmRtVnVkQ0I5SUdaeWIyMGdKeTR2WlhabGJuUnpKenRjYm1sdGNHOXlkQ0I3SUdOc2IyNWxVMk5sYm1WUFltcGxZM1FnZlNCbWNtOXRJQ2N1TDNOalpXNWxSM0poY0dndmRYUnBiSE1uTzF4dWFXMXdiM0owSUhzZ1UyTmxibVZXWVhKcFlXSnNaVVJsY0dWdVpHVnVZM2xEYjI1bWFXZE1hV3RsSUgwZ1puSnZiU0FuTGk0dmRtRnlhV0ZpYkdWekwzUjVjR1Z6Snp0Y2JtbHRjRzl5ZENCN0lGTmpaVzVsVDJKcVpXTjBVbVZtSUgwZ1puSnZiU0FuTGk5VFkyVnVaVTlpYW1WamRGSmxaaWM3WEc1Y2JtVjRjRzl5ZENCaFluTjBjbUZqZENCamJHRnpjeUJUWTJWdVpVOWlhbVZqZEVKaGMyVThWRk4wWVhSbElHVjRkR1Z1WkhNZ1UyTmxibVZQWW1wbFkzUlRkR0YwWlNBOUlGTmpaVzVsVDJKcVpXTjBVM1JoZEdVK1hHNGdJR2x0Y0d4bGJXVnVkSE1nVTJObGJtVlBZbXBsWTNROFZGTjBZWFJsUGx4dWUxeHVJQ0J3Y21sMllYUmxJRjlwYzBGamRHbDJaU0E5SUdaaGJITmxPMXh1SUNCd2NtbDJZWFJsSUY5emRHRjBaVG9nVkZOMFlYUmxPMXh1SUNCd2NtbDJZWFJsSUY5aFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NNklGTmpaVzVsUVdOMGFYWmhkR2x2YmtoaGJtUnNaWEpiWFNBOUlGdGRPMXh1SUNCd2NtbDJZWFJsSUY5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5QTlJRzVsZHlCTllYQThiMkpxWldOMExDQlRZMlZ1WlVSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhJK0tDazdYRzRnSUhCeWFYWmhkR1VnWDNKbFpqODZJRk5qWlc1bFQySnFaV04wVW1WbVBIUm9hWE0rTzF4dVhHNGdJSEJ5YjNSbFkzUmxaQ0JmWlhabGJuUnpQem9nUlhabGJuUkNkWE03WEc0Z0lIQnliM1JsWTNSbFpDQmZjR0Z5Wlc1MFB6b2dVMk5sYm1WUFltcGxZM1E3WEc0Z0lIQnliM1JsWTNSbFpDQmZjM1ZpY3lBOUlHNWxkeUJUZFdKelkzSnBjSFJwYjI0b0tUdGNiaUFnY0hKdmRHVmpkR1ZrSUY5eVpXWkRiM1Z1ZENBOUlEQTdYRzRnSUhCeWIzUmxZM1JsWkNCZmNtVnVaR1Z5UW1WbWIzSmxRV04wYVhaaGRHbHZiaUE5SUdaaGJITmxPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQmZkbUZ5YVdGaWJHVkVaWEJsYm1SbGJtTjVPaUJUWTJWdVpWWmhjbWxoWW14bFJHVndaVzVrWlc1amVVTnZibVpwWjB4cGEyVWdmQ0IxYm1SbFptbHVaV1E3WEc0Z0lIQnliM1JsWTNSbFpDQmZkWEpzVTNsdVl6b2dVMk5sYm1WUFltcGxZM1JWY214VGVXNWpTR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQndkV0pzYVdNZ1kyOXVjM1J5ZFdOMGIzSW9jM1JoZEdVNklGUlRkR0YwWlNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1JoZEdVdWEyVjVLU0I3WEc0Z0lDQWdJQ0J6ZEdGMFpTNXJaWGtnUFNCMWRXbGtkalFvS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxsOWxkbVZ1ZEhNZ1BTQnVaWGNnUlhabGJuUkNkWE5UY25Zb0tUdGNibHh1SUNBZ0lIUm9hWE11WDNOMFlYUmxJRDBnVDJKcVpXTjBMbVp5WldWNlpTaHpkR0YwWlNrN1hHNGdJQ0FnZEdocGN5NWZjMlYwVUdGeVpXNTBLSFJvYVhNdVgzTjBZWFJsS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJEZFhKeVpXNTBJSE4wWVhSbElDb3ZYRzRnSUhCMVlteHBZeUJuWlhRZ2MzUmhkR1VvS1RvZ1ZGTjBZWFJsSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmMzUmhkR1U3WEc0Z0lIMWNibHh1SUNBdktpb2dWSEoxWlNCcFppQmpkWEp5Wlc1MGJIa2dZbVZwYm1jZ1lXTjBhWFpsSUNocFpTQmthWE53YkdGNVpXUWdabTl5SUhacGMzVmhiQ0J2WW1wbFkzUnpLU0FxTDF4dUlDQndkV0pzYVdNZ1oyVjBJR2x6UVdOMGFYWmxLQ2s2SUdKdmIyeGxZVzRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5cGMwRmpkR2wyWlR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUWdjbVZ1WkdWeVFtVm1iM0psUVdOMGFYWmhkR2x2YmlncE9pQmliMjlzWldGdUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZjbVZ1WkdWeVFtVm1iM0psUVdOMGFYWmhkR2x2Ymp0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJSFJvWlNCd1lYSmxiblFzSUhWdVpHVm1hVzVsWkNCbWIzSWdjbTl2ZENCdlltcGxZM1FnS2k5Y2JpQWdjSFZpYkdsaklHZGxkQ0J3WVhKbGJuUW9LVG9nVTJObGJtVlBZbXBsWTNRZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDl3WVhKbGJuUTdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCMllYSnBZV0pzWlNCa1pYQmxibVJsYm1ONUlHTnZibVpwWnlBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwSUhaaGNtbGhZbXhsUkdWd1pXNWtaVzVqZVNncE9pQlRZMlZ1WlZaaGNtbGhZbXhsUkdWd1pXNWtaVzVqZVVOdmJtWnBaMHhwYTJVZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDkyWVhKcFlXSnNaVVJsY0dWdVpHVnVZM2s3WEc0Z0lIMWNibHh1SUNBdktpb2dVbVYwZFhKdWN5QjFjbXdnYzNsdVl5QmpiMjVtYVdjZ0tpOWNiaUFnY0hWaWJHbGpJR2RsZENCMWNteFRlVzVqS0NrNklGTmpaVzVsVDJKcVpXTjBWWEpzVTNsdVkwaGhibVJzWlhJZ2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDkxY214VGVXNWpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZWelpXUWdhVzRnY21WdVpHVnlJR1oxYm1OMGFXOXVjeUIzYUdWdUlISmxibVJsY21sdVp5QmhJRk5qWlc1bFQySnFaV04wTGx4dUlDQWdLaUJYY21Gd2N5QjBhR1VnWTI5dGNHOXVaVzUwSUdsdUlHRnVJRVZrYVhSWGNtRndjR1Z5SUhSb1lYUWdhR0Z1Wkd4bGN5QmxaR2wwSUcxdlpHVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFFnUTI5dGNHOXVaVzUwS0NrNklGTmpaVzVsUTI5dGNHOXVaVzUwUEhSb2FYTStJSHRjYmlBZ0lDQnlaWFIxY200Z1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJR0Z6SUZOalpXNWxRMjl0Y0c5dVpXNTBQSFJvYVhNK08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQmZjMlYwVUdGeVpXNTBLSE4wWVhSbE9pQlFZWEowYVdGc1BGUlRkR0YwWlQ0cElIdGNiaUFnSUNCbWIzSkZZV05vUTJocGJHUW9jM1JoZEdVc0lDaGphR2xzWkNrZ1BUNGdlMXh1SUNBZ0lDQWdMeThnU1dZZ2QyVWdZV3h5WldGa2VTQm9ZWFpsSUdFZ2NHRnlaVzUwSUdGdVpDQnBkQ2R6SUc1dmRDQjBhR2x6TENCMGFHVnVJSGRsSUd4cGEyVnNlU0JvWVhabElHRWdZblZuWEc0Z0lDQWdJQ0JwWmlBb1kyaHBiR1F1WDNCaGNtVnVkQ0FtSmlCamFHbHNaQzVmY0dGeVpXNTBJQ0U5UFNCMGFHbHpLU0I3WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1ZDJGeWJpaGNiaUFnSUNBZ0lDQWdJQ0FuVTJObGJtVlBZbXBsWTNRZ1lXeHlaV0ZrZVNCb1lYTWdZU0J3WVhKbGJuUWdjMlYwSUhSb1lYUWdhWE1nWkdsbVptVnlaVzUwSUdaeWIyMGdkR2hsSUc1bGR5QndZWEpsYm5RdUlGbHZkU0JqWVc1dWIzUWdjMmhoY21VZ2RHaGxJSE5oYldVZ1UyTmxibVZQWW1wbFkzUWdhVzV6ZEdGdVkyVWdhVzRnYlhWc2RHbHdiR1VnYzJObGJtVnpJRzl5SUdsdUlHMTFiSFJwY0d4bElHUnBabVpsY21WdWRDQndiR0ZqWlhNZ2IyWWdkR2hsSUhOaGJXVWdjMk5sYm1VZ1ozSmhjR2d1SUZWelpTQlRZMlZ1WlU5aWFtVmpkQzVqYkc5dVpTZ3BJSFJ2SUdSMWNHeHBZMkYwWlNCaElGTmpaVzVsVDJKcVpXTjBJRzl5SUhOMGIzSmxJR0VnYzNSaGRHVWdhMlY1SUhKbFptVnlaVzVqWlNCaGJtUWdkWE5sSUhOalpXNWxSM0poY0dndVptbHVaRTlpYW1WamRDQjBieUJzYjJOaGRHVWdhWFF1Snl4Y2JpQWdJQ0FnSUNBZ0lDQmphR2xzWkN4Y2JpQWdJQ0FnSUNBZ0lDQjBhR2x6WEc0Z0lDQWdJQ0FnSUNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnSUNCamFHbHNaQzVmY0dGeVpXNTBJRDBnZEdocGN6dGNiaUFnSUNCOUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJUYjIxbGRHbHRaWE1nZVc5MUlIZGhiblFnZEc4Z2JXOTJaU0J2Ym1VZ2FXNXpkR0Z1WTJVZ2RHOGdZVzV2ZEdobGNpQndZWEpsYm5RdVhHNGdJQ0FxSUZSb2FYTWdhWE1nWVNCM1lYa2dkRzhnWkc4Z2RHaGhkQ0IzYVhSb2IzVjBJR2RsZEhScGJtY2dkR2hsSUdOdmJuTnZiR1VnZDJGeWJtbHVaeTVjYmlBZ0lDb3ZYRzRnSUhCMVlteHBZeUJqYkdWaGNsQmhjbVZ1ZENncElIdGNiaUFnSUNCMGFHbHpMbDl3WVhKbGJuUWdQU0IxYm1SbFptbHVaV1E3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1UzVmljMk55YVdKbElIUnZJSFJvWlNCelkyVnVaU0J6ZEdGMFpTQnpkV0pxWldOMFhHNGdJQ0FxS2k5Y2JpQWdjSFZpYkdsaklITjFZbk5qY21saVpWUnZVM1JoZEdVb2FHRnVaR3hsY2pvZ1UyTmxibVZUZEdGMFpVTm9ZVzVuWldSSVlXNWtiR1Z5UEZSVGRHRjBaVDRwT2lCVmJuTjFZbk5qY21saVlXSnNaU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJWMlpXNTBjeUV1YzNWaWMyTnlhV0psS0ZOalpXNWxUMkpxWldOMFUzUmhkR1ZEYUdGdVoyVmtSWFpsYm5Rc0lDaGxkbVZ1ZENrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0dWMlpXNTBMbkJoZVd4dllXUXVZMmhoYm1kbFpFOWlhbVZqZENBOVBUMGdkR2hwY3lrZ2UxeHVJQ0FnSUNBZ0lDQm9ZVzVrYkdWeUtHVjJaVzUwTG5CaGVXeHZZV1F1Ym1WM1UzUmhkR1VnWVhNZ1ZGTjBZWFJsTENCbGRtVnVkQzV3WVhsc2IyRmtMbkJ5WlhaVGRHRjBaU0JoY3lCVVUzUmhkR1VwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlGTjFZbk5qY21saVpTQjBieUIwYUdVZ2MyTmxibVVnWlhabGJuUmNiaUFnSUNvcUwxeHVJQ0J3ZFdKc2FXTWdjM1ZpYzJOeWFXSmxWRzlGZG1WdWREeFVJR1Y0ZEdWdVpITWdRblZ6UlhabGJuUStLR1YyWlc1MFZIbHdaVG9nUW5WelJYWmxiblJVZVhCbFBGUStMQ0JvWVc1a2JHVnlPaUJDZFhORmRtVnVkRWhoYm1Sc1pYSThWRDRwT2lCVmJuTjFZbk5qY21saVlXSnNaU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDJWMlpXNTBjeUV1YzNWaWMyTnlhV0psS0dWMlpXNTBWSGx3WlN3Z2FHRnVaR3hsY2lrN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2MyVjBVM1JoZEdVb2RYQmtZWFJsT2lCUVlYSjBhV0ZzUEZSVGRHRjBaVDRwSUh0Y2JpQWdJQ0JqYjI1emRDQndjbVYyVTNSaGRHVWdQU0IwYUdsekxsOXpkR0YwWlR0Y2JpQWdJQ0JqYjI1emRDQnVaWGRUZEdGMFpUb2dWRk4wWVhSbElEMGdlMXh1SUNBZ0lDQWdMaTR1ZEdocGN5NWZjM1JoZEdVc1hHNGdJQ0FnSUNBdUxpNTFjR1JoZEdVc1hHNGdJQ0FnZlR0Y2JseHVJQ0FnSUhSb2FYTXVYM04wWVhSbElEMGdUMkpxWldOMExtWnlaV1Y2WlNodVpYZFRkR0YwWlNrN1hHNGdJQ0FnZEdocGN5NWZjMlYwVUdGeVpXNTBLSFZ3WkdGMFpTazdYRzVjYmlBZ0lDQXZMeUJJWVc1a2JHVnpJR05oYzJWeklIZG9aVzRnSkdSaGRHRXNJQ1IwYVcxbFVtRnVaMlVzSUc5eUlDUjJZWEpwWVdKc1pYTWdZWEpsSUdOb1lXNW5aV1JjYmlBZ0lDQjBhR2x6TGw5b1lXNWtiR1ZCWTNScGRtRjBhVzl1VDJaRGFHRnVaMlZrVTNSaGRHVlFjbTl3Y3lod2NtVjJVM1JoZEdVc0lHNWxkMU4wWVhSbEtUdGNibHh1SUNBZ0lDOHZJRUoxWW1Kc1pTQnpkR0YwWlNCamFHRnVaMlVnWlhabGJuUXVJRlJvYVhNZ2FYTWdaWFpsYm5RZ2FYTWdjM1ZpYzJOeWFXSmxaQ0IwYnlCaWVTQlZjbXhUZVc1alRXRnVZV2RsY2lCaGJtUWdWVzVrYjAxaGJtRm5aWEpjYmlBZ0lDQjBhR2x6TG5CMVlteHBjMmhGZG1WdWRDaGNiaUFnSUNBZ0lHNWxkeUJUWTJWdVpVOWlhbVZqZEZOMFlYUmxRMmhoYm1kbFpFVjJaVzUwS0h0Y2JpQWdJQ0FnSUNBZ2NISmxkbE4wWVhSbExGeHVJQ0FnSUNBZ0lDQnVaWGRUZEdGMFpTeGNiaUFnSUNBZ0lDQWdjR0Z5ZEdsaGJGVndaR0YwWlRvZ2RYQmtZWFJsTEZ4dUlDQWdJQ0FnSUNCamFHRnVaMlZrVDJKcVpXTjBPaUIwYUdsekxGeHVJQ0FnSUNBZ2ZTa3NYRzRnSUNBZ0lDQjBjblZsWEc0Z0lDQWdLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCVWFHbHpJR2hoYm1Sc1pYTWdZV04wYVhaaGRHbHZiaUJoYm1RZ1pHVmhZM1JwZG1GMGFXOXVJRzltSUNSa1lYUmhMQ0FrZEdsdFpWSmhibWRsSUdGdVpDQWtkbUZ5YVdGaWJHVnpJSGRvWlc0Z2RHaGxlU0JqYUdGdVoyVmNiaUFnSUNvZ1pIVnlhVzVuSUhSb1pTQmhZM1JwZG1VZ2NHaGhjMlVnYjJZZ2RHaGxJSE5qWlc1bElHOWlhbVZqZEM1Y2JpQWdJQ292WEc0Z0lIQnlhWFpoZEdVZ1gyaGhibVJzWlVGamRHbDJZWFJwYjI1UFprTm9ZVzVuWldSVGRHRjBaVkJ5YjNCektIQnlaWFpUZEdGMFpUb2dWRk4wWVhSbExDQnVaWGRUZEdGMFpUb2dWRk4wWVhSbEtTQjdYRzRnSUNBZ2FXWWdLQ0YwYUdsekxtbHpRV04wYVhabEtTQjdYRzRnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tIQnlaWFpUZEdGMFpTNGtZbVZvWVhacGIzSnpJQ0U5UFNCdVpYZFRkR0YwWlM0a1ltVm9ZWFpwYjNKektTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5b1lXNWtiR1ZEYUdGdVoyVmtRbVZvWVhacGIzSnpLSEJ5WlhaVGRHRjBaUzRrWW1Wb1lYWnBiM0p6TENCdVpYZFRkR0YwWlM0a1ltVm9ZWFpwYjNKektUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9jSEpsZGxOMFlYUmxMaVJrWVhSaElDRTlQU0J1WlhkVGRHRjBaUzRrWkdGMFlTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZmFHRnVaR3hsUTJoaGJtZGxaRk4wWVhSbFFXTjBhWFpoZEdsdmJpaHdjbVYyVTNSaGRHVXVKR1JoZEdFc0lHNWxkMU4wWVhSbExpUmtZWFJoS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb2NISmxkbE4wWVhSbExpUjJZWEpwWVdKc1pYTWdJVDA5SUc1bGQxTjBZWFJsTGlSMllYSnBZV0pzWlhNcElIdGNiaUFnSUNBZ0lIUm9hWE11WDJoaGJtUnNaVU5vWVc1blpXUlRkR0YwWlVGamRHbDJZWFJwYjI0b2NISmxkbE4wWVhSbExpUjJZWEpwWVdKc1pYTXNJRzVsZDFOMFlYUmxMaVIyWVhKcFlXSnNaWE1wTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNod2NtVjJVM1JoZEdVdUpIUnBiV1ZTWVc1blpTQWhQVDBnYm1WM1UzUmhkR1V1SkhScGJXVlNZVzVuWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYUdGdVpHeGxRMmhoYm1kbFpGTjBZWFJsUVdOMGFYWmhkR2x2Ymlod2NtVjJVM1JoZEdVdUpIUnBiV1ZTWVc1blpTd2dibVYzVTNSaGRHVXVKSFJwYldWU1lXNW5aU2s3WEc0Z0lDQWdmVnh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmYUdGdVpHeGxRMmhoYm1kbFpGTjBZWFJsUVdOMGFYWmhkR2x2YmlodmJHUldZV3gxWlRvZ1UyTmxibVZQWW1wbFkzUWdmQ0IxYm1SbFptbHVaV1FzSUc1bGQxWmhiSFZsT2lCVFkyVnVaVTlpYW1WamRDQjhJSFZ1WkdWbWFXNWxaQ2tnZTF4dUlDQWdJR2xtSUNodmJHUldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkdWaFkzUnBkbUYwYVc5dVNHRnVaR3hsY2lBOUlIUm9hWE11WDJSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtZGxkQ2h2YkdSV1lXeDFaU2s3WEc0Z0lDQWdJQ0JwWmlBb1pHVmhZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpa2dlMXh1SUNBZ0lDQWdJQ0JrWldGamRHbDJZWFJwYjI1SVlXNWtiR1Z5S0NrN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDJSbFlXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtUmxiR1YwWlNodmJHUldZV3gxWlNrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tHNWxkMVpoYkhWbEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NXpaWFFvYm1WM1ZtRnNkV1VzSUc1bGQxWmhiSFZsTG1GamRHbDJZWFJsS0NrcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lIQnlhWFpoZEdVZ1gyaGhibVJzWlVOb1lXNW5aV1JDWldoaGRtbHZjbk1vWEc0Z0lDQWdiMnhrVm1Gc2RXVTZJRUZ5Y21GNVBGTmpaVzVsVDJKcVpXTjBJSHdnVTJObGJtVlRkR0YwWld4bGMzTkNaV2hoZG1sdmNqNGdmQ0IxYm1SbFptbHVaV1FzWEc0Z0lDQWdibVYzVm1Gc2RXVTZJRUZ5Y21GNVBGTmpaVzVsVDJKcVpXTjBJSHdnVTJObGJtVlRkR0YwWld4bGMzTkNaV2hoZG1sdmNqNGdmQ0IxYm1SbFptbHVaV1JjYmlBZ0tTQjdYRzRnSUNBZ0x5OGdTR0Z1Wkd4bElISmxiVzkyWldRZ1ltVm9ZWFpwYjNKelhHNGdJQ0FnYVdZZ0tHOXNaRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0dOdmJuTjBJRzlzWkVKbGFHRjJhVzl5SUc5bUlHOXNaRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNnaGJtVjNWbUZzZFdVZ2ZId2dJVzVsZDFaaGJIVmxMbWx1WTJ4MVpHVnpLRzlzWkVKbGFHRjJhVzl5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHUmxZV04wYVhaaGRHbHZia2hoYm1Sc1pYSWdQU0IwYUdsekxsOWtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnljeTVuWlhRb2IyeGtRbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdJQ0FnSUdsbUlDaGtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnlLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQmtaV0ZqZEdsMllYUnBiMjVJWVc1a2JHVnlLQ2s3WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NWtaV3hsZEdVb2IyeGtRbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFaGhibVJzWlNCdVpYY2dZbVZvWVhacGIzSnpYRzRnSUNBZ2FXWWdLRzVsZDFaaGJIVmxLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHTnZibk4wSUc1bGQwSmxhR0YyYVc5eUlHOW1JRzVsZDFaaGJIVmxLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDZ2hiMnhrVm1Gc2RXVWdmSHdnSVc5c1pGWmhiSFZsTG1sdVkyeDFaR1Z6S0c1bGQwSmxhR0YyYVc5eUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ibVYzUW1Wb1lYWnBiM0lwTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQjlYRzVjYmlBZ0x5cGNiaUFnSUNvZ1VIVmliR2x6YUNCaGJpQmxkbVZ1ZENCaGJtUWdiM0IwYVc5dVlXeHNlU0JpZFdKaWJHVWdhWFFnZFhBZ2RHaGxJSE5qWlc1bFhHNGdJQ0FxS2k5Y2JpQWdjSFZpYkdsaklIQjFZbXhwYzJoRmRtVnVkQ2hsZG1WdWREb2dRblZ6UlhabGJuUXNJR0oxWW1Kc1pUODZJR0p2YjJ4bFlXNHBJSHRjYmlBZ0lDQjBhR2x6TGw5bGRtVnVkSE1oTG5CMVlteHBjMmdvWlhabGJuUXBPMXh1WEc0Z0lDQWdhV1lnS0dKMVltSnNaU0FtSmlCMGFHbHpMbkJoY21WdWRDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1d1lYSmxiblF1Y0hWaWJHbHphRVYyWlc1MEtHVjJaVzUwTENCaWRXSmliR1VwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJuWlhSU2IyOTBLQ2s2SUZOalpXNWxUMkpxWldOMElIdGNiaUFnSUNCeVpYUjFjbTRnSVhSb2FYTXVYM0JoY21WdWRDQS9JSFJvYVhNZ09pQjBhR2x6TGw5d1lYSmxiblF1WjJWMFVtOXZkQ2dwTzF4dUlDQjlYRzVjYmlBZ2NISnBkbUYwWlNCZmFXNTBaWEp1WVd4QlkzUnBkbUYwWlNncElIdGNiaUFnSUNCMGFHbHpMbDlwYzBGamRHbDJaU0E5SUhSeWRXVTdYRzVjYmlBZ0lDQmpiMjV6ZENCN0lDUmtZWFJoTENBa2RtRnlhV0ZpYkdWekxDQWtkR2x0WlZKaGJtZGxMQ0FrWW1Wb1lYWnBiM0p6SUgwZ1BTQjBhR2x6TG5OMFlYUmxPMXh1WEc0Z0lDQWdkR2hwY3k1ZllXTjBhWFpoZEdsdmJraGhibVJzWlhKekxtWnZja1ZoWTJnb0tHaGhibVJzWlhJcElEMCtJSHRjYmlBZ0lDQWdJR052Ym5OMElISmxjM1ZzZENBOUlHaGhibVJzWlhJb0tUdGNiaUFnSUNBZ0lHbG1JQ2h5WlhOMWJIUXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtISmxjM1ZzZEN3Z2NtVnpkV3gwS1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5S1R0Y2JseHVJQ0FnSUdsbUlDZ2tkR2x0WlZKaGJtZGxJQ1ltSUNFa2RHbHRaVkpoYm1kbExtbHpRV04wYVhabEtTQjdYRzRnSUNBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NXpaWFFvSkhScGJXVlNZVzVuWlN3Z0pIUnBiV1ZTWVc1blpTNWhZM1JwZG1GMFpTZ3BLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnBaaUFvSkhaaGNtbGhZbXhsY3lBbUppQWhKSFpoY21saFlteGxjeTVwYzBGamRHbDJaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtDUjJZWEpwWVdKc1pYTXNJQ1IyWVhKcFlXSnNaWE11WVdOMGFYWmhkR1VvS1NrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnYVdZZ0tDUmtZWFJoSUNZbUlDRWtaR0YwWVM1cGMwRmpkR2wyWlNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmWkdWaFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NdWMyVjBLQ1JrWVhSaExDQWtaR0YwWVM1aFkzUnBkbUYwWlNncEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCcFppQW9KR0psYUdGMmFXOXljeWtnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCaVpXaGhkbWx2Y2lCdlppQWtZbVZvWVhacGIzSnpLU0I3WEc0Z0lDQWdJQ0FnSUhSb2FYTXVYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ZbVZvWVhacGIzSXBPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJSEJ5YVhaaGRHVWdYMkZqZEdsMllYUmxRbVZvWVhacGIzSW9ZbVZvWVhacGIzSTZJRk5qWlc1bFQySnFaV04wSUh3Z1UyTmxibVZUZEdGMFpXeGxjM05DWldoaGRtbHZjaWs2SUZOalpXNWxSR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjaUI4SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2hpWldoaGRtbHZjaUJwYm5OMFlXNWpaVzltSUZOalpXNWxUMkpxWldOMFFtRnpaU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtHSmxhR0YyYVc5eUxDQmlaV2hoZG1sdmNpNWhZM1JwZG1GMFpTZ3BLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2FXWWdLSFI1Y0dWdlppQmlaV2hoZG1sdmNpQTlQVDBnSjJaMWJtTjBhVzl1SnlrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnWkdWaFkzUnBkbUYwWlNBOUlHSmxhR0YyYVc5eUtIUm9hWE1wTzF4dUlDQWdJQ0FnYVdZZ0tHUmxZV04wYVhaaGRHVXBJSHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR1ZoWTNScGRtRjBhVzl1U0dGdVpHeGxjbk11YzJWMEtHSmxhR0YyYVc5eUxDQmtaV0ZqZEdsMllYUmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVkdocGN5QnBjeUJ3Y21sdFlYSnBiSGtnWTJGc2JHVmtJR1p5YjIwZ1UyTmxibVZEYjIxd2IyNWxiblJYY21Gd2NHVnlJSGRvWlc0Z2RHaGxJRk5qWlc1bFQySnFaV04wSjNNZ1EyOXRjRzl1Wlc1MElHbHpJRzF2ZFc1MFpXUXVYRzRnSUNBcUlFSjFkQ0JwYmlCemIyMWxJSE5qWlc1aGNtbHZjeUIwYUdseklHTmhiaUJoYkhOdklHSmxJR05oYkd4bFpDQmthWEpsWTNSc2VTQm1jbTl0SUdGdWIzUm9aWElnYzJObGJtVWdiMkpxWldOMExpQlhhR1Z1SUdOaGJHeGxaQ0J0WVc1MVlXeHNlU0JtY205dElHRnViM1JvWlhJZ2MyTmxibVVnYjJKcVpXTjBYRzRnSUNBcUlHMWhhMlVnYzNWeVpTQjBieUJqWVd4c0lIUm9aU0J5WlhSMWNtNWxaQ0JtZFc1amRHbHZiaUIzYUdWdUlIUm9aU0J6YjNWeVkyVWdjMk5sYm1VZ2IySnFaV04wSUdseklHUmxZV04wYVhaaGRHVmtMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR0ZqZEdsMllYUmxLQ2s2SUVOaGJtTmxiRUZqZEdsMllYUnBiMjVJWVc1a2JHVnlJSHRjYmlBZ0lDQnBaaUFvSVhSb2FYTXVhWE5CWTNScGRtVXBJSHRjYmlBZ0lDQWdJSFJvYVhNdVgybHVkR1Z5Ym1Gc1FXTjBhWFpoZEdVb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbDl5WldaRGIzVnVkQ3NyTzF4dVhHNGdJQ0FnYkdWMElHTmhiR3hsWkNBOUlHWmhiSE5sTzF4dVhHNGdJQ0FnY21WMGRYSnVJQ2dwSUQwK0lIdGNiaUFnSUNBZ0lIUm9hWE11WDNKbFprTnZkVzUwTFMwN1hHNWNiaUFnSUNBZ0lHbG1JQ2hqWVd4c1pXUXBJSHRjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdiWE5uSUQwZ1lGTmpaVzVsVDJKcVpXTjBJR05oYm1ObGJHRjBhVzl1SUdoaGJtUnNaWElnY21WMGRYSnVaV1FnWW5rZ1lXTjBhWFpoZEdVb0tTQmpZV3hzWldRZ1lTQnpaV052Ym1RZ2RHbHRaV0E3WEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWh0YzJjcE8xeHVJQ0FnSUNBZ2ZWeHVYRzRnSUNBZ0lDQmpZV3hzWldRZ1BTQjBjblZsTzF4dVhHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZmNtVm1RMjkxYm5RZ1BUMDlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmYVc1MFpYSnVZV3hFWldGamRHbDJZWFJsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkRZV3hzWldRZ1lua2dkR2hsSUZOalpXNWxRMjl0Y0c5dVpXNTBWM0poY0hCbGNpQjNhR1Z1SUhSb1pTQnlaV0ZqZENCamIyMXdiMjVsYm5RZ2FYTWdkVzV0YjNWdWRHVmtMbHh1SUNBZ0tpQkViMjRuZENCdmRtVnljbWxrWlNCMGFHbHpMQ0JwYm5OMFpXRmtJSFZ6WlNCaFpHUkJZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpNGdWR2hsSUdGamRHbDJZWFJwYjI0Z2FHRnVaR3hsY2lCallXNGdjbVYwZFhKdUlHRWdaR1ZoWTNScGRtRjBhVzl1SUdoaGJtUnNaWEl1WEc0Z0lDQXFMMXh1SUNCd2NtbDJZWFJsSUY5cGJuUmxjbTVoYkVSbFlXTjBhWFpoZEdVb0tUb2dkbTlwWkNCN1hHNGdJQ0FnZEdocGN5NWZhWE5CWTNScGRtVWdQU0JtWVd4elpUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHaGhibVJzWlhJZ2IyWWdkR2hwY3k1ZlpHVmhZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNuTXVkbUZzZFdWektDa3BJSHRjYmlBZ0lDQWdJR2hoYm1Sc1pYSW9LVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TGw5a1pXRmpkR2wyWVhScGIyNUlZVzVrYkdWeWN5NWpiR1ZoY2lncE8xeHVYRzRnSUNBZ0x5OGdRMnhsWVhJZ2MzVmljMk55YVhCMGFXOXVjeUJoYm1RZ2JHbHpkR1Z1WlhKelhHNGdJQ0FnZEdocGN5NWZaWFpsYm5SeklTNXlaVzF2ZG1WQmJHeE1hWE4wWlc1bGNuTW9LVHRjYmlBZ0lDQjBhR2x6TGw5emRXSnpMblZ1YzNWaWMyTnlhV0psS0NrN1hHNGdJQ0FnZEdocGN5NWZjM1ZpY3lBOUlHNWxkeUJUZFdKelkzSnBjSFJwYjI0b0tUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJWZEdsc2FYUjVJR2h2YjJzZ2RHOGdaMlYwSUdGdVpDQnpkV0p6WTNKcFltVWdkRzhnYzNSaGRHVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjFjMlZUZEdGMFpTZ3BPaUJVVTNSaGRHVWdlMXh1SUNBZ0lDOHZJR1Z6YkdsdWRDMWthWE5oWW14bExXNWxlSFF0YkdsdVpTQnlaV0ZqZEMxb2IyOXJjeTl5ZFd4bGN5MXZaaTFvYjI5cmMxeHVJQ0FnSUhKbGRIVnliaUIxYzJWVFkyVnVaVTlpYW1WamRGTjBZWFJsS0hSb2FYTXBPMXh1SUNCOVhHNWNiaUFnTHlvcUlFWnZjbU5sSUdFZ2NtVXRjbVZ1WkdWeUxDQnphRzkxYkdRZ2IyNXNlU0JpWlNCdVpXVmtaV1FnZDJobGJpQjJZWEpwWVdKc1pTQjJZV3gxWlhNZ1kyaGhibWRsSUNvdlhHNGdJSEIxWW14cFl5Qm1iM0pqWlZKbGJtUmxjaWdwT2lCMmIybGtJSHRjYmlBZ0lDQjBhR2x6TG5ObGRGTjBZWFJsS0h0OUtUdGNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJYYVd4c0lHTnlaV0YwWlNCdVpYY2dVMk5sYm1WUFltcGxZM1FnZDJsMGFDQnphR0ZzYkc5M0xXTnNiMjVsWkNCemRHRjBaU3dnWW5WMElHRnNiQ0J6ZEdGMFpTQnBkR1Z0Y3lCdlppQjBlWEJsSUZOalpXNWxUMkpxWldOMElHRnlaU0JrWldWd0lHTnNiMjVsWkZ4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdOc2IyNWxLSGRwZEdoVGRHRjBaVDg2SUZCaGNuUnBZV3c4VkZOMFlYUmxQaWs2SUhSb2FYTWdlMXh1SUNBZ0lISmxkSFZ5YmlCamJHOXVaVk5qWlc1bFQySnFaV04wS0hSb2FYTXNJSGRwZEdoVGRHRjBaU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1FXeHNiM2R6SUdWNGRHVnlibUZzSUdOdlpHVWdkRzhnY21WbmFYTjBaWElnWTI5a1pTQjBhR0YwSUdseklHVjRaV04xZEdWa0lHOXVJR0ZqZEdsMllYUmxJR0Z1WkNCa1pXRmpkR2wyWVhSbExpQlVhR2x6SUdGc2JHOTNJSGx2ZFZ4dUlDQWdLaUIwYnlCM2FYSmxJSFZ3SUhOalpXNWxJRzlpYW1WamRITWdkR2hoZENCdVpXVmtJSFJ2SUhKbGMzQnZibVFnZEc4Z2MzUmhkR1VnWTJoaGJtZGxjeUJwYmlCdmRHaGxjaUJ2WW1wbFkzUnpJR1p5YjIwZ2RHaGxJRzkxZEhOcFpHVXVYRzRnSUNBcUtpOWNiaUFnY0hWaWJHbGpJR0ZrWkVGamRHbDJZWFJwYjI1SVlXNWtiR1Z5S0doaGJtUnNaWEk2SUZOalpXNWxRV04wYVhaaGRHbHZia2hoYm1Sc1pYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5aFkzUnBkbUYwYVc5dVNHRnVaR3hsY25NdWNIVnphQ2hvWVc1a2JHVnlLVHRjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCTWIyOXdJSFJvY205MVoyZ2djM1JoZEdVZ1lXNWtJR05oYkd3Z1kyRnNiR0poWTJzZ1ptOXlJR1ZoWTJnZ1pHbHlaV04wSUdOb2FXeGtJSE5qWlc1bElHOWlhbVZqZEM1Y2JpQWdJQ29nUTJobFkydHpJREVnYkdWMlpXd2daR1ZsY0NCd2NtOXdaWEowYVdWeklHRnVaQ0JoY25KaGVYTXVJRk52SUdFZ2MyTmxibVVnYjJKcVpXTjBJR2hwWkdSbGJpQnBiaUJoSUc1bGMzUmxaQ0J3YkdGcGJpQnZZbXBsWTNRZ2QybHNiQ0J1YjNRZ1ltVWdaR1YwWldOMFpXUXVYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdabTl5UldGamFFTm9hV3hrS0dOaGJHeGlZV05yT2lBb1kyaHBiR1E2SUZOalpXNWxUMkpxWldOMFFtRnpaU2tnUFQ0Z2RtOXBaQ2tnZTF4dUlDQWdJR1p2Y2tWaFkyaERhR2xzWkNoMGFHbHpMbk4wWVhSbExDQmpZV3hzWW1GamF5azdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCaElGTmpaVzVsVDJKcVpXTjBVbVZtSUhSb1lYUWdkMmxzYkNCeVpYTnZiSFpsSUhSdklIUm9hWE1nYjJKcVpXTjBJQ292WEc0Z0lIQjFZbXhwWXlCblpYUlNaV1lvS1RvZ1UyTmxibVZQWW1wbFkzUlNaV1k4ZEdocGN6NGdlMXh1SUNBZ0lHbG1JQ2doZEdocGN5NWZjbVZtS1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl5WldZZ1BTQnVaWGNnVTJObGJtVlBZbXBsWTNSU1pXWW9kR2hwY3lrN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVgzSmxaanRjYmlBZ2ZWeHVmVnh1WEc0dktpcGNiaUFxSUZSb2FYTWdhRzl2YXlCcGN5QmhiSGRoZVhNZ2NtVjBkWEp1YVc1bklHMXZaR1ZzTG5OMFlYUmxJR2x1YzNSbFlXUWdiMllnWVNCMWMyVlRkR0YwWlNCMGFHRjBJSEpsYldWdFltVnljeUIwYUdVZ2JHRnpkQ0J6ZEdGMFpTQmxiV2wwZEdWa0lHOXVJSFJvWlNCemRXSnFaV04wWEc0Z0tpQlVhR1VnY21WaGMyOXVJR1p2Y2lCMGFHbHpJR2x6SUhOdklIUm9ZWFFnYVdZZ2RHaGxJRzF2WkdWc0lHbHVjM1JoYm1ObElHTm9ZVzVuWlNCMGFHbHpJR1oxYm1OMGFXOXVJSGRwYkd3Z1lXeDNZWGx6SUhKbGRIVnliaUIwYUdVZ2JHRjBaWE4wSUhOMFlYUmxMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2RYTmxVMk5sYm1WUFltcGxZM1JUZEdGMFpUeFVVM1JoZEdVZ1pYaDBaVzVrY3lCVFkyVnVaVTlpYW1WamRGTjBZWFJsUGloY2JpQWdiVzlrWld3NklGTmpaVzVsVDJKcVpXTjBQRlJUZEdGMFpUNHNYRzRnSUc5d2RHbHZibk0vT2lCVmMyVlRkR0YwWlVodmIydFBjSFJwYjI1elhHNHBPaUJVVTNSaGRHVWdlMXh1SUNCamIyNXpkQ0JiWHl3Z2MyVjBVM1JoZEdWZElEMGdkWE5sVTNSaGRHVThWRk4wWVhSbFBpaHRiMlJsYkM1emRHRjBaU2s3WEc0Z0lHTnZibk4wSUhOMFlYUmxRWFJHYVhKemRGSmxibVJsY2lBOUlHMXZaR1ZzTG5OMFlYUmxPMXh1SUNCamIyNXpkQ0J6YUc5MWJHUkJZM1JwZG1GMFpVOXlTMlZsY0VGc2FYWmxJRDBnYjNCMGFXOXVjejh1YzJodmRXeGtRV04wYVhaaGRHVlBja3RsWlhCQmJHbDJaU0EvUHlCbVlXeHpaVHRjYmx4dUlDQjFjMlZGWm1abFkzUW9LQ2tnUFQ0Z2UxeHVJQ0FnSUd4bGRDQjFibUZqZEdsMllYUmxPaUJEWVc1alpXeEJZM1JwZG1GMGFXOXVTR0Z1Wkd4bGNpQjhJSFZ1WkdWbWFXNWxaRHRjYmx4dUlDQWdJR2xtSUNoemFHOTFiR1JCWTNScGRtRjBaVTl5UzJWbGNFRnNhWFpsS1NCN1hHNGdJQ0FnSUNCMWJtRmpkR2wyWVhSbElEMGdiVzlrWld3dVlXTjBhWFpoZEdVb0tUdGNiaUFnSUNCOVhHNWNiaUFnSUNCamIyNXpkQ0J6SUQwZ2JXOWtaV3d1YzNWaWMyTnlhV0psVkc5VGRHRjBaU2dvYzNSaGRHVXBJRDArSUh0Y2JpQWdJQ0FnSUhObGRGTjBZWFJsS0hOMFlYUmxLVHRjYmlBZ0lDQjlLVHRjYmx4dUlDQWdJQzh2SUZKbExYSmxibVJsY2lCamIyMXdiMjVsYm5RZ2FXWWdkR2hsSUhOMFlYUmxJR05vWVc1blpXUWdZbVYwZDJWbGJpQm1hWEp6ZENCeVpXNWtaWElnWVc1a0lIVnpaVVZtWm1WamRDQW9iVzkxYm5RcFhHNGdJQ0FnYVdZZ0tHMXZaR1ZzTG5OMFlYUmxJQ0U5UFNCemRHRjBaVUYwUm1seWMzUlNaVzVrWlhJcElIdGNiaUFnSUNBZ0lITmxkRk4wWVhSbEtHMXZaR1ZzTG5OMFlYUmxLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQnlaWFIxY200Z0tDa2dQVDRnZTF4dUlDQWdJQ0FnY3k1MWJuTjFZbk5qY21saVpTZ3BPMXh1WEc0Z0lDQWdJQ0JwWmlBb2RXNWhZM1JwZG1GMFpTa2dlMXh1SUNBZ0lDQWdJQ0IxYm1GamRHbDJZWFJsS0NrN1hHNGdJQ0FnSUNCOVhHNGdJQ0FnZlR0Y2JpQWdJQ0F2THlCbGMyeHBiblF0WkdsellXSnNaUzF1WlhoMExXeHBibVVnY21WaFkzUXRhRzl2YTNNdlpYaG9ZWFZ6ZEdsMlpTMWtaWEJ6WEc0Z0lIMHNJRnR0YjJSbGJDd2djMmh2ZFd4a1FXTjBhWFpoZEdWUGNrdGxaWEJCYkdsMlpWMHBPMXh1WEc0Z0lISmxkSFZ5YmlCdGIyUmxiQzV6ZEdGMFpUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1ptOXlSV0ZqYUVOb2FXeGtQRlFnWlhoMFpXNWtjeUJ2WW1wbFkzUStLSE4wWVhSbE9pQlVMQ0JqWVd4c1ltRmphem9nS0dOb2FXeGtPaUJUWTJWdVpVOWlhbVZqZEVKaGMyVXBJRDArSUhadmFXUXBJSHRjYmlBZ1ptOXlJQ2hqYjI1emRDQndjbTl3Vm1Gc2RXVWdiMllnVDJKcVpXTjBMblpoYkhWbGN5aHpkR0YwWlNrcElIdGNiaUFnSUNCcFppQW9jSEp2Y0ZaaGJIVmxJR2x1YzNSaGJtTmxiMllnVTJObGJtVlBZbXBsWTNSQ1lYTmxLU0I3WEc0Z0lDQWdJQ0JqWVd4c1ltRmpheWh3Y205d1ZtRnNkV1VwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoQmNuSmhlUzVwYzBGeWNtRjVLSEJ5YjNCV1lXeDFaU2twSUh0Y2JpQWdJQ0FnSUdadmNpQW9ZMjl1YzNRZ1kyaHBiR1FnYjJZZ2NISnZjRlpoYkhWbEtTQjdYRzRnSUNBZ0lDQWdJR2xtSUNoamFHbHNaQ0JwYm5OMFlXNWpaVzltSUZOalpXNWxUMkpxWldOMFFtRnpaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTmhiR3hpWVdOcktHTm9hV3hrS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdmVnh1ZlZ4dUlsMHNJbTVoYldWeklqcGJJblYxYVdSMk5DSmRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenRCUVhkQ1R5eE5RVUZsTEdWQlJYUkNMRU5CUVVFN1FVRkJRU3hGUVdkQ1V5eFpRVUZaTEV0QlFXVXNSVUZCUVR0QlFXWnNReXhKUVVGQkxFbEJRVUVzUTBGQlVTeFRRVUZaTEVkQlFVRXNTMEZCUVN4RFFVRkJPMEZCUlhCQ0xFbEJRVUVzU1VGQlFTeERRVUZSTEhOQ1FVRm5SQ3hGUVVGRExFTkJRVUU3UVVGRGVrUXNTVUZCVVN4SlFVRkJMRU5CUVVFc2NVSkJRVUVzZFVKQlFUUkNMRWRCUVhORExFVkJRVUVzUTBGQlFUdEJRVXN4UlN4SlFVRlZMRWxCUVVFc1EwRkJRU3hMUVVGQkxFZEJRVkVzU1VGQlNTeFpRVUZoTEVWQlFVRXNRMEZCUVR0QlFVTnVReXhKUVVGQkxFbEJRVUVzUTBGQlZTeFRRVUZaTEVkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUTNSQ0xFbEJRVUVzU1VGQlFTeERRVUZWTEhWQ1FVRXdRaXhIUVVGQkxFdEJRVUVzUTBGQlFUdEJRVTFzUXl4SlFVRkpMRWxCUVVFc1EwRkJReXhOUVVGTkxFZEJRVXNzUlVGQlFUdEJRVU5rTEUxQlFVRXNTMEZCUVN4RFFVRk5MRTFCUVUxQkxFVkJRVThzUlVGQlFTeERRVUZCTzBGQlFVRXNTMEZEY2tJN1FVRkZRU3hKUVVGTExFbEJRVUVzUTBGQlFTeFBRVUZCTEVkQlFWVXNTVUZCU1N4WFFVRlpMRVZCUVVFc1EwRkJRVHRCUVVVdlFpeEpRVUZMTEVsQlFVRXNRMEZCUVN4TlFVRkJMRWRCUVZNc1RVRkJUeXhEUVVGQkxFMUJRVUVzUTBGQlR5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTnFReXhKUVVGTExFbEJRVUVzUTBGQlFTeFZRVUZCTEVOQlFWY3NTMEZCU3l4TlFVRk5MRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRemRDTzBGQlFVRXNSVUZIUVN4SlFVRlhMRXRCUVdkQ0xFZEJRVUU3UVVGRGVrSXNTVUZCUVN4UFFVRlBMRWxCUVVzc1EwRkJRU3hOUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5rTzBGQlFVRXNSVUZIUVN4SlFVRlhMRkZCUVc5Q0xFZEJRVUU3UVVGRE4wSXNTVUZCUVN4UFFVRlBMRWxCUVVzc1EwRkJRU3hUUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5rTzBGQlFVRXNSVUZGUVN4SlFVRlhMSE5DUVVGclF5eEhRVUZCTzBGQlF6TkRMRWxCUVVFc1QwRkJUeXhKUVVGTExFTkJRVUVzZFVKQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJRN1FVRkJRU3hGUVVkQkxFbEJRVmNzVFVGQmEwTXNSMEZCUVR0QlFVTXpReXhKUVVGQkxFOUJRVThzU1VGQlN5eERRVUZCTEU5QlFVRXNRMEZCUVR0QlFVRkJMRWRCUTJRN1FVRkJRU3hGUVVkQkxFbEJRVmNzYTBKQlFXOUZMRWRCUVVFN1FVRkROMFVzU1VGQlFTeFBRVUZQTEVsQlFVc3NRMEZCUVN4dFFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFpEdEJRVUZCTEVWQlIwRXNTVUZCVnl4UFFVRnBSQ3hIUVVGQk8wRkJRekZFTEVsQlFVRXNUMEZCVHl4SlFVRkxMRU5CUVVFc1VVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFpEdEJRVUZCTEVWQlRVRXNTVUZCVnl4VFFVRnJReXhIUVVGQk8wRkJRek5ETEVsQlFVOHNUMEZCUVN4eFFrRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVUZCTEVWQlJWRXNWMEZCVnl4TFFVRjNRaXhGUVVGQk8wRkJRM3BETEVsQlFXRXNXVUZCUVN4RFFVRkJMRXRCUVVFc1JVRkJUeXhEUVVGRExFdEJRVlVzUzBGQlFUdEJRVVUzUWl4TlFVRkJMRWxCUVVrc1MwRkJUU3hEUVVGQkxFOUJRVUVzU1VGQlZ5eExRVUZOTEVOQlFVRXNUMEZCUVN4TFFVRlpMRWxCUVUwc1JVRkJRVHRCUVVNelF5eFJRVUZSTEU5QlFVRXNRMEZCUVN4SlFVRkJPMEZCUVVFc1ZVRkRUaXh6VlVGQlFUdEJRVUZCTEZWQlEwRXNTMEZCUVR0QlFVRkJMRlZCUTBFc1NVRkJRVHRCUVVGQkxGTkJRMFlzUTBGQlFUdEJRVUZCTEU5QlEwWTdRVUZEUVN4TlFVRkJMRXRCUVVFc1EwRkJUU3hQUVVGVkxFZEJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNTMEZEYWtJc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFNEdEJRVUZCTEVWQlRVOHNWMEZCWXl4SFFVRkJPMEZCUTI1Q0xFbEJRVUVzU1VGQlFTeERRVUZMTEU5QlFWVXNSMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRMnBDTzBGQlFVRXNSVUZMVHl4cFFrRkJhVUlzVDBGQk1rUXNSVUZCUVR0QlFVTnFSaXhKUVVGQkxFOUJRVThzU1VGQlN5eERRVUZCTEU5QlFVRXNRMEZCVXl4VFFVRlZMRU5CUVVFc05FSkJRVUVzUlVGQk9FSXNRMEZCUXl4TFFVRlZMRXRCUVVFN1FVRkRkRVVzVFVGQlNTeEpRVUZCTEV0QlFVRXNRMEZCVFN4UFFVRlJMRU5CUVVFc1lVRkJRU3hMUVVGclFpeEpRVUZOTEVWQlFVRTdRVUZEZUVNc1VVRkJRU3hQUVVGQkxFTkJRVkVzUzBGQlRTeERRVUZCTEU5QlFVRXNRMEZCVVN4UlFVRnZRaXhGUVVGQkxFdEJRVUVzUTBGQlRTeFJRVUZSTEZOQlFXMUNMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRemRGTzBGQlFVRXNTMEZEUkN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOSU8wRkJRVUVzUlVGTFR5eG5Ra0ZCUVN4RFFVRnhReXhYUVVFMFFpeFBRVUUyUXl4RlFVRkJPMEZCUTI1SUxFbEJRVUVzVDBGQlR5eEpRVUZMTEVOQlFVRXNUMEZCUVN4RFFVRlRMRk5CUVZVc1EwRkJRU3hUUVVGQkxFVkJRVmNzVDBGQlR5eERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnVSRHRCUVVGQkxFVkJSVThzVTBGQlV5eE5RVUY1UWl4RlFVRkJPMEZCUTNaRExFbEJRVUVzVFVGQlRTeFpRVUZaTEVsQlFVc3NRMEZCUVN4TlFVRkJMRU5CUVVFN1FVRkRka0lzU1VGQlRTeE5RVUZCTEZGQlFVRXNSMEZCYlVJc1kwRkRjRUlzUTBGQlFTeGpRVUZCTEVOQlFVRXNSVUZCUVN4RlFVRkJMRWxCUVVFc1EwRkJTeXhOUVVOTUxFTkJRVUVzUlVGQlFTeE5RVUZCTEVOQlFVRXNRMEZCUVR0QlFVZE1MRWxCUVVzc1NVRkJRU3hEUVVGQkxFMUJRVUVzUjBGQlV5eE5RVUZQTEVOQlFVRXNUVUZCUVN4RFFVRlBMRkZCUVZFc1EwRkJRU3hEUVVGQk8wRkJRM0JETEVsQlFVRXNTVUZCUVN4RFFVRkxMRmRCUVZjc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGSGRFSXNTVUZCU3l4SlFVRkJMRU5CUVVFc2IwTkJRVUVzUTBGQmNVTXNWMEZCVnl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVjM1JDeEpRVUZMTEVsQlFVRXNRMEZCUVN4WlFVRkJPMEZCUVVFc1RVRkRTQ3hKUVVGSkxEUkNRVUUyUWl4RFFVRkJPMEZCUVVFc1VVRkRMMElzVTBGQlFUdEJRVUZCTEZGQlEwRXNVVUZCUVR0QlFVRkJMRkZCUTBFc1lVRkJaU3hGUVVGQkxFMUJRVUU3UVVGQlFTeFJRVU5tTEdGQlFXVXNSVUZCUVN4SlFVRkJPMEZCUVVFc1QwRkRhRUlzUTBGQlFUdEJRVUZCTEUxQlEwUXNTVUZCUVR0QlFVRkJMRXRCUTBZc1EwRkJRVHRCUVVGQkxFZEJRMFk3UVVGQlFTeEZRVTFSTEc5RFFVRkJMRU5CUVhGRExGZEJRVzFDTEZGQlFXdENMRVZCUVVFN1FVRkRhRVlzU1VGQlNTeEpRVUZCTEVOQlFVTXNTMEZCU3l4UlFVRlZMRVZCUVVFN1FVRkRiRUlzVFVGQlFTeFBRVUZCTzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NkVUpCUVhkQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzUzBGQlZTeExRVUZCTEZGQlFVRXNRMEZCVXl4TFFVRlBMRVZCUVVFN1FVRkRkRU1zVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEV0QlFVOHNSVUZCUVN4UlFVRkJMRU5CUVZNc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU53UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UlR0QlFVVkJMRWxCUVVrc1NVRkJRU3hUUVVGQkxFTkJRVlVzVlVGQlpTeExRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlpMRVZCUVVFN1FVRkRhRVFzVFVGQlFTeEpRVUZCTEVOQlFVc3NOa0pCUVRoQ0xFTkJRVUVzVTBGQlFTeERRVUZWTEZWQlFWa3NSVUZCUVN4UlFVRkJMRU5CUVZNc1ZVRkJWU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UlR0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUkxEWkNRVUZCTEVOQlFUaENMRlZCUVcxRExGRkJRVzFETEVWQlFVRTdRVUZETVVjc1NVRkJRU3hKUVVGSkxGRkJRVlVzUlVGQlFUdEJRVU5hTEUxQlFVRXNUVUZCVFN4dFFrRkJjMElzUjBGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzUjBGQlFTeERRVUZKTEZGQlFWRXNRMEZCUVN4RFFVRkJPMEZCUTI1RkxFMUJRVUVzU1VGQlNTeHRRa0ZCY1VJc1JVRkJRVHRCUVVOMlFpeFJRVUZ2UWl4dFFrRkJRU3hGUVVGQkxFTkJRVUU3UVVGRGNFSXNVVUZCU3l4SlFVRkJMRU5CUVVFc2NVSkJRVUVzUTBGQmMwSXNUMEZCVHl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRelZETzBGQlFVRXNTMEZEUmp0QlFVVkJMRWxCUVVFc1NVRkJTU3hSUVVGVkxFVkJRVUU3UVVGRFdpeE5RVUZCTEVsQlFVRXNRMEZCU3l4eFFrRkJjMElzUTBGQlFTeEhRVUZCTEVOQlFVa3NVVUZCVlN4RlFVRkJMRkZCUVVFc1EwRkJVeXhWUVVGVkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlF6bEVPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJSVkVzZFVKQlFVRXNRMEZEVGl4VlFVTkJMRkZCUTBFc1JVRkJRVHRCUVVWQkxFbEJRVUVzU1VGQlNTeFJRVUZWTEVWQlFVRTdRVUZEV2l4TlFVRkJMRXRCUVVFc1RVRkJWeXhsUVVGbExGRkJRVlVzUlVGQlFUdEJRVU5zUXl4UlFVRkJMRWxCUVVrc1EwRkJReXhSUVVGWkxFbEJRVUVzUTBGQlF5eFJRVUZUTEVOQlFVRXNVVUZCUVN4RFFVRlRMRmRCUVZjc1EwRkJSeXhGUVVGQk8wRkJRMmhFTEZWQlFVRXNUVUZCVFN4dFFrRkJjMElzUjBGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzUjBGQlFTeERRVUZKTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUTNSRkxGVkJRVUVzU1VGQlNTeHRRa0ZCY1VJc1JVRkJRVHRCUVVOMlFpeFpRVUZ2UWl4dFFrRkJRU3hGUVVGQkxFTkJRVUU3UVVGRGNFSXNXVUZCU3l4SlFVRkJMRU5CUVVFc2NVSkJRVUVzUTBGQmMwSXNUMEZCVHl4WFFVRlhMRU5CUVVFc1EwRkJRVHRCUVVGQkxGZEJReTlETzBGQlFVRXNVMEZEUmp0QlFVRkJMRTlCUTBZN1FVRkJRU3hMUVVOR08wRkJSMEVzU1VGQlFTeEpRVUZKTEZGQlFWVXNSVUZCUVR0QlFVTmFMRTFCUVVFc1MwRkJRU3hOUVVGWExHVkJRV1VzVVVGQlZTeEZRVUZCTzBGQlEyeERMRkZCUVVFc1NVRkJTU3hEUVVGRExGRkJRVmtzU1VGQlFTeERRVUZETEZGQlFWTXNRMEZCUVN4UlFVRkJMRU5CUVZNc1YwRkJWeXhEUVVGSExFVkJRVUU3UVVGRGFFUXNWVUZCUVN4SlFVRkJMRU5CUVVzc2EwSkJRV3RDTEZkQlFWY3NRMEZCUVN4RFFVRkJPMEZCUVVFc1UwRkRjRU03UVVGQlFTeFBRVU5HTzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVV0UExGbEJRVUVzUTBGQllTeFBRVUZwUWl4TlFVRnJRaXhGUVVGQk8wRkJRM0pFTEVsQlFVc3NTVUZCUVN4RFFVRkJMRTlCUVVFc1EwRkJVeXhSUVVGUkxFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlJUTkNMRWxCUVVrc1NVRkJRU3hOUVVGQkxFbEJRVlVzUzBGQlN5eE5RVUZSTEVWQlFVRTdRVUZEZWtJc1RVRkJTeXhKUVVGQkxFTkJRVUVzVFVGQlFTeERRVUZQTEZsQlFXRXNRMEZCUVN4TFFVRkJMRVZCUVU4c1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU40UXp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUExFOUJRWFZDTEVkQlFVRTdRVUZETlVJc1NVRkJRU3hQUVVGUExFTkJRVU1zU1VGQlN5eERRVUZCTEU5QlFVRXNSMEZCVlN4SlFVRlBMRWRCUVVFc1NVRkJRU3hEUVVGTExGRkJRVkVzVDBGQlVTeEZRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTnlSRHRCUVVGQkxFVkJSVkVzYVVKQlFXOUNMRWRCUVVFN1FVRkRNVUlzU1VGQlFTeEpRVUZCTEVOQlFVc3NVMEZCV1N4SFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVWcVFpeEpRVUZCTEUxQlFVMHNSVUZCUlN4TFFVRlBMRVZCUVVFc1ZVRkJRU3hGUVVGWkxGVkJRVmtzUlVGQlFTeFZRVUZCTEV0QlFXVXNTVUZCU3l4RFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVVelJDeEpRVUZMTEVsQlFVRXNRMEZCUVN4dFFrRkJRU3hEUVVGdlFpeFBRVUZSTEVOQlFVRXNRMEZCUXl4UFFVRlpMRXRCUVVFN1FVRkROVU1zVFVGQlFTeE5RVUZOTEZOQlFWTXNUMEZCVVN4RlFVRkJMRU5CUVVFN1FVRkRka0lzVFVGQlFTeEpRVUZKTEUxQlFWRXNSVUZCUVR0QlFVTldMRkZCUVVzc1NVRkJRU3hEUVVGQkxIRkNRVUZCTEVOQlFYTkNMRWRCUVVrc1EwRkJRU3hOUVVGQkxFVkJRVkVzVFVGQlRTeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTXZRenRCUVVGQkxFdEJRMFFzUTBGQlFTeERRVUZCTzBGQlJVUXNTVUZCU1N4SlFVRkJMRlZCUVVFc1NVRkJZeXhEUVVGRExGVkJRVUVzUTBGQlZ5eFJRVUZWTEVWQlFVRTdRVUZEZEVNc1RVRkJRU3hKUVVGQkxFTkJRVXNzY1VKQlFYTkNMRU5CUVVFc1IwRkJRU3hEUVVGSkxGVkJRVmtzUlVGQlFTeFZRVUZCTEVOQlFWY3NWVUZCVlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JUdEJRVVZCTEVsQlFVa3NTVUZCUVN4VlFVRkJMRWxCUVdNc1EwRkJReXhWUVVGQkxFTkJRVmNzVVVGQlZTeEZRVUZCTzBGQlEzUkRMRTFCUVVFc1NVRkJRU3hEUVVGTExIRkNRVUZ6UWl4RFFVRkJMRWRCUVVFc1EwRkJTU3hWUVVGWkxFVkJRVUVzVlVGQlFTeERRVUZYTEZWQlFWVXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRiRVU3UVVGRlFTeEpRVUZKTEVsQlFVRXNTMEZCUVN4SlFVRlRMRU5CUVVNc1MwRkJRU3hEUVVGTkxGRkJRVlVzUlVGQlFUdEJRVU0xUWl4TlFVRkJMRWxCUVVFc1EwRkJTeXh4UWtGQmMwSXNRMEZCUVN4SFFVRkJMRU5CUVVrc1MwRkJUeXhGUVVGQkxFdEJRVUVzUTBGQlRTeFZRVUZWTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNoRU8wRkJSVUVzU1VGQlFTeEpRVUZKTEZWQlFWa3NSVUZCUVR0QlFVTmtMRTFCUVVFc1MwRkJRU3hOUVVGWExGbEJRVmtzVlVGQldTeEZRVUZCTzBGQlEycERMRkZCUVVFc1NVRkJRU3hEUVVGTExHdENRVUZyUWl4UlFVRlJMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRMnBETzBGQlFVRXNTMEZEUmp0QlFVRkJMRWRCUTBZN1FVRkJRU3hGUVVWUkxHdENRVUZyUWl4UlFVRnBSaXhGUVVGQk8wRkJRM3BITEVsQlFVRXNTVUZCU1N4dlFrRkJiMElzWlVGQmFVSXNSVUZCUVR0QlFVTjJReXhOUVVGQkxFbEJRVUVzUTBGQlN5eHhRa0ZCYzBJc1EwRkJRU3hIUVVGQkxFTkJRVWtzVVVGQlZTeEZRVUZCTEZGQlFVRXNRMEZCVXl4VlFVRlZMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRemxFTEUxQlFVRXNTVUZCVnl4UFFVRlBMRkZCUVVFc1MwRkJZU3hWUVVGWkxFVkJRVUU3UVVGRGVrTXNUVUZCVFN4TlFVRkJMRlZCUVVFc1IwRkJZU3hUUVVGVExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlEyaERMRTFCUVVFc1NVRkJTU3hWUVVGWkxFVkJRVUU3UVVGRFpDeFJRVUZMTEVsQlFVRXNRMEZCUVN4eFFrRkJRU3hEUVVGelFpeEhRVUZKTEVOQlFVRXNVVUZCUVN4RlFVRlZMRlZCUVZVc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRGNrUTdRVUZCUVN4TFFVTkdPMEZCUVVFc1IwRkRSanRCUVVGQkxFVkJUMDhzVVVGQmIwTXNSMEZCUVR0QlFVTjZReXhKUVVGSkxFbEJRVUVzUTBGQlF5eExRVUZMTEZGQlFWVXNSVUZCUVR0QlFVTnNRaXhOUVVGQkxFbEJRVUVzUTBGQlN5eHBRa0ZCYTBJc1JVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGVrSTdRVUZGUVN4SlFVRkxMRWxCUVVFc1EwRkJRU3hUUVVGQkxFVkJRVUVzUTBGQlFUdEJRVVZNTEVsQlFVRXNTVUZCU1N4TlFVRlRMRWRCUVVFc1MwRkJRU3hEUVVGQk8wRkJSV0lzU1VGQlFTeFBRVUZQTEUxQlFVMDdRVUZEV0N4TlFVRkxMRWxCUVVFc1EwRkJRU3hUUVVGQkxFVkJRVUVzUTBGQlFUdEJRVVZNTEUxQlFVRXNTVUZCU1N4TlFVRlJMRVZCUVVFN1FVRkRWaXhSUVVGQkxFMUJRVTBzUjBGQlRTeEhRVUZCTEVOQlFVRXNNa1ZCUVVFc1EwRkJRU3hEUVVGQk8wRkJRMW9zVVVGQlRTeE5RVUZCTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRM0pDTzBGQlJVRXNUVUZCVXl4TlFVRkJMRWRCUVVFc1NVRkJRU3hEUVVGQk8wRkJSVlFzVFVGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4alFVRmpMRU5CUVVjc1JVRkJRVHRCUVVONFFpeFJRVUZCTEVsQlFVRXNRMEZCU3l4dFFrRkJiMElzUlVGQlFTeERRVUZCTzBGQlFVRXNUMEZETTBJN1FVRkJRU3hMUVVOR0xFTkJRVUU3UVVGQlFTeEhRVU5HTzBGQlFVRXNSVUZOVVN4dFFrRkJORUlzUjBGQlFUdEJRVU5zUXl4SlFVRkJMRWxCUVVFc1EwRkJTeXhUUVVGWkxFZEJRVUVzUzBGQlFTeERRVUZCTzBGQlJXcENMRWxCUVVFc1MwRkJRU3hKUVVGVExFOUJRVmNzU1VGQlFTeEpRVUZCTEVOQlFVc3NjVUpCUVhOQ0xFTkJRVUVzVFVGQlFTeEZRVUZWTEVWQlFVRTdRVUZEZGtRc1RVRkJVU3hQUVVGQkxFVkJRVUVzUTBGQlFUdEJRVUZCTEV0QlExWTdRVUZGUVN4SlFVRkJMRWxCUVVFc1EwRkJTeXh6UWtGQmMwSXNTMEZCVFN4RlFVRkJMRU5CUVVFN1FVRkhha01zU1VGQlFTeEpRVUZCTEVOQlFVc3NVVUZCVXl4clFrRkJiVUlzUlVGQlFTeERRVUZCTzBGQlEycERMRWxCUVVFc1NVRkJRU3hEUVVGTExFMUJRVTBzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZEZGtJc1NVRkJTeXhKUVVGQkxFTkJRVUVzUzBGQlFTeEhRVUZSTEVsQlFVa3NXVUZCWVN4RlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOb1F6dEJRVUZCTEVWQlMwOHNVVUZCYlVJc1IwRkJRVHRCUVVWNFFpeEpRVUZCTEU5QlFVOHNiMEpCUVc5Q0xFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEYWtNN1FVRkJRU3hGUVVkUExGZEJRVzlDTEVkQlFVRTdRVUZEZWtJc1NVRkJTeXhKUVVGQkxFTkJRVUVzVVVGQlFTeERRVUZUTEVWQlFVVXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRiRUk3UVVGQlFTeEZRVXRQTEUxQlFVMHNVMEZCYlVNc1JVRkJRVHRCUVVNNVF5eEpRVUZQTEU5QlFVRXNaMEpCUVVFc1EwRkJhVUlzVFVGQlRTeFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTNwRE8wRkJRVUVzUlVGTlR5eHhRa0ZCY1VJc1QwRkJhVU1zUlVGQlFUdEJRVU16UkN4SlFVRkxMRWxCUVVFc1EwRkJRU3h0UWtGQlFTeERRVUZ2UWl4TFFVRkxMRTlCUVU4c1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRGRrTTdRVUZCUVN4RlFVMVBMR0ZCUVdFc1VVRkJORU1zUlVGQlFUdEJRVU01UkN4SlFVRmhMRmxCUVVFc1EwRkJRU3hKUVVGQkxFTkJRVXNzVDBGQlR5eFJRVUZSTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTI1RE8wRkJRVUVzUlVGSFR5eE5RVUVyUWl4SFFVRkJPMEZCUTNCRExFbEJRVWtzU1VGQlFTeERRVUZETEV0QlFVc3NTVUZCVFN4RlFVRkJPMEZCUTJRc1RVRkJTeXhKUVVGQkxFTkJRVUVzU1VGQlFTeEhRVUZQTEVsQlFVa3NZMEZCUVN4RFFVRmxMRWxCUVVrc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGNrTTdRVUZGUVN4SlFVRkJMRTlCUVU4c1NVRkJTeXhEUVVGQkxFbEJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyUTdRVUZEUml4RFFVRkJPMEZCVFdkQ0xGTkJRVUVzYlVKQlFVRXNRMEZEWkN4UFFVTkJMRTlCUTFFc1JVRkJRVHRCUVRkWVZpeEZRVUZCTEVsQlFVRXNSVUZCUVN4RFFVRkJPMEZCT0ZoRkxFVkJRVUVzVFVGQlRTeERRVUZETEVOQlFVY3NSVUZCUVN4UlFVRlJMRU5CUVVrc1IwRkJRU3hSUVVGQkxFTkJRV2xDTEUxQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRiRVFzUlVGQlFTeE5RVUZOTEhGQ1FVRnhRaXhMUVVGTkxFTkJRVUVzUzBGQlFTeERRVUZCTzBGQlEycERMRVZCUVUwc1RVRkJRU3g1UWtGQlFTeEhRVUZCTEVOQlFUUkNMRVZCUVZNc1IwRkJRU3hQUVVGQkxFbEJRVUVzU1VGQlFTeEhRVUZCTEV0QlFVRXNRMEZCUVN4SFFVRkJMRTlCUVVFc1EwRkJRU3g1UWtGQlFTeExRVUZVTEVsQlFYTkRMRWRCUVVFc1JVRkJRU3hIUVVGQkxFdEJRVUVzUTBGQlFUdEJRVVY0UlN4RlFVRkJMRk5CUVVFc1EwRkJWU3hOUVVGTk8wRkJRMlFzU1VGQlNTeEpRVUZCTEZWQlFVRXNRMEZCUVR0QlFVVktMRWxCUVVFc1NVRkJTU3g1UWtGQk1rSXNSVUZCUVR0QlFVTTNRaXhOUVVGQkxGVkJRVUVzUjBGQllTeE5RVUZOTEZGQlFWTXNSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRPVUk3UVVGRlFTeEpRVUZCTEUxQlFVMHNRMEZCU1N4SFFVRkJMRXRCUVVFc1EwRkJUU3huUWtGQmFVSXNRMEZCUVN4RFFVRkRMRXRCUVZVc1MwRkJRVHRCUVVNeFF5eE5RVUZCTEZGQlFVRXNRMEZCVXl4TFFVRkxMRU5CUVVFc1EwRkJRVHRCUVVGQkxFdEJRMllzUTBGQlFTeERRVUZCTzBGQlIwUXNTVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hWUVVGVkxHdENRVUZ2UWl4RlFVRkJPMEZCUTNSRExFMUJRVUVzVVVGQlFTeERRVUZUTEUxQlFVMHNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOMFFqdEJRVVZCTEVsQlFVRXNUMEZCVHl4TlFVRk5PMEZCUTFnc1RVRkJRU3hEUVVGQkxFTkJRVVVzVjBGQldTeEZRVUZCTEVOQlFVRTdRVUZGWkN4TlFVRkJMRWxCUVVrc1ZVRkJXU3hGUVVGQk8wRkJRMlFzVVVGQlZ5eFZRVUZCTEVWQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTJJN1FVRkJRU3hMUVVOR0xFTkJRVUU3UVVGQlFTeEhRVVZETEVWQlFVRXNRMEZCUXl4TFFVRlBMRVZCUVVFc2VVSkJRWGxDTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUlhKRExFVkJRVUVzVDBGQlR5eExRVUZOTEVOQlFVRXNTMEZCUVN4RFFVRkJPMEZCUTJZc1EwRkJRVHRCUVVWQkxGTkJRVk1zV1VGQlFTeERRVUVyUWl4UFFVRlZMRkZCUVRSRExFVkJRVUU3UVVGRE5VWXNSVUZCUVN4TFFVRkJMRTFCUVZjc1UwRkJZU3hKUVVGQkxFMUJRVUVzUTBGQlR5eE5RVUZQTEVOQlFVRXNTMEZCU3l4RFFVRkhMRVZCUVVFN1FVRkROVU1zU1VGQlFTeEpRVUZKTEhGQ1FVRnhRaXhsUVVGcFFpeEZRVUZCTzBGQlEzaERMRTFCUVVFc1VVRkJRU3hEUVVGVExGTkJRVk1zUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEY0VJN1FVRkZRU3hKUVVGSkxFbEJRVUVzUzBGQlFTeERRVUZOTEU5QlFWRXNRMEZCUVN4VFFVRlRMRU5CUVVjc1JVRkJRVHRCUVVNMVFpeE5RVUZCTEV0QlFVRXNUVUZCVnl4VFFVRlRMRk5CUVZjc1JVRkJRVHRCUVVNM1FpeFJRVUZCTEVsQlFVa3NhVUpCUVdsQ0xHVkJRV2xDTEVWQlFVRTdRVUZEY0VNc1ZVRkJRU3hSUVVGQkxFTkJRVk1zUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTm9RanRCUVVGQkxFOUJRMFk3UVVGQlFTeExRVU5HTzBGQlFVRXNSMEZEUmp0QlFVTkdPenM3T3lKOVxuIl0sIm5hbWVzIjpbInV1aWR2NCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdCTyxNQUFlLGVBRXRCLENBQUE7QUFnQlMsRUFBQSxXQUFBLENBQVksS0FBZSxFQUFBO0FBZmxDLElBQUEsSUFBQSxDQUFRLFNBQVksR0FBQSxLQUFBLENBQUE7QUFFcEIsSUFBQSxJQUFBLENBQVEsc0JBQWdELEVBQUEsQ0FBQTtBQUNoRCxJQUFBLElBQUEsQ0FBQSxxQkFBQSx1QkFBNEIsR0FBc0MsRUFBQSxDQUFBO0FBS2hFLElBQUEsSUFBQSxDQUFBLEtBQUEsR0FBUSxJQUFJLFlBQWEsRUFBQSxDQUFBO0FBQ25DLElBQUEsSUFBQSxDQUFVLFNBQVksR0FBQSxDQUFBLENBQUE7QUFDdEIsSUFB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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
var __accessCheck = (obj, member, msg) => {
|
|
2
|
+
if (!member.has(obj))
|
|
3
|
+
throw TypeError("Cannot " + msg);
|
|
4
|
+
};
|
|
5
|
+
var __privateGet = (obj, member, getter) => {
|
|
6
|
+
__accessCheck(obj, member, "read from private field");
|
|
7
|
+
return getter ? getter.call(obj) : member.get(obj);
|
|
8
|
+
};
|
|
9
|
+
var __privateAdd = (obj, member, value) => {
|
|
10
|
+
if (member.has(obj))
|
|
11
|
+
throw TypeError("Cannot add the same private member more than once");
|
|
12
|
+
member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
13
|
+
};
|
|
14
|
+
var __privateSet = (obj, member, value, setter) => {
|
|
15
|
+
__accessCheck(obj, member, "write to private field");
|
|
16
|
+
setter ? setter.call(obj, value) : member.set(obj, value);
|
|
17
|
+
return value;
|
|
18
|
+
};
|
|
19
|
+
var _ref;
|
|
20
|
+
class SceneObjectRef {
|
|
21
|
+
constructor(ref) {
|
|
22
|
+
__privateAdd(this, _ref, void 0);
|
|
23
|
+
__privateSet(this, _ref, ref);
|
|
24
|
+
}
|
|
25
|
+
resolve() {
|
|
26
|
+
return __privateGet(this, _ref);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
_ref = /* @__PURE__ */ new WeakMap();
|
|
30
|
+
|
|
31
|
+
export { SceneObjectRef };
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVPYmplY3RSZWYuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2NvcmUvU2NlbmVPYmplY3RSZWYuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fYWNjZXNzQ2hlY2sgPSAob2JqLCBtZW1iZXIsIG1zZykgPT4ge1xuICBpZiAoIW1lbWJlci5oYXMob2JqKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW5ub3QgXCIgKyBtc2cpO1xufTtcbnZhciBfX3ByaXZhdGVHZXQgPSAob2JqLCBtZW1iZXIsIGdldHRlcikgPT4ge1xuICBfX2FjY2Vzc0NoZWNrKG9iaiwgbWVtYmVyLCBcInJlYWQgZnJvbSBwcml2YXRlIGZpZWxkXCIpO1xuICByZXR1cm4gZ2V0dGVyID8gZ2V0dGVyLmNhbGwob2JqKSA6IG1lbWJlci5nZXQob2JqKTtcbn07XG52YXIgX19wcml2YXRlQWRkID0gKG9iaiwgbWVtYmVyLCB2YWx1ZSkgPT4ge1xuICBpZiAobWVtYmVyLmhhcyhvYmopKVxuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbm5vdCBhZGQgdGhlIHNhbWUgcHJpdmF0ZSBtZW1iZXIgbW9yZSB0aGFuIG9uY2VcIik7XG4gIG1lbWJlciBpbnN0YW5jZW9mIFdlYWtTZXQgPyBtZW1iZXIuYWRkKG9iaikgOiBtZW1iZXIuc2V0KG9iaiwgdmFsdWUpO1xufTtcbnZhciBfX3ByaXZhdGVTZXQgPSAob2JqLCBtZW1iZXIsIHZhbHVlLCBzZXR0ZXIpID0+IHtcbiAgX19hY2Nlc3NDaGVjayhvYmosIG1lbWJlciwgXCJ3cml0ZSB0byBwcml2YXRlIGZpZWxkXCIpO1xuICBzZXR0ZXIgPyBzZXR0ZXIuY2FsbChvYmosIHZhbHVlKSA6IG1lbWJlci5zZXQob2JqLCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG52YXIgX3JlZjtcbmNsYXNzIFNjZW5lT2JqZWN0UmVmIHtcbiAgY29uc3RydWN0b3IocmVmKSB7XG4gICAgX19wcml2YXRlQWRkKHRoaXMsIF9yZWYsIHZvaWQgMCk7XG4gICAgX19wcml2YXRlU2V0KHRoaXMsIF9yZWYsIHJlZik7XG4gIH1cbiAgcmVzb2x2ZSgpIHtcbiAgICByZXR1cm4gX19wcml2YXRlR2V0KHRoaXMsIF9yZWYpO1xuICB9XG59XG5fcmVmID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IHsgU2NlbmVPYmplY3RSZWYgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJObGJtVlBZbXBsWTNSU1pXWXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUwzTnlZeTlqYjNKbEwxTmpaVzVsVDJKcVpXTjBVbVZtTG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbVY0Y0c5eWRDQmpiR0Z6Y3lCVFkyVnVaVTlpYW1WamRGSmxaanhVUGlCN1hHNGdJQ055WldZNklGUTdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtISmxaam9nVkNrZ2UxeHVJQ0FnSUhSb2FYTXVJM0psWmlBOUlISmxaanRjYmlBZ2ZWeHVYRzRnSUhCMVlteHBZeUJ5WlhOdmJIWmxLQ2s2SUZRZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxpTnlaV1k3WEc0Z0lIMWNibjFjYmlKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3T3pzN096czdPenM3UVVGQlFTeEpRVUZCTEVsQlFVRXNRMEZCUVR0QlFVRlBMRTFCUVUwc1kwRkJhMElzUTBGQlFUdEJRVUZCTEVWQlIzUkNMRmxCUVZrc1IwRkJVU3hGUVVGQk8wRkJSak5DTEVsQlFVRXNXVUZCUVN4RFFVRkJMRWxCUVVFc1JVRkJRU3hKUVVGQkxFVkJRVUVzUzBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVZEZMRWxCUVVFc1dVRkJRU3hEUVVGQkxFbEJRVUVzUlVGQlN5eEpRVUZQTEVWQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOa08wRkJRVUVzUlVGRlR5eFBRVUZoTEVkQlFVRTdRVUZEYkVJc1NVRkJRU3hQUVVGUExGbEJRVXNzUTBGQlFTeEpRVUZCTEVWQlFVRXNTVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOa08wRkJRMFlzUTBGQlFUdEJRVlJGTEVsQlFVRXNSMEZCUVN4SlFVRkJMRTlCUVVFc1JVRkJRVHM3T3pzaWZRPT1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBLElBQUEsQ0FBQTtBQUFPLE1BQU0sY0FBa0IsQ0FBQTtBQUd0QixFQUFBLFdBQUEsQ0FBWSxHQUFRLEVBQUE7QUFGM0IsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLE1BQUEsS0FBQSxDQUFBLENBQUEsQ0FBQTtBQUdFLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBSyxNQUFPLEdBQUEsQ0FBQSxDQUFBO0FBQUEsR0FBQTtFQUdQLE9BQWEsR0FBQTtBQUNsQixJQUFPLE9BQUEsWUFBQSxDQUFLLE1BQUEsSUFBQSxDQUFBLENBQUE7QUFBQSxHQUFBO0FBRWhCLENBQUE7QUFURSxJQUFBLHVCQUFBLE9BQUEsRUFBQTs7OzsifQ==
|