@grafana/scenes 6.7.0--canary.1091.14350229100.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 +25 -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,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Splitter } from './Splitter.js';
|
|
3
|
+
|
|
4
|
+
function SplitLayoutRenderer({ model }) {
|
|
5
|
+
const { primary, secondary, direction, isHidden, initialSize, primaryPaneStyles, secondaryPaneStyles } = model.useState();
|
|
6
|
+
if (isHidden) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const Prim = primary.Component;
|
|
10
|
+
const Sec = secondary == null ? void 0 : secondary.Component;
|
|
11
|
+
let startSize = secondary ? initialSize : 1;
|
|
12
|
+
return /* @__PURE__ */ React.createElement(Splitter, {
|
|
13
|
+
direction,
|
|
14
|
+
initialSize: startSize != null ? startSize : 0.5,
|
|
15
|
+
primaryPaneStyles,
|
|
16
|
+
secondaryPaneStyles
|
|
17
|
+
}, /* @__PURE__ */ React.createElement(Prim, {
|
|
18
|
+
key: primary.state.key,
|
|
19
|
+
model: primary,
|
|
20
|
+
parentState: model.state
|
|
21
|
+
}), Sec && secondary && /* @__PURE__ */ React.createElement(Sec, {
|
|
22
|
+
key: secondary.state.key,
|
|
23
|
+
model: secondary,
|
|
24
|
+
parentState: model.state
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { SplitLayoutRenderer };
|
|
29
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BsaXRMYXlvdXRSZW5kZXJlci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vY29tcG9uZW50cy9sYXlvdXQvc3BsaXQvU3BsaXRMYXlvdXRSZW5kZXJlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgU3BsaXR0ZXIgfSBmcm9tICcuL1NwbGl0dGVyLmpzJztcblxuZnVuY3Rpb24gU3BsaXRMYXlvdXRSZW5kZXJlcih7IG1vZGVsIH0pIHtcbiAgY29uc3QgeyBwcmltYXJ5LCBzZWNvbmRhcnksIGRpcmVjdGlvbiwgaXNIaWRkZW4sIGluaXRpYWxTaXplLCBwcmltYXJ5UGFuZVN0eWxlcywgc2Vjb25kYXJ5UGFuZVN0eWxlcyB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgaWYgKGlzSGlkZGVuKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgUHJpbSA9IHByaW1hcnkuQ29tcG9uZW50O1xuICBjb25zdCBTZWMgPSBzZWNvbmRhcnkgPT0gbnVsbCA/IHZvaWQgMCA6IHNlY29uZGFyeS5Db21wb25lbnQ7XG4gIGxldCBzdGFydFNpemUgPSBzZWNvbmRhcnkgPyBpbml0aWFsU2l6ZSA6IDE7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChTcGxpdHRlciwge1xuICAgIGRpcmVjdGlvbixcbiAgICBpbml0aWFsU2l6ZTogc3RhcnRTaXplICE9IG51bGwgPyBzdGFydFNpemUgOiAwLjUsXG4gICAgcHJpbWFyeVBhbmVTdHlsZXMsXG4gICAgc2Vjb25kYXJ5UGFuZVN0eWxlc1xuICB9LCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChQcmltLCB7XG4gICAga2V5OiBwcmltYXJ5LnN0YXRlLmtleSxcbiAgICBtb2RlbDogcHJpbWFyeSxcbiAgICBwYXJlbnRTdGF0ZTogbW9kZWwuc3RhdGVcbiAgfSksIFNlYyAmJiBzZWNvbmRhcnkgJiYgLyogQF9fUFVSRV9fICovIFJlYWN0LmNyZWF0ZUVsZW1lbnQoU2VjLCB7XG4gICAga2V5OiBzZWNvbmRhcnkuc3RhdGUua2V5LFxuICAgIG1vZGVsOiBzZWNvbmRhcnksXG4gICAgcGFyZW50U3RhdGU6IG1vZGVsLnN0YXRlXG4gIH0pKTtcbn1cblxuZXhwb3J0IHsgU3BsaXRMYXlvdXRSZW5kZXJlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVM0JzYVhSTVlYbHZkWFJTWlc1a1pYSmxjaTVxY3lJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2TGk0dmMzSmpMMk52YlhCdmJtVnVkSE12YkdGNWIzVjBMM053YkdsMEwxTndiR2wwVEdGNWIzVjBVbVZ1WkdWeVpYSXVkSE40SWwwc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCU1pXRmpkQ3dnZXlCRGIyMXdiMjVsYm5SVWVYQmxJSDBnWm5KdmJTQW5jbVZoWTNRbk8xeHVYRzVwYlhCdmNuUWdleUJUWTJWdVpVTnZiWEJ2Ym1WdWRGQnliM0J6TENCVFkyVnVaVTlpYW1WamRGTjBZWFJsTENCVFkyVnVaVTlpYW1WamRDQjlJR1p5YjIwZ0p5NHVMeTR1THk0dUwyTnZjbVV2ZEhsd1pYTW5PMXh1YVcxd2IzSjBJSHNnVTJObGJtVkdiR1Y0U1hSbGJWQnNZV05sYldWdWRDQjlJR1p5YjIwZ0p5NHVMMU5qWlc1bFJteGxlRXhoZVc5MWRDYzdYRzVwYlhCdmNuUWdleUJUY0d4cGRFeGhlVzkxZENCOUlHWnliMjBnSnk0dlUzQnNhWFJNWVhsdmRYUW5PMXh1YVcxd2IzSjBJSHNnVTNCc2FYUjBaWElnZlNCbWNtOXRJQ2N1TDFOd2JHbDBkR1Z5Snp0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlGTndiR2wwVEdGNWIzVjBVbVZ1WkdWeVpYSW9leUJ0YjJSbGJDQjlPaUJUWTJWdVpVWnNaWGhKZEdWdFVtVnVaR1Z5VUhKdmNITThVM0JzYVhSTVlYbHZkWFErS1NCN1hHNGdJR052Ym5OMElIc2djSEpwYldGeWVTd2djMlZqYjI1a1lYSjVMQ0JrYVhKbFkzUnBiMjRzSUdselNHbGtaR1Z1TENCcGJtbDBhV0ZzVTJsNlpTd2djSEpwYldGeWVWQmhibVZUZEhsc1pYTXNJSE5sWTI5dVpHRnllVkJoYm1WVGRIbHNaWE1nZlNBOVhHNGdJQ0FnYlc5a1pXd3VkWE5sVTNSaGRHVW9LVHRjYmx4dUlDQnBaaUFvYVhOSWFXUmtaVzRwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdiblZzYkR0Y2JpQWdmVnh1WEc0Z0lHTnZibk4wSUZCeWFXMGdQU0J3Y21sdFlYSjVMa052YlhCdmJtVnVkQ0JoY3lCRGIyMXdiMjVsYm5SVWVYQmxQRk5qWlc1bFJteGxlRWwwWlcxU1pXNWtaWEpRY205d2N6eFRZMlZ1WlU5aWFtVmpkRDQrTzF4dUlDQmpiMjV6ZENCVFpXTWdQU0J6WldOdmJtUmhjbmsvTGtOdmJYQnZibVZ1ZENCaGN5QkRiMjF3YjI1bGJuUlVlWEJsUEZOalpXNWxSbXhsZUVsMFpXMVNaVzVrWlhKUWNtOXdjenhUWTJWdVpVOWlhbVZqZEQ0K08xeHVJQ0JzWlhRZ2MzUmhjblJUYVhwbElEMGdjMlZqYjI1a1lYSjVJRDhnYVc1cGRHbGhiRk5wZW1VZ09pQXhPMXh1WEc0Z0lISmxkSFZ5YmlBb1hHNGdJQ0FnUEZOd2JHbDBkR1Z5WEc0Z0lDQWdJQ0JrYVhKbFkzUnBiMjQ5ZTJScGNtVmpkR2x2Ym4xY2JpQWdJQ0FnSUdsdWFYUnBZV3hUYVhwbFBYdHpkR0Z5ZEZOcGVtVWdQejhnTUM0MWZWeHVJQ0FnSUNBZ2NISnBiV0Z5ZVZCaGJtVlRkSGxzWlhNOWUzQnlhVzFoY25sUVlXNWxVM1I1YkdWemZWeHVJQ0FnSUNBZ2MyVmpiMjVrWVhKNVVHRnVaVk4wZVd4bGN6MTdjMlZqYjI1a1lYSjVVR0Z1WlZOMGVXeGxjMzFjYmlBZ0lDQStYRzRnSUNBZ0lDQThVSEpwYlNCclpYazllM0J5YVcxaGNua3VjM1JoZEdVdWEyVjVmU0J0YjJSbGJEMTdjSEpwYldGeWVYMGdjR0Z5Wlc1MFUzUmhkR1U5ZTIxdlpHVnNMbk4wWVhSbGZTQXZQbHh1SUNBZ0lDQWdlMU5sWXlBbUppQnpaV052Ym1SaGNua2dKaVlnUEZObFl5QnJaWGs5ZTNObFkyOXVaR0Z5ZVM1emRHRjBaUzVyWlhsOUlHMXZaR1ZzUFh0elpXTnZibVJoY25sOUlIQmhjbVZ1ZEZOMFlYUmxQWHR0YjJSbGJDNXpkR0YwWlgwZ0x6NTlYRzRnSUNBZ1BDOVRjR3hwZEhSbGNqNWNiaUFnS1R0Y2JuMWNibHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JUWTJWdVpVWnNaWGhKZEdWdFUzUmhkR1VnWlhoMFpXNWtjeUJUWTJWdVpVWnNaWGhKZEdWdFVHeGhZMlZ0Wlc1MExDQlRZMlZ1WlU5aWFtVmpkRk4wWVhSbElIdGNiaUFnWW05a2VUb2dVMk5sYm1WUFltcGxZM1FnZkNCMWJtUmxabWx1WldRN1hHNTlYRzVjYm1sdWRHVnlabUZqWlNCVFkyVnVaVVpzWlhoSmRHVnRVbVZ1WkdWeVVISnZjSE04VkQ0Z1pYaDBaVzVrY3lCVFkyVnVaVU52YlhCdmJtVnVkRkJ5YjNCelBGUStJSHRjYmlBZ2NHRnlaVzUwVTNSaGRHVS9PaUJUWTJWdVpVWnNaWGhKZEdWdFVHeGhZMlZ0Wlc1ME8xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3T3p0QlFVOW5RaXhUUVVGQkxHMUNRVUZCTEVOQlFXOUNMRVZCUVVVc1MwRkJRU3hGUVVGblJDeEZRVUZCTzBGQlEzQkdMRVZCUVUwc1RVRkJRU3hGUVVGRkxFOUJRVk1zUlVGQlFTeFRRVUZCTEVWQlFWY3NVMEZCVnl4RlFVRkJMRkZCUVVFc1JVRkJWU3hoUVVGaExHbENRVUZ0UWl4RlFVRkJMRzFDUVVGQkxFVkJReTlGTEVkQlFVRXNTMEZCUVN4RFFVRk5MRkZCUVZNc1JVRkJRU3hEUVVGQk8wRkJSV3BDTEVWQlFVRXNTVUZCU1N4UlFVRlZMRVZCUVVFN1FVRkRXaXhKUVVGUExFOUJRVUVzU1VGQlFTeERRVUZCTzBGQlFVRXNSMEZEVkR0QlFVVkJMRVZCUVVFc1RVRkJUU3hQUVVGUExFOUJRVkVzUTBGQlFTeFRRVUZCTEVOQlFVRTdRVUZEY2tJc1JVRkJRU3hOUVVGTkxFMUJRVTBzVTBGQlZ5eEpRVUZCTEVsQlFVRXNSMEZCUVN4TFFVRkJMRU5CUVVFc1IwRkJRU3hUUVVGQkxFTkJRVUVzVTBGQlFTeERRVUZCTzBGQlEzWkNMRVZCUVVrc1NVRkJRU3hUUVVGQkxFZEJRVmtzV1VGQldTeFhRVUZqTEVkQlFVRXNRMEZCUVN4RFFVRkJPMEZCUlRGRExFVkJRVUVzZFVKQlEwY3NTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hSUVVGQkxFVkJRVUU3UVVGQlFTeEpRVU5ETEZOQlFVRTdRVUZCUVN4SlFVTkJMR0ZCUVdFc1UwRkJZU3hKUVVGQkxFbEJRVUVzUjBGQlFTeFRRVUZCTEVkQlFVRXNSMEZCUVR0QlFVRkJMRWxCUXpGQ0xHbENRVUZCTzBGQlFVRXNTVUZEUVN4dFFrRkJRVHRCUVVGQkxFZEJRVUVzYTBKQlJVTXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hKUVVGQkxFVkJRVUU3UVVGQlFTeEpRVUZMTEVkQlFVRXNSVUZCU3l4UlFVRlJMRXRCUVUwc1EwRkJRU3hIUVVGQk8wRkJRVUVzU1VGQlN5eExRVUZQTEVWQlFVRXNUMEZCUVR0QlFVRkJMRWxCUVZNc1lVRkJZU3hMUVVGTkxFTkJRVUVzUzBGQlFUdEJRVUZCTEVkQlFVOHNRMEZCUVN4RlFVTjJSU3hIUVVGUExFbEJRVUVzVTBGQlFTeHZRa0ZCWXl4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFZEJRVUVzUlVGQlFUdEJRVUZCTEVsQlFVa3NSMEZCUVN4RlFVRkxMRlZCUVZVc1MwRkJUU3hEUVVGQkxFZEJRVUU3UVVGQlFTeEpRVUZMTEV0QlFVOHNSVUZCUVN4VFFVRkJPMEZCUVVFc1NVRkJWeXhoUVVGaExFdEJRVTBzUTBGQlFTeExRVUZCTzBGQlFVRXNSMEZCVHl4RFFVTnNSeXhEUVVGQkxFTkJRVUU3UVVGRlNqczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9nQixTQUFBLG1CQUFBLENBQW9CLEVBQUUsS0FBQSxFQUFnRCxFQUFBO0FBQzlFLEVBQUEsTUFBQSxFQUFFLE9BQVMsRUFBQSxTQUFBLEVBQVcsU0FBVyxFQUFBLFFBQUEsRUFBVSxhQUFhLGlCQUFtQixFQUFBLG1CQUFBLEVBQy9FLEdBQUEsS0FBQSxDQUFNLFFBQVMsRUFBQSxDQUFBO0FBRWpCLEVBQUEsSUFBSSxRQUFVLEVBQUE7QUFDTCxJQUFBLE9BQUEsSUFBQSxDQUFBO0FBQUEsR0FBQTtBQUdULEVBQUEsTUFBTSxPQUFPLE9BQVEsQ0FBQSxTQUFBLENBQUE7QUFDckIsRUFBQSxNQUFNLEdBQU0sR0FBQSxTQUFBLElBQVcsSUFBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBLFNBQUEsQ0FBQSxTQUFBLENBQUE7QUFDbkIsRUFBQSxJQUFBLFNBQUEsR0FBWSxZQUFZLFdBQWMsR0FBQSxDQUFBLENBQUE7QUFFMUMsRUFDRyx1QkFBQSxLQUFBLENBQUEsY0FBQSxRQUFBLEVBQUE7QUFDQyxJQUFBLFNBQUE7SUFDQSxXQUFhLEVBQUEsU0FBQSxJQUFhLE9BQUEsU0FBQSxHQUFBLEdBQUE7QUFDMUIsSUFBQSxpQkFBQTtBQUNBLElBQUEsbUJBQUE7R0FFQyxrQkFBQSxLQUFBLENBQUEsY0FBQSxJQUFBLEVBQUE7QUFBSyxJQUFBLEdBQUEsRUFBSyxRQUFRLEtBQU0sQ0FBQSxHQUFBO0lBQUssS0FBTyxFQUFBLE9BQUE7QUFBUyxJQUFBLFdBQUEsRUFBYSxLQUFNLENBQUEsS0FBQTtBQUFBLEdBQU8sQ0FDdkUsRUFBQSxHQUFBLElBQU8sU0FBYyxvQkFBQSxLQUFBLENBQUEsY0FBQSxHQUFBLEVBQUE7QUFBSSxJQUFBLEdBQUEsRUFBSyxVQUFVLEtBQU0sQ0FBQSxHQUFBO0lBQUssS0FBTyxFQUFBLFNBQUE7QUFBVyxJQUFBLFdBQUEsRUFBYSxLQUFNLENBQUEsS0FBQTtBQUFBLEdBQU8sQ0FDbEcsQ0FBQSxDQUFBO0FBRUo7Ozs7In0=
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
import { cx, css } from '@emotion/css';
|
|
2
|
+
import { useStyles2 } from '@grafana/ui';
|
|
3
|
+
import { clamp, throttle } from 'lodash';
|
|
4
|
+
import React, { useRef, useCallback, useLayoutEffect } from 'react';
|
|
5
|
+
import { useUniqueId } from '../LazyLoader.js';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
11
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
12
|
+
var __spreadValues = (a, b) => {
|
|
13
|
+
for (var prop in b || (b = {}))
|
|
14
|
+
if (__hasOwnProp.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
if (__getOwnPropSymbols)
|
|
17
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
18
|
+
if (__propIsEnum.call(b, prop))
|
|
19
|
+
__defNormalProp(a, prop, b[prop]);
|
|
20
|
+
}
|
|
21
|
+
return a;
|
|
22
|
+
};
|
|
23
|
+
const PIXELS_PER_MS = 0.3;
|
|
24
|
+
const VERTICAL_KEYS = /* @__PURE__ */ new Set(["ArrowUp", "ArrowDown"]);
|
|
25
|
+
const HORIZONTAL_KEYS = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowRight"]);
|
|
26
|
+
const propsForDirection = {
|
|
27
|
+
row: {
|
|
28
|
+
dim: "width",
|
|
29
|
+
axis: "clientX",
|
|
30
|
+
min: "minWidth",
|
|
31
|
+
max: "maxWidth"
|
|
32
|
+
},
|
|
33
|
+
column: {
|
|
34
|
+
dim: "height",
|
|
35
|
+
axis: "clientY",
|
|
36
|
+
min: "minHeight",
|
|
37
|
+
max: "maxHeight"
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function Splitter({
|
|
41
|
+
direction = "row",
|
|
42
|
+
handleSize = 32,
|
|
43
|
+
initialSize = "auto",
|
|
44
|
+
primaryPaneStyles,
|
|
45
|
+
secondaryPaneStyles,
|
|
46
|
+
onDragFinished,
|
|
47
|
+
children
|
|
48
|
+
}) {
|
|
49
|
+
const kids = React.Children.toArray(children);
|
|
50
|
+
const splitterRef = useRef(null);
|
|
51
|
+
const firstPaneRef = useRef(null);
|
|
52
|
+
const secondPaneRef = useRef(null);
|
|
53
|
+
const containerRef = useRef(null);
|
|
54
|
+
const containerSize = useRef(null);
|
|
55
|
+
const primarySizeRef = useRef("1fr");
|
|
56
|
+
const firstPaneMeasurements = useRef(void 0);
|
|
57
|
+
const savedPos = useRef(void 0);
|
|
58
|
+
const measurementProp = propsForDirection[direction].dim;
|
|
59
|
+
const clientAxis = propsForDirection[direction].axis;
|
|
60
|
+
const minDimProp = propsForDirection[direction].min;
|
|
61
|
+
const maxDimProp = propsForDirection[direction].max;
|
|
62
|
+
useResizeObserver(
|
|
63
|
+
containerRef.current,
|
|
64
|
+
(entries) => {
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (!entry.target.isSameNode(containerRef.current)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
const curSize = firstPaneRef.current.getBoundingClientRect()[measurementProp];
|
|
70
|
+
const newDims = measureElement(firstPaneRef.current);
|
|
71
|
+
splitterRef.current.ariaValueNow = `${clamp(
|
|
72
|
+
(curSize - newDims[minDimProp]) / (newDims[maxDimProp] - newDims[minDimProp]) * 100,
|
|
73
|
+
0,
|
|
74
|
+
100
|
|
75
|
+
)}`;
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
500,
|
|
79
|
+
[maxDimProp, minDimProp, direction, measurementProp]
|
|
80
|
+
);
|
|
81
|
+
const dragStart = useRef(null);
|
|
82
|
+
const onPointerDown = useCallback(
|
|
83
|
+
(e) => {
|
|
84
|
+
primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
|
|
85
|
+
containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
|
|
86
|
+
dragStart.current = e[clientAxis];
|
|
87
|
+
splitterRef.current.setPointerCapture(e.pointerId);
|
|
88
|
+
firstPaneMeasurements.current = measureElement(firstPaneRef.current);
|
|
89
|
+
savedPos.current = void 0;
|
|
90
|
+
},
|
|
91
|
+
[measurementProp, clientAxis]
|
|
92
|
+
);
|
|
93
|
+
const onPointerMove = useCallback(
|
|
94
|
+
(e) => {
|
|
95
|
+
if (dragStart.current !== null && primarySizeRef.current !== "1fr") {
|
|
96
|
+
const diff = e[clientAxis] - dragStart.current;
|
|
97
|
+
const dims = firstPaneMeasurements.current;
|
|
98
|
+
const newSize = clamp(primarySizeRef.current + diff, dims[minDimProp], dims[maxDimProp]);
|
|
99
|
+
const newFlex = newSize / (containerSize.current - handleSize);
|
|
100
|
+
firstPaneRef.current.style.flexGrow = `${newFlex}`;
|
|
101
|
+
secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
|
|
102
|
+
const ariaValueNow = clamp(
|
|
103
|
+
(newSize - dims[minDimProp]) / (dims[maxDimProp] - dims[minDimProp]) * 100,
|
|
104
|
+
0,
|
|
105
|
+
100
|
|
106
|
+
);
|
|
107
|
+
splitterRef.current.ariaValueNow = `${ariaValueNow}`;
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
[handleSize, clientAxis, minDimProp, maxDimProp]
|
|
111
|
+
);
|
|
112
|
+
const onPointerUp = useCallback(
|
|
113
|
+
(e) => {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
e.stopPropagation();
|
|
116
|
+
splitterRef.current.releasePointerCapture(e.pointerId);
|
|
117
|
+
dragStart.current = null;
|
|
118
|
+
onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
|
|
119
|
+
},
|
|
120
|
+
[onDragFinished]
|
|
121
|
+
);
|
|
122
|
+
const pressedKeys = useRef(/* @__PURE__ */ new Set());
|
|
123
|
+
const keysLastHandledAt = useRef(null);
|
|
124
|
+
const handlePressedKeys = useCallback(
|
|
125
|
+
(time) => {
|
|
126
|
+
var _a;
|
|
127
|
+
const nothingPressed = pressedKeys.current.size === 0;
|
|
128
|
+
if (nothingPressed) {
|
|
129
|
+
keysLastHandledAt.current = null;
|
|
130
|
+
return;
|
|
131
|
+
} else if (primarySizeRef.current === "1fr") {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const dt = time - ((_a = keysLastHandledAt.current) != null ? _a : time);
|
|
135
|
+
const dx = dt * PIXELS_PER_MS;
|
|
136
|
+
let sizeChange = 0;
|
|
137
|
+
if (direction === "row") {
|
|
138
|
+
if (pressedKeys.current.has("ArrowLeft")) {
|
|
139
|
+
sizeChange -= dx;
|
|
140
|
+
}
|
|
141
|
+
if (pressedKeys.current.has("ArrowRight")) {
|
|
142
|
+
sizeChange += dx;
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
if (pressedKeys.current.has("ArrowUp")) {
|
|
146
|
+
sizeChange -= dx;
|
|
147
|
+
}
|
|
148
|
+
if (pressedKeys.current.has("ArrowDown")) {
|
|
149
|
+
sizeChange += dx;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const firstPaneDims = firstPaneMeasurements.current;
|
|
153
|
+
const curSize = firstPaneRef.current.getBoundingClientRect()[measurementProp];
|
|
154
|
+
const newSize = clamp(curSize + sizeChange, firstPaneDims[minDimProp], firstPaneDims[maxDimProp]);
|
|
155
|
+
const newFlex = newSize / (containerSize.current - handleSize);
|
|
156
|
+
firstPaneRef.current.style.flexGrow = `${newFlex}`;
|
|
157
|
+
secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
|
|
158
|
+
const ariaValueNow = (newSize - firstPaneDims[minDimProp]) / (firstPaneDims[maxDimProp] - firstPaneDims[minDimProp]) * 100;
|
|
159
|
+
splitterRef.current.ariaValueNow = `${clamp(ariaValueNow, 0, 100)}`;
|
|
160
|
+
keysLastHandledAt.current = time;
|
|
161
|
+
window.requestAnimationFrame(handlePressedKeys);
|
|
162
|
+
},
|
|
163
|
+
[direction, handleSize, minDimProp, maxDimProp, measurementProp]
|
|
164
|
+
);
|
|
165
|
+
const onKeyDown = useCallback(
|
|
166
|
+
(e) => {
|
|
167
|
+
if (e.key === "Enter") {
|
|
168
|
+
if (savedPos.current === void 0) {
|
|
169
|
+
savedPos.current = firstPaneRef.current.style.flexGrow;
|
|
170
|
+
firstPaneRef.current.style.flexGrow = "0";
|
|
171
|
+
secondPaneRef.current.style.flexGrow = "1";
|
|
172
|
+
} else {
|
|
173
|
+
firstPaneRef.current.style.flexGrow = savedPos.current;
|
|
174
|
+
secondPaneRef.current.style.flexGrow = `${1 - parseFloat(savedPos.current)}`;
|
|
175
|
+
savedPos.current = void 0;
|
|
176
|
+
}
|
|
177
|
+
return;
|
|
178
|
+
} else if (e.key === "Home") {
|
|
179
|
+
firstPaneMeasurements.current = measureElement(firstPaneRef.current);
|
|
180
|
+
containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
|
|
181
|
+
const newFlex = firstPaneMeasurements.current[minDimProp] / (containerSize.current - handleSize);
|
|
182
|
+
firstPaneRef.current.style.flexGrow = `${newFlex}`;
|
|
183
|
+
secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
|
|
184
|
+
splitterRef.current.ariaValueNow = "0";
|
|
185
|
+
return;
|
|
186
|
+
} else if (e.key === "End") {
|
|
187
|
+
firstPaneMeasurements.current = measureElement(firstPaneRef.current);
|
|
188
|
+
containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
|
|
189
|
+
const newFlex = firstPaneMeasurements.current[maxDimProp] / (containerSize.current - handleSize);
|
|
190
|
+
firstPaneRef.current.style.flexGrow = `${newFlex}`;
|
|
191
|
+
secondPaneRef.current.style.flexGrow = `${1 - newFlex}`;
|
|
192
|
+
splitterRef.current.ariaValueNow = "100";
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (!(direction === "column" && VERTICAL_KEYS.has(e.key) || direction === "row" && HORIZONTAL_KEYS.has(e.key)) || pressedKeys.current.has(e.key)) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
savedPos.current = void 0;
|
|
199
|
+
e.preventDefault();
|
|
200
|
+
e.stopPropagation();
|
|
201
|
+
primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
|
|
202
|
+
containerSize.current = containerRef.current.getBoundingClientRect()[measurementProp];
|
|
203
|
+
firstPaneMeasurements.current = measureElement(firstPaneRef.current);
|
|
204
|
+
const newKey = !pressedKeys.current.has(e.key);
|
|
205
|
+
if (newKey) {
|
|
206
|
+
const initiateAnimationLoop = pressedKeys.current.size === 0;
|
|
207
|
+
pressedKeys.current.add(e.key);
|
|
208
|
+
if (initiateAnimationLoop) {
|
|
209
|
+
window.requestAnimationFrame(handlePressedKeys);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
},
|
|
213
|
+
[direction, handlePressedKeys, handleSize, maxDimProp, measurementProp, minDimProp]
|
|
214
|
+
);
|
|
215
|
+
const onKeyUp = useCallback(
|
|
216
|
+
(e) => {
|
|
217
|
+
if (direction === "row" && !HORIZONTAL_KEYS.has(e.key) || direction === "column" && !VERTICAL_KEYS.has(e.key)) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
pressedKeys.current.delete(e.key);
|
|
221
|
+
onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
|
|
222
|
+
},
|
|
223
|
+
[direction, onDragFinished]
|
|
224
|
+
);
|
|
225
|
+
const onDoubleClick = useCallback(() => {
|
|
226
|
+
firstPaneRef.current.style.flexGrow = "0.5";
|
|
227
|
+
secondPaneRef.current.style.flexGrow = "0.5";
|
|
228
|
+
const dim = measureElement(firstPaneRef.current);
|
|
229
|
+
firstPaneMeasurements.current = dim;
|
|
230
|
+
primarySizeRef.current = firstPaneRef.current.getBoundingClientRect()[measurementProp];
|
|
231
|
+
splitterRef.current.ariaValueNow = `${(primarySizeRef.current - dim[minDimProp]) / (dim[maxDimProp] - dim[minDimProp]) * 100}`;
|
|
232
|
+
}, [maxDimProp, measurementProp, minDimProp]);
|
|
233
|
+
const onBlur = useCallback(() => {
|
|
234
|
+
if (pressedKeys.current.size > 0) {
|
|
235
|
+
pressedKeys.current.clear();
|
|
236
|
+
dragStart.current = null;
|
|
237
|
+
onDragFinished == null ? void 0 : onDragFinished(parseFloat(firstPaneRef.current.style.flexGrow));
|
|
238
|
+
}
|
|
239
|
+
}, [onDragFinished]);
|
|
240
|
+
const styles = useStyles2(getStyles);
|
|
241
|
+
const id = useUniqueId();
|
|
242
|
+
const secondAvailable = kids.length === 2;
|
|
243
|
+
const visibilitySecond = secondAvailable ? "visible" : "hidden";
|
|
244
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
245
|
+
ref: containerRef,
|
|
246
|
+
className: styles.container,
|
|
247
|
+
style: {
|
|
248
|
+
flexDirection: direction
|
|
249
|
+
}
|
|
250
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
251
|
+
ref: firstPaneRef,
|
|
252
|
+
className: styles.panel,
|
|
253
|
+
style: __spreadValues({
|
|
254
|
+
flexGrow: initialSize === "auto" ? 0.5 : clamp(initialSize, 0, 1),
|
|
255
|
+
[minDimProp]: "min-content"
|
|
256
|
+
}, primaryPaneStyles),
|
|
257
|
+
id: `start-panel-${id}`
|
|
258
|
+
}, kids[0]), kids[1] && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", {
|
|
259
|
+
ref: splitterRef,
|
|
260
|
+
style: { [measurementProp]: `${handleSize}px` },
|
|
261
|
+
className: cx(styles.handle, { [styles.handleHorizontal]: direction === "column" }),
|
|
262
|
+
onPointerUp,
|
|
263
|
+
onPointerDown,
|
|
264
|
+
onPointerMove,
|
|
265
|
+
onKeyDown,
|
|
266
|
+
onKeyUp,
|
|
267
|
+
onDoubleClick,
|
|
268
|
+
onBlur,
|
|
269
|
+
role: "separator",
|
|
270
|
+
"aria-valuemin": 0,
|
|
271
|
+
"aria-valuemax": 100,
|
|
272
|
+
"aria-valuenow": 50,
|
|
273
|
+
"aria-controls": `start-panel-${id}`,
|
|
274
|
+
"aria-label": "Pane resize widget",
|
|
275
|
+
tabIndex: 0
|
|
276
|
+
}), /* @__PURE__ */ React.createElement("div", {
|
|
277
|
+
ref: secondPaneRef,
|
|
278
|
+
className: styles.panel,
|
|
279
|
+
style: __spreadValues({
|
|
280
|
+
flexGrow: initialSize === "auto" ? 0.5 : clamp(1 - initialSize, 0, 1),
|
|
281
|
+
[minDimProp]: "min-content",
|
|
282
|
+
visibility: `${visibilitySecond}`
|
|
283
|
+
}, secondaryPaneStyles),
|
|
284
|
+
id: `end-panel-${id}`
|
|
285
|
+
}, kids[1])));
|
|
286
|
+
}
|
|
287
|
+
function getStyles(theme) {
|
|
288
|
+
return {
|
|
289
|
+
handle: css({
|
|
290
|
+
cursor: "col-resize",
|
|
291
|
+
position: "relative",
|
|
292
|
+
flexShrink: 0,
|
|
293
|
+
userSelect: "none",
|
|
294
|
+
"&::before": {
|
|
295
|
+
content: '""',
|
|
296
|
+
position: "absolute",
|
|
297
|
+
backgroundColor: theme.colors.primary.main,
|
|
298
|
+
left: "50%",
|
|
299
|
+
transform: "translate(-50%)",
|
|
300
|
+
top: 0,
|
|
301
|
+
height: "100%",
|
|
302
|
+
width: "1px",
|
|
303
|
+
opacity: 0,
|
|
304
|
+
transition: "opacity ease-in-out 0.2s"
|
|
305
|
+
},
|
|
306
|
+
"&::after": {
|
|
307
|
+
content: '""',
|
|
308
|
+
width: "4px",
|
|
309
|
+
borderRadius: "4px",
|
|
310
|
+
backgroundColor: theme.colors.border.weak,
|
|
311
|
+
transition: "background-color ease-in-out 0.2s",
|
|
312
|
+
height: "50%",
|
|
313
|
+
top: "calc(50% - (50%) / 2)",
|
|
314
|
+
transform: "translateX(-50%)",
|
|
315
|
+
position: "absolute",
|
|
316
|
+
left: "50%"
|
|
317
|
+
},
|
|
318
|
+
"&:hover, &:focus-visible": {
|
|
319
|
+
outline: "none",
|
|
320
|
+
"&::before": {
|
|
321
|
+
opacity: 1
|
|
322
|
+
},
|
|
323
|
+
"&::after": {
|
|
324
|
+
backgroundColor: theme.colors.primary.main
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}),
|
|
328
|
+
handleHorizontal: css({
|
|
329
|
+
cursor: "row-resize",
|
|
330
|
+
"&::before": {
|
|
331
|
+
left: "inherit",
|
|
332
|
+
transform: "translateY(-50%)",
|
|
333
|
+
top: "50%",
|
|
334
|
+
height: "1px",
|
|
335
|
+
width: "100%"
|
|
336
|
+
},
|
|
337
|
+
"&::after": {
|
|
338
|
+
width: "50%",
|
|
339
|
+
height: "4px",
|
|
340
|
+
top: "50%",
|
|
341
|
+
transform: "translateY(-50%)",
|
|
342
|
+
left: "calc(50% - (50%) / 2)"
|
|
343
|
+
}
|
|
344
|
+
}),
|
|
345
|
+
container: css({
|
|
346
|
+
display: "flex",
|
|
347
|
+
width: "100%",
|
|
348
|
+
flexGrow: 1,
|
|
349
|
+
overflow: "hidden"
|
|
350
|
+
}),
|
|
351
|
+
panel: css({ display: "flex", position: "relative", flexBasis: 0 })
|
|
352
|
+
};
|
|
353
|
+
}
|
|
354
|
+
function measureElement(ref) {
|
|
355
|
+
if (ref === null) {
|
|
356
|
+
return void 0;
|
|
357
|
+
}
|
|
358
|
+
const savedBodyOverflow = document.body.style.overflow;
|
|
359
|
+
const savedWidth = ref.style.width;
|
|
360
|
+
const savedHeight = ref.style.height;
|
|
361
|
+
const savedFlex = ref.style.flexGrow;
|
|
362
|
+
document.body.style.overflow = "hidden";
|
|
363
|
+
ref.style.flexGrow = "0";
|
|
364
|
+
const { width: minWidth, height: minHeight } = ref.getBoundingClientRect();
|
|
365
|
+
ref.style.flexGrow = "100";
|
|
366
|
+
const { width: maxWidth, height: maxHeight } = ref.getBoundingClientRect();
|
|
367
|
+
document.body.style.overflow = savedBodyOverflow;
|
|
368
|
+
ref.style.width = savedWidth;
|
|
369
|
+
ref.style.height = savedHeight;
|
|
370
|
+
ref.style.flexGrow = savedFlex;
|
|
371
|
+
return { minWidth, maxWidth, minHeight, maxHeight };
|
|
372
|
+
}
|
|
373
|
+
function useResizeObserver(target, cb, throttleWait = 0, deps) {
|
|
374
|
+
const throttledCallback = throttle(cb, throttleWait);
|
|
375
|
+
useLayoutEffect(() => {
|
|
376
|
+
if (!target) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
const resizeObserver = new ResizeObserver(throttledCallback);
|
|
380
|
+
resizeObserver.observe(target, { box: "device-pixel-content-box" });
|
|
381
|
+
return () => resizeObserver.disconnect();
|
|
382
|
+
}, deps);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
export { Splitter };
|
|
386
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BsaXR0ZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbXBvbmVudHMvbGF5b3V0L3NwbGl0L1NwbGl0dGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGN4LCBjc3MgfSBmcm9tICdAZW1vdGlvbi9jc3MnO1xuaW1wb3J0IHsgdXNlU3R5bGVzMiB9IGZyb20gJ0BncmFmYW5hL3VpJztcbmltcG9ydCB7IGNsYW1wLCB0aHJvdHRsZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VDYWxsYmFjaywgdXNlTGF5b3V0RWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlVW5pcXVlSWQgfSBmcm9tICcuLi9MYXp5TG9hZGVyLmpzJztcblxudmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xuY29uc3QgUElYRUxTX1BFUl9NUyA9IDAuMztcbmNvbnN0IFZFUlRJQ0FMX0tFWVMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXCJBcnJvd1VwXCIsIFwiQXJyb3dEb3duXCJdKTtcbmNvbnN0IEhPUklaT05UQUxfS0VZUyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcIkFycm93TGVmdFwiLCBcIkFycm93UmlnaHRcIl0pO1xuY29uc3QgcHJvcHNGb3JEaXJlY3Rpb24gPSB7XG4gIHJvdzoge1xuICAgIGRpbTogXCJ3aWR0aFwiLFxuICAgIGF4aXM6IFwiY2xpZW50WFwiLFxuICAgIG1pbjogXCJtaW5XaWR0aFwiLFxuICAgIG1heDogXCJtYXhXaWR0aFwiXG4gIH0sXG4gIGNvbHVtbjoge1xuICAgIGRpbTogXCJoZWlnaHRcIixcbiAgICBheGlzOiBcImNsaWVudFlcIixcbiAgICBtaW46IFwibWluSGVpZ2h0XCIsXG4gICAgbWF4OiBcIm1heEhlaWdodFwiXG4gIH1cbn07XG5mdW5jdGlvbiBTcGxpdHRlcih7XG4gIGRpcmVjdGlvbiA9IFwicm93XCIsXG4gIGhhbmRsZVNpemUgPSAzMixcbiAgaW5pdGlhbFNpemUgPSBcImF1dG9cIixcbiAgcHJpbWFyeVBhbmVTdHlsZXMsXG4gIHNlY29uZGFyeVBhbmVTdHlsZXMsXG4gIG9uRHJhZ0ZpbmlzaGVkLFxuICBjaGlsZHJlblxufSkge1xuICBjb25zdCBraWRzID0gUmVhY3QuQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gIGNvbnN0IHNwbGl0dGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBmaXJzdFBhbmVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHNlY29uZFBhbmVSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgY29udGFpbmVyU2l6ZSA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgcHJpbWFyeVNpemVSZWYgPSB1c2VSZWYoXCIxZnJcIik7XG4gIGNvbnN0IGZpcnN0UGFuZU1lYXN1cmVtZW50cyA9IHVzZVJlZih2b2lkIDApO1xuICBjb25zdCBzYXZlZFBvcyA9IHVzZVJlZih2b2lkIDApO1xuICBjb25zdCBtZWFzdXJlbWVudFByb3AgPSBwcm9wc0ZvckRpcmVjdGlvbltkaXJlY3Rpb25dLmRpbTtcbiAgY29uc3QgY2xpZW50QXhpcyA9IHByb3BzRm9yRGlyZWN0aW9uW2RpcmVjdGlvbl0uYXhpcztcbiAgY29uc3QgbWluRGltUHJvcCA9IHByb3BzRm9yRGlyZWN0aW9uW2RpcmVjdGlvbl0ubWluO1xuICBjb25zdCBtYXhEaW1Qcm9wID0gcHJvcHNGb3JEaXJlY3Rpb25bZGlyZWN0aW9uXS5tYXg7XG4gIHVzZVJlc2l6ZU9ic2VydmVyKFxuICAgIGNvbnRhaW5lclJlZi5jdXJyZW50LFxuICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgICAgaWYgKCFlbnRyeS50YXJnZXQuaXNTYW1lTm9kZShjb250YWluZXJSZWYuY3VycmVudCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyU2l6ZSA9IGZpcnN0UGFuZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgICAgIGNvbnN0IG5ld0RpbXMgPSBtZWFzdXJlRWxlbWVudChmaXJzdFBhbmVSZWYuY3VycmVudCk7XG4gICAgICAgIHNwbGl0dGVyUmVmLmN1cnJlbnQuYXJpYVZhbHVlTm93ID0gYCR7Y2xhbXAoXG4gICAgICAgICAgKGN1clNpemUgLSBuZXdEaW1zW21pbkRpbVByb3BdKSAvIChuZXdEaW1zW21heERpbVByb3BdIC0gbmV3RGltc1ttaW5EaW1Qcm9wXSkgKiAxMDAsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAxMDBcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgIH0sXG4gICAgNTAwLFxuICAgIFttYXhEaW1Qcm9wLCBtaW5EaW1Qcm9wLCBkaXJlY3Rpb24sIG1lYXN1cmVtZW50UHJvcF1cbiAgKTtcbiAgY29uc3QgZHJhZ1N0YXJ0ID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBvblBvaW50ZXJEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIHByaW1hcnlTaXplUmVmLmN1cnJlbnQgPSBmaXJzdFBhbmVSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVttZWFzdXJlbWVudFByb3BdO1xuICAgICAgY29udGFpbmVyU2l6ZS5jdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgIGRyYWdTdGFydC5jdXJyZW50ID0gZVtjbGllbnRBeGlzXTtcbiAgICAgIHNwbGl0dGVyUmVmLmN1cnJlbnQuc2V0UG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpO1xuICAgICAgZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQgPSBtZWFzdXJlRWxlbWVudChmaXJzdFBhbmVSZWYuY3VycmVudCk7XG4gICAgICBzYXZlZFBvcy5jdXJyZW50ID0gdm9pZCAwO1xuICAgIH0sXG4gICAgW21lYXN1cmVtZW50UHJvcCwgY2xpZW50QXhpc11cbiAgKTtcbiAgY29uc3Qgb25Qb2ludGVyTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBpZiAoZHJhZ1N0YXJ0LmN1cnJlbnQgIT09IG51bGwgJiYgcHJpbWFyeVNpemVSZWYuY3VycmVudCAhPT0gXCIxZnJcIikge1xuICAgICAgICBjb25zdCBkaWZmID0gZVtjbGllbnRBeGlzXSAtIGRyYWdTdGFydC5jdXJyZW50O1xuICAgICAgICBjb25zdCBkaW1zID0gZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IG5ld1NpemUgPSBjbGFtcChwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ICsgZGlmZiwgZGltc1ttaW5EaW1Qcm9wXSwgZGltc1ttYXhEaW1Qcm9wXSk7XG4gICAgICAgIGNvbnN0IG5ld0ZsZXggPSBuZXdTaXplIC8gKGNvbnRhaW5lclNpemUuY3VycmVudCAtIGhhbmRsZVNpemUpO1xuICAgICAgICBmaXJzdFBhbmVSZWYuY3VycmVudC5zdHlsZS5mbGV4R3JvdyA9IGAke25ld0ZsZXh9YDtcbiAgICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgICAgY29uc3QgYXJpYVZhbHVlTm93ID0gY2xhbXAoXG4gICAgICAgICAgKG5ld1NpemUgLSBkaW1zW21pbkRpbVByb3BdKSAvIChkaW1zW21heERpbVByb3BdIC0gZGltc1ttaW5EaW1Qcm9wXSkgKiAxMDAsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAxMDBcbiAgICAgICAgKTtcbiAgICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudC5hcmlhVmFsdWVOb3cgPSBgJHthcmlhVmFsdWVOb3d9YDtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVTaXplLCBjbGllbnRBeGlzLCBtaW5EaW1Qcm9wLCBtYXhEaW1Qcm9wXVxuICApO1xuICBjb25zdCBvblBvaW50ZXJVcCA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudC5yZWxlYXNlUG9pbnRlckNhcHR1cmUoZS5wb2ludGVySWQpO1xuICAgICAgZHJhZ1N0YXJ0LmN1cnJlbnQgPSBudWxsO1xuICAgICAgb25EcmFnRmluaXNoZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRHJhZ0ZpbmlzaGVkKHBhcnNlRmxvYXQoZmlyc3RQYW5lUmVmLmN1cnJlbnQuc3R5bGUuZmxleEdyb3cpKTtcbiAgICB9LFxuICAgIFtvbkRyYWdGaW5pc2hlZF1cbiAgKTtcbiAgY29uc3QgcHJlc3NlZEtleXMgPSB1c2VSZWYoLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKSk7XG4gIGNvbnN0IGtleXNMYXN0SGFuZGxlZEF0ID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVQcmVzc2VkS2V5cyA9IHVzZUNhbGxiYWNrKFxuICAgICh0aW1lKSA9PiB7XG4gICAgICB2YXIgX2E7XG4gICAgICBjb25zdCBub3RoaW5nUHJlc3NlZCA9IHByZXNzZWRLZXlzLmN1cnJlbnQuc2l6ZSA9PT0gMDtcbiAgICAgIGlmIChub3RoaW5nUHJlc3NlZCkge1xuICAgICAgICBrZXlzTGFzdEhhbmRsZWRBdC5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChwcmltYXJ5U2l6ZVJlZi5jdXJyZW50ID09PSBcIjFmclwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGR0ID0gdGltZSAtICgoX2EgPSBrZXlzTGFzdEhhbmRsZWRBdC5jdXJyZW50KSAhPSBudWxsID8gX2EgOiB0aW1lKTtcbiAgICAgIGNvbnN0IGR4ID0gZHQgKiBQSVhFTFNfUEVSX01TO1xuICAgICAgbGV0IHNpemVDaGFuZ2UgPSAwO1xuICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gXCJyb3dcIikge1xuICAgICAgICBpZiAocHJlc3NlZEtleXMuY3VycmVudC5oYXMoXCJBcnJvd0xlZnRcIikpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlIC09IGR4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcmVzc2VkS2V5cy5jdXJyZW50LmhhcyhcIkFycm93UmlnaHRcIikpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlICs9IGR4O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJlc3NlZEtleXMuY3VycmVudC5oYXMoXCJBcnJvd1VwXCIpKSB7XG4gICAgICAgICAgc2l6ZUNoYW5nZSAtPSBkeDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJlc3NlZEtleXMuY3VycmVudC5oYXMoXCJBcnJvd0Rvd25cIikpIHtcbiAgICAgICAgICBzaXplQ2hhbmdlICs9IGR4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBmaXJzdFBhbmVEaW1zID0gZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQ7XG4gICAgICBjb25zdCBjdXJTaXplID0gZmlyc3RQYW5lUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgIGNvbnN0IG5ld1NpemUgPSBjbGFtcChjdXJTaXplICsgc2l6ZUNoYW5nZSwgZmlyc3RQYW5lRGltc1ttaW5EaW1Qcm9wXSwgZmlyc3RQYW5lRGltc1ttYXhEaW1Qcm9wXSk7XG4gICAgICBjb25zdCBuZXdGbGV4ID0gbmV3U2l6ZSAvIChjb250YWluZXJTaXplLmN1cnJlbnQgLSBoYW5kbGVTaXplKTtcbiAgICAgIGZpcnN0UGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gYCR7bmV3RmxleH1gO1xuICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgIGNvbnN0IGFyaWFWYWx1ZU5vdyA9IChuZXdTaXplIC0gZmlyc3RQYW5lRGltc1ttaW5EaW1Qcm9wXSkgLyAoZmlyc3RQYW5lRGltc1ttYXhEaW1Qcm9wXSAtIGZpcnN0UGFuZURpbXNbbWluRGltUHJvcF0pICogMTAwO1xuICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudC5hcmlhVmFsdWVOb3cgPSBgJHtjbGFtcChhcmlhVmFsdWVOb3csIDAsIDEwMCl9YDtcbiAgICAgIGtleXNMYXN0SGFuZGxlZEF0LmN1cnJlbnQgPSB0aW1lO1xuICAgICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShoYW5kbGVQcmVzc2VkS2V5cyk7XG4gICAgfSxcbiAgICBbZGlyZWN0aW9uLCBoYW5kbGVTaXplLCBtaW5EaW1Qcm9wLCBtYXhEaW1Qcm9wLCBtZWFzdXJlbWVudFByb3BdXG4gICk7XG4gIGNvbnN0IG9uS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlKSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgICBpZiAoc2F2ZWRQb3MuY3VycmVudCA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgc2F2ZWRQb3MuY3VycmVudCA9IGZpcnN0UGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93O1xuICAgICAgICAgIGZpcnN0UGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gXCIwXCI7XG4gICAgICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gXCIxXCI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZmlyc3RQYW5lUmVmLmN1cnJlbnQuc3R5bGUuZmxleEdyb3cgPSBzYXZlZFBvcy5jdXJyZW50O1xuICAgICAgICAgIHNlY29uZFBhbmVSZWYuY3VycmVudC5zdHlsZS5mbGV4R3JvdyA9IGAkezEgLSBwYXJzZUZsb2F0KHNhdmVkUG9zLmN1cnJlbnQpfWA7XG4gICAgICAgICAgc2F2ZWRQb3MuY3VycmVudCA9IHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGUua2V5ID09PSBcIkhvbWVcIikge1xuICAgICAgICBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCA9IG1lYXN1cmVFbGVtZW50KGZpcnN0UGFuZVJlZi5jdXJyZW50KTtcbiAgICAgICAgY29udGFpbmVyU2l6ZS5jdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgICAgY29uc3QgbmV3RmxleCA9IGZpcnN0UGFuZU1lYXN1cmVtZW50cy5jdXJyZW50W21pbkRpbVByb3BdIC8gKGNvbnRhaW5lclNpemUuY3VycmVudCAtIGhhbmRsZVNpemUpO1xuICAgICAgICBmaXJzdFBhbmVSZWYuY3VycmVudC5zdHlsZS5mbGV4R3JvdyA9IGAke25ld0ZsZXh9YDtcbiAgICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudC5hcmlhVmFsdWVOb3cgPSBcIjBcIjtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChlLmtleSA9PT0gXCJFbmRcIikge1xuICAgICAgICBmaXJzdFBhbmVNZWFzdXJlbWVudHMuY3VycmVudCA9IG1lYXN1cmVFbGVtZW50KGZpcnN0UGFuZVJlZi5jdXJyZW50KTtcbiAgICAgICAgY29udGFpbmVyU2l6ZS5jdXJyZW50ID0gY29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClbbWVhc3VyZW1lbnRQcm9wXTtcbiAgICAgICAgY29uc3QgbmV3RmxleCA9IGZpcnN0UGFuZU1lYXN1cmVtZW50cy5jdXJyZW50W21heERpbVByb3BdIC8gKGNvbnRhaW5lclNpemUuY3VycmVudCAtIGhhbmRsZVNpemUpO1xuICAgICAgICBmaXJzdFBhbmVSZWYuY3VycmVudC5zdHlsZS5mbGV4R3JvdyA9IGAke25ld0ZsZXh9YDtcbiAgICAgICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gYCR7MSAtIG5ld0ZsZXh9YDtcbiAgICAgICAgc3BsaXR0ZXJSZWYuY3VycmVudC5hcmlhVmFsdWVOb3cgPSBcIjEwMFwiO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIShkaXJlY3Rpb24gPT09IFwiY29sdW1uXCIgJiYgVkVSVElDQUxfS0VZUy5oYXMoZS5rZXkpIHx8IGRpcmVjdGlvbiA9PT0gXCJyb3dcIiAmJiBIT1JJWk9OVEFMX0tFWVMuaGFzKGUua2V5KSkgfHwgcHJlc3NlZEtleXMuY3VycmVudC5oYXMoZS5rZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNhdmVkUG9zLmN1cnJlbnQgPSB2b2lkIDA7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgcHJpbWFyeVNpemVSZWYuY3VycmVudCA9IGZpcnN0UGFuZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgICBjb250YWluZXJTaXplLmN1cnJlbnQgPSBjb250YWluZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVttZWFzdXJlbWVudFByb3BdO1xuICAgICAgZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQgPSBtZWFzdXJlRWxlbWVudChmaXJzdFBhbmVSZWYuY3VycmVudCk7XG4gICAgICBjb25zdCBuZXdLZXkgPSAhcHJlc3NlZEtleXMuY3VycmVudC5oYXMoZS5rZXkpO1xuICAgICAgaWYgKG5ld0tleSkge1xuICAgICAgICBjb25zdCBpbml0aWF0ZUFuaW1hdGlvbkxvb3AgPSBwcmVzc2VkS2V5cy5jdXJyZW50LnNpemUgPT09IDA7XG4gICAgICAgIHByZXNzZWRLZXlzLmN1cnJlbnQuYWRkKGUua2V5KTtcbiAgICAgICAgaWYgKGluaXRpYXRlQW5pbWF0aW9uTG9vcCkge1xuICAgICAgICAgIHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoaGFuZGxlUHJlc3NlZEtleXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbZGlyZWN0aW9uLCBoYW5kbGVQcmVzc2VkS2V5cywgaGFuZGxlU2l6ZSwgbWF4RGltUHJvcCwgbWVhc3VyZW1lbnRQcm9wLCBtaW5EaW1Qcm9wXVxuICApO1xuICBjb25zdCBvbktleVVwID0gdXNlQ2FsbGJhY2soXG4gICAgKGUpID0+IHtcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IFwicm93XCIgJiYgIUhPUklaT05UQUxfS0VZUy5oYXMoZS5rZXkpIHx8IGRpcmVjdGlvbiA9PT0gXCJjb2x1bW5cIiAmJiAhVkVSVElDQUxfS0VZUy5oYXMoZS5rZXkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHByZXNzZWRLZXlzLmN1cnJlbnQuZGVsZXRlKGUua2V5KTtcbiAgICAgIG9uRHJhZ0ZpbmlzaGVkID09IG51bGwgPyB2b2lkIDAgOiBvbkRyYWdGaW5pc2hlZChwYXJzZUZsb2F0KGZpcnN0UGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93KSk7XG4gICAgfSxcbiAgICBbZGlyZWN0aW9uLCBvbkRyYWdGaW5pc2hlZF1cbiAgKTtcbiAgY29uc3Qgb25Eb3VibGVDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBmaXJzdFBhbmVSZWYuY3VycmVudC5zdHlsZS5mbGV4R3JvdyA9IFwiMC41XCI7XG4gICAgc2Vjb25kUGFuZVJlZi5jdXJyZW50LnN0eWxlLmZsZXhHcm93ID0gXCIwLjVcIjtcbiAgICBjb25zdCBkaW0gPSBtZWFzdXJlRWxlbWVudChmaXJzdFBhbmVSZWYuY3VycmVudCk7XG4gICAgZmlyc3RQYW5lTWVhc3VyZW1lbnRzLmN1cnJlbnQgPSBkaW07XG4gICAgcHJpbWFyeVNpemVSZWYuY3VycmVudCA9IGZpcnN0UGFuZVJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW21lYXN1cmVtZW50UHJvcF07XG4gICAgc3BsaXR0ZXJSZWYuY3VycmVudC5hcmlhVmFsdWVOb3cgPSBgJHsocHJpbWFyeVNpemVSZWYuY3VycmVudCAtIGRpbVttaW5EaW1Qcm9wXSkgLyAoZGltW21heERpbVByb3BdIC0gZGltW21pbkRpbVByb3BdKSAqIDEwMH1gO1xuICB9LCBbbWF4RGltUHJvcCwgbWVhc3VyZW1lbnRQcm9wLCBtaW5EaW1Qcm9wXSk7XG4gIGNvbnN0IG9uQmx1ciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAocHJlc3NlZEtleXMuY3VycmVudC5zaXplID4gMCkge1xuICAgICAgcHJlc3NlZEtleXMuY3VycmVudC5jbGVhcigpO1xuICAgICAgZHJhZ1N0YXJ0LmN1cnJlbnQgPSBudWxsO1xuICAgICAgb25EcmFnRmluaXNoZWQgPT0gbnVsbCA/IHZvaWQgMCA6IG9uRHJhZ0ZpbmlzaGVkKHBhcnNlRmxvYXQoZmlyc3RQYW5lUmVmLmN1cnJlbnQuc3R5bGUuZmxleEdyb3cpKTtcbiAgICB9XG4gIH0sIFtvbkRyYWdGaW5pc2hlZF0pO1xuICBjb25zdCBzdHlsZXMgPSB1c2VTdHlsZXMyKGdldFN0eWxlcyk7XG4gIGNvbnN0IGlkID0gdXNlVW5pcXVlSWQoKTtcbiAgY29uc3Qgc2Vjb25kQXZhaWxhYmxlID0ga2lkcy5sZW5ndGggPT09IDI7XG4gIGNvbnN0IHZpc2liaWxpdHlTZWNvbmQgPSBzZWNvbmRBdmFpbGFibGUgPyBcInZpc2libGVcIiA6IFwiaGlkZGVuXCI7XG4gIHJldHVybiAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgcmVmOiBjb250YWluZXJSZWYsXG4gICAgY2xhc3NOYW1lOiBzdHlsZXMuY29udGFpbmVyLFxuICAgIHN0eWxlOiB7XG4gICAgICBmbGV4RGlyZWN0aW9uOiBkaXJlY3Rpb25cbiAgICB9XG4gIH0sIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICByZWY6IGZpcnN0UGFuZVJlZixcbiAgICBjbGFzc05hbWU6IHN0eWxlcy5wYW5lbCxcbiAgICBzdHlsZTogX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgZmxleEdyb3c6IGluaXRpYWxTaXplID09PSBcImF1dG9cIiA/IDAuNSA6IGNsYW1wKGluaXRpYWxTaXplLCAwLCAxKSxcbiAgICAgIFttaW5EaW1Qcm9wXTogXCJtaW4tY29udGVudFwiXG4gICAgfSwgcHJpbWFyeVBhbmVTdHlsZXMpLFxuICAgIGlkOiBgc3RhcnQtcGFuZWwtJHtpZH1gXG4gIH0sIGtpZHNbMF0pLCBraWRzWzFdICYmIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgcmVmOiBzcGxpdHRlclJlZixcbiAgICBzdHlsZTogeyBbbWVhc3VyZW1lbnRQcm9wXTogYCR7aGFuZGxlU2l6ZX1weGAgfSxcbiAgICBjbGFzc05hbWU6IGN4KHN0eWxlcy5oYW5kbGUsIHsgW3N0eWxlcy5oYW5kbGVIb3Jpem9udGFsXTogZGlyZWN0aW9uID09PSBcImNvbHVtblwiIH0pLFxuICAgIG9uUG9pbnRlclVwLFxuICAgIG9uUG9pbnRlckRvd24sXG4gICAgb25Qb2ludGVyTW92ZSxcbiAgICBvbktleURvd24sXG4gICAgb25LZXlVcCxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIG9uQmx1cixcbiAgICByb2xlOiBcInNlcGFyYXRvclwiLFxuICAgIFwiYXJpYS12YWx1ZW1pblwiOiAwLFxuICAgIFwiYXJpYS12YWx1ZW1heFwiOiAxMDAsXG4gICAgXCJhcmlhLXZhbHVlbm93XCI6IDUwLFxuICAgIFwiYXJpYS1jb250cm9sc1wiOiBgc3RhcnQtcGFuZWwtJHtpZH1gLFxuICAgIFwiYXJpYS1sYWJlbFwiOiBcIlBhbmUgcmVzaXplIHdpZGdldFwiLFxuICAgIHRhYkluZGV4OiAwXG4gIH0pLCAvKiBAX19QVVJFX18gKi8gUmVhY3QuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgcmVmOiBzZWNvbmRQYW5lUmVmLFxuICAgIGNsYXNzTmFtZTogc3R5bGVzLnBhbmVsLFxuICAgIHN0eWxlOiBfX3NwcmVhZFZhbHVlcyh7XG4gICAgICBmbGV4R3JvdzogaW5pdGlhbFNpemUgPT09IFwiYXV0b1wiID8gMC41IDogY2xhbXAoMSAtIGluaXRpYWxTaXplLCAwLCAxKSxcbiAgICAgIFttaW5EaW1Qcm9wXTogXCJtaW4tY29udGVudFwiLFxuICAgICAgdmlzaWJpbGl0eTogYCR7dmlzaWJpbGl0eVNlY29uZH1gXG4gICAgfSwgc2Vjb25kYXJ5UGFuZVN0eWxlcyksXG4gICAgaWQ6IGBlbmQtcGFuZWwtJHtpZH1gXG4gIH0sIGtpZHNbMV0pKSk7XG59XG5mdW5jdGlvbiBnZXRTdHlsZXModGhlbWUpIHtcbiAgcmV0dXJuIHtcbiAgICBoYW5kbGU6IGNzcyh7XG4gICAgICBjdXJzb3I6IFwiY29sLXJlc2l6ZVwiLFxuICAgICAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICB1c2VyU2VsZWN0OiBcIm5vbmVcIixcbiAgICAgIFwiJjo6YmVmb3JlXCI6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLmNvbG9ycy5wcmltYXJ5Lm1haW4sXG4gICAgICAgIGxlZnQ6IFwiNTAlXCIsXG4gICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGUoLTUwJSlcIixcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICBoZWlnaHQ6IFwiMTAwJVwiLFxuICAgICAgICB3aWR0aDogXCIxcHhcIixcbiAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgdHJhbnNpdGlvbjogXCJvcGFjaXR5IGVhc2UtaW4tb3V0IDAuMnNcIlxuICAgICAgfSxcbiAgICAgIFwiJjo6YWZ0ZXJcIjoge1xuICAgICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICAgIHdpZHRoOiBcIjRweFwiLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiNHB4XCIsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3JzLmJvcmRlci53ZWFrLFxuICAgICAgICB0cmFuc2l0aW9uOiBcImJhY2tncm91bmQtY29sb3IgZWFzZS1pbi1vdXQgMC4yc1wiLFxuICAgICAgICBoZWlnaHQ6IFwiNTAlXCIsXG4gICAgICAgIHRvcDogXCJjYWxjKDUwJSAtICg1MCUpIC8gMilcIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVgoLTUwJSlcIixcbiAgICAgICAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgICAgICAgbGVmdDogXCI1MCVcIlxuICAgICAgfSxcbiAgICAgIFwiJjpob3ZlciwgJjpmb2N1cy12aXNpYmxlXCI6IHtcbiAgICAgICAgb3V0bGluZTogXCJub25lXCIsXG4gICAgICAgIFwiJjo6YmVmb3JlXCI6IHtcbiAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgIH0sXG4gICAgICAgIFwiJjo6YWZ0ZXJcIjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUuY29sb3JzLnByaW1hcnkubWFpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSksXG4gICAgaGFuZGxlSG9yaXpvbnRhbDogY3NzKHtcbiAgICAgIGN1cnNvcjogXCJyb3ctcmVzaXplXCIsXG4gICAgICBcIiY6OmJlZm9yZVwiOiB7XG4gICAgICAgIGxlZnQ6IFwiaW5oZXJpdFwiLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlWSgtNTAlKVwiLFxuICAgICAgICB0b3A6IFwiNTAlXCIsXG4gICAgICAgIGhlaWdodDogXCIxcHhcIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9LFxuICAgICAgXCImOjphZnRlclwiOiB7XG4gICAgICAgIHdpZHRoOiBcIjUwJVwiLFxuICAgICAgICBoZWlnaHQ6IFwiNHB4XCIsXG4gICAgICAgIHRvcDogXCI1MCVcIixcbiAgICAgICAgdHJhbnNmb3JtOiBcInRyYW5zbGF0ZVkoLTUwJSlcIixcbiAgICAgICAgbGVmdDogXCJjYWxjKDUwJSAtICg1MCUpIC8gMilcIlxuICAgICAgfVxuICAgIH0pLFxuICAgIGNvbnRhaW5lcjogY3NzKHtcbiAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgICAgZmxleEdyb3c6IDEsXG4gICAgICBvdmVyZmxvdzogXCJoaWRkZW5cIlxuICAgIH0pLFxuICAgIHBhbmVsOiBjc3MoeyBkaXNwbGF5OiBcImZsZXhcIiwgcG9zaXRpb246IFwicmVsYXRpdmVcIiwgZmxleEJhc2lzOiAwIH0pXG4gIH07XG59XG5mdW5jdGlvbiBtZWFzdXJlRWxlbWVudChyZWYpIHtcbiAgaWYgKHJlZiA9PT0gbnVsbCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgY29uc3Qgc2F2ZWRCb2R5T3ZlcmZsb3cgPSBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93O1xuICBjb25zdCBzYXZlZFdpZHRoID0gcmVmLnN0eWxlLndpZHRoO1xuICBjb25zdCBzYXZlZEhlaWdodCA9IHJlZi5zdHlsZS5oZWlnaHQ7XG4gIGNvbnN0IHNhdmVkRmxleCA9IHJlZi5zdHlsZS5mbGV4R3JvdztcbiAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9IFwiaGlkZGVuXCI7XG4gIHJlZi5zdHlsZS5mbGV4R3JvdyA9IFwiMFwiO1xuICBjb25zdCB7IHdpZHRoOiBtaW5XaWR0aCwgaGVpZ2h0OiBtaW5IZWlnaHQgfSA9IHJlZi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgcmVmLnN0eWxlLmZsZXhHcm93ID0gXCIxMDBcIjtcbiAgY29uc3QgeyB3aWR0aDogbWF4V2lkdGgsIGhlaWdodDogbWF4SGVpZ2h0IH0gPSByZWYuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSBzYXZlZEJvZHlPdmVyZmxvdztcbiAgcmVmLnN0eWxlLndpZHRoID0gc2F2ZWRXaWR0aDtcbiAgcmVmLnN0eWxlLmhlaWdodCA9IHNhdmVkSGVpZ2h0O1xuICByZWYuc3R5bGUuZmxleEdyb3cgPSBzYXZlZEZsZXg7XG4gIHJldHVybiB7IG1pbldpZHRoLCBtYXhXaWR0aCwgbWluSGVpZ2h0LCBtYXhIZWlnaHQgfTtcbn1cbmZ1bmN0aW9uIHVzZVJlc2l6ZU9ic2VydmVyKHRhcmdldCwgY2IsIHRocm90dGxlV2FpdCA9IDAsIGRlcHMpIHtcbiAgY29uc3QgdGhyb3R0bGVkQ2FsbGJhY2sgPSB0aHJvdHRsZShjYiwgdGhyb3R0bGVXYWl0KTtcbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhcmdldCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcih0aHJvdHRsZWRDYWxsYmFjayk7XG4gICAgcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQsIHsgYm94OiBcImRldmljZS1waXhlbC1jb250ZW50LWJveFwiIH0pO1xuICAgIHJldHVybiAoKSA9PiByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH0sIGRlcHMpO1xufVxuXG5leHBvcnQgeyBTcGxpdHRlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lVM0JzYVhSMFpYSXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMeTR1TDNOeVl5OWpiMjF3YjI1bGJuUnpMMnhoZVc5MWRDOXpjR3hwZEM5VGNHeHBkSFJsY2k1MGMzZ2lYU3dpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnWTNOekxDQmplQ0I5SUdaeWIyMGdKMEJsYlc5MGFXOXVMMk56Y3ljN1hHNXBiWEJ2Y25RZ2V5QkhjbUZtWVc1aFZHaGxiV1V5SUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2WkdGMFlTYzdYRzVwYlhCdmNuUWdleUIxYzJWVGRIbHNaWE15SUgwZ1puSnZiU0FuUUdkeVlXWmhibUV2ZFdrbk8xeHVhVzF3YjNKMElIc2dZMnhoYlhBc0lIUm9jbTkwZEd4bElIMGdabkp2YlNBbmJHOWtZWE5vSnp0Y2JtbHRjRzl5ZENCU1pXRmpkQ3dnZXlCMWMyVkRZV3hzWW1GamF5d2dkWE5sVEdGNWIzVjBSV1ptWldOMExDQjFjMlZTWldZZ2ZTQm1jbTl0SUNkeVpXRmpkQ2M3WEc1cGJYQnZjblFnZXlCMWMyVlZibWx4ZFdWSlpDQjlJR1p5YjIwZ0p5NHVMMHhoZW5sTWIyRmtaWEluTzF4dVhHNXBiblJsY21aaFkyVWdVSEp2Y0hNZ2UxeHVJQ0JvWVc1a2JHVlRhWHBsUHpvZ2JuVnRZbVZ5TzF4dUlDQnBibWwwYVdGc1UybDZaVDg2SUc1MWJXSmxjaUI4SUNkaGRYUnZKenRjYmlBZ1pHbHlaV04wYVc5dVB6b2dKM0p2ZHljZ2ZDQW5ZMjlzZFcxdUp6dGNiaUFnY0hKcGJXRnllVDg2SUNkbWFYSnpkQ2NnZkNBbmMyVmpiMjVrSnp0Y2JpQWdZMjlzYkdGd2MyVmtSR1ZtWVhWc2REODZJR0p2YjJ4bFlXNDdYRzRnSUhCeWFXMWhjbmxRWVc1bFUzUjViR1Z6UHpvZ1VtVmhZM1F1UTFOVFVISnZjR1Z5ZEdsbGN6dGNiaUFnYzJWamIyNWtZWEo1VUdGdVpWTjBlV3hsY3o4NklGSmxZV04wTGtOVFUxQnliM0JsY25ScFpYTTdYRzRnSUc5dVJISmhaMFpwYm1semFHVmtQem9nS0hOcGVtVTZJRzUxYldKbGNpa2dQVDRnZG05cFpEdGNiaUFnWTJocGJHUnlaVzQ2SUZ0U1pXRmpkQzVTWldGamRFNXZaR1VzSUZKbFlXTjBMbEpsWVdOMFRtOWtaVjA3WEc1OVhHNWNibU52Ym5OMElGQkpXRVZNVTE5UVJWSmZUVk1nUFNBd0xqTWdZWE1nWTI5dWMzUTdYRzVqYjI1emRDQldSVkpVU1VOQlRGOUxSVmxUSUQwZ2JtVjNJRk5sZENoYkowRnljbTkzVlhBbkxDQW5RWEp5YjNkRWIzZHVKMTBwTzF4dVkyOXVjM1FnU0U5U1NWcFBUbFJCVEY5TFJWbFRJRDBnYm1WM0lGTmxkQ2hiSjBGeWNtOTNUR1ZtZENjc0lDZEJjbkp2ZDFKcFoyaDBKMTBwTzF4dVhHNWpiMjV6ZENCd2NtOXdjMFp2Y2tScGNtVmpkR2x2YmlBOUlIdGNiaUFnY205M09pQjdYRzRnSUNBZ1pHbHRPaUFuZDJsa2RHZ25MRnh1SUNBZ0lHRjRhWE02SUNkamJHbGxiblJZSnl4Y2JpQWdJQ0J0YVc0NklDZHRhVzVYYVdSMGFDY3NYRzRnSUNBZ2JXRjRPaUFuYldGNFYybGtkR2duTEZ4dUlDQjlMRnh1SUNCamIyeDFiVzQ2SUh0Y2JpQWdJQ0JrYVcwNklDZG9aV2xuYUhRbkxGeHVJQ0FnSUdGNGFYTTZJQ2RqYkdsbGJuUlpKeXhjYmlBZ0lDQnRhVzQ2SUNkdGFXNUlaV2xuYUhRbkxGeHVJQ0FnSUcxaGVEb2dKMjFoZUVobGFXZG9kQ2NzWEc0Z0lIMHNYRzU5SUdGeklHTnZibk4wTzF4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1UzQnNhWFIwWlhJb2UxeHVJQ0JrYVhKbFkzUnBiMjRnUFNBbmNtOTNKeXhjYmlBZ2FHRnVaR3hsVTJsNlpTQTlJRE15TEZ4dUlDQnBibWwwYVdGc1UybDZaU0E5SUNkaGRYUnZKeXhjYmlBZ2NISnBiV0Z5ZVZCaGJtVlRkSGxzWlhNc1hHNGdJSE5sWTI5dVpHRnllVkJoYm1WVGRIbHNaWE1zWEc0Z0lHOXVSSEpoWjBacGJtbHphR1ZrTEZ4dUlDQmphR2xzWkhKbGJpeGNibjA2SUZCeWIzQnpLU0I3WEc0Z0lHTnZibk4wSUd0cFpITWdQU0JTWldGamRDNURhR2xzWkhKbGJpNTBiMEZ5Y21GNUtHTm9hV3hrY21WdUtUdGNibHh1SUNCamIyNXpkQ0J6Y0d4cGRIUmxjbEpsWmlBOUlIVnpaVkpsWmp4SVZFMU1SR2wyUld4bGJXVnVkQ0I4SUc1MWJHdytLRzUxYkd3cE8xeHVJQ0JqYjI1emRDQm1hWEp6ZEZCaGJtVlNaV1lnUFNCMWMyVlNaV1k4U0ZSTlRFUnBka1ZzWlcxbGJuUWdmQ0J1ZFd4c1BpaHVkV3hzS1R0Y2JpQWdZMjl1YzNRZ2MyVmpiMjVrVUdGdVpWSmxaaUE5SUhWelpWSmxaanhJVkUxTVJHbDJSV3hsYldWdWRDQjhJRzUxYkd3K0tHNTFiR3dwTzF4dUlDQmpiMjV6ZENCamIyNTBZV2x1WlhKU1pXWWdQU0IxYzJWU1pXWThTRlJOVEVScGRrVnNaVzFsYm5RZ2ZDQnVkV3hzUGlodWRXeHNLVHRjYmlBZ1kyOXVjM1FnWTI5dWRHRnBibVZ5VTJsNlpTQTlJSFZ6WlZKbFpqeHVkVzFpWlhJZ2ZDQnVkV3hzUGlodWRXeHNLVHRjYmlBZ1kyOXVjM1FnY0hKcGJXRnllVk5wZW1WU1pXWWdQU0IxYzJWU1pXWThKekZtY2ljZ2ZDQnVkVzFpWlhJK0tDY3habkluS1R0Y2JseHVJQ0JqYjI1emRDQm1hWEp6ZEZCaGJtVk5aV0Z6ZFhKbGJXVnVkSE1nUFNCMWMyVlNaV1k4VW1WMGRYSnVWSGx3WlR4MGVYQmxiMllnYldWaGMzVnlaVVZzWlcxbGJuUStQaWgxYm1SbFptbHVaV1FwTzF4dUlDQmpiMjV6ZENCellYWmxaRkJ2Y3lBOUlIVnpaVkpsWmp4emRISnBibWNnZkNCMWJtUmxabWx1WldRK0tIVnVaR1ZtYVc1bFpDazdYRzVjYmlBZ1kyOXVjM1FnYldWaGMzVnlaVzFsYm5SUWNtOXdJRDBnY0hKdmNITkdiM0pFYVhKbFkzUnBiMjViWkdseVpXTjBhVzl1WFM1a2FXMDdYRzRnSUdOdmJuTjBJR05zYVdWdWRFRjRhWE1nUFNCd2NtOXdjMFp2Y2tScGNtVmpkR2x2Ymx0a2FYSmxZM1JwYjI1ZExtRjRhWE03WEc0Z0lHTnZibk4wSUcxcGJrUnBiVkJ5YjNBZ1BTQndjbTl3YzBadmNrUnBjbVZqZEdsdmJsdGthWEpsWTNScGIyNWRMbTFwYmp0Y2JpQWdZMjl1YzNRZ2JXRjRSR2x0VUhKdmNDQTlJSEJ5YjNCelJtOXlSR2x5WldOMGFXOXVXMlJwY21WamRHbHZibDB1YldGNE8xeHVYRzRnSUM4dklGVnphVzVuSUdFZ2NtVnphWHBsSUc5aWMyVnlkbVZ5SUdobGNtVXNJR0Z6SUhkcGRHZ2dZMjl1ZEdWdWRDQnZjaUJ6WTNKbFpXNGdZbUZ6WldRZ2QybGtkR2d2YUdWcFoyaDBJSFJvWlNCeVlYUnBieUJpWlhSM1pXVnVJSEJoYm1WeklHMXBaMmgwWEc0Z0lDOHZJR05vWVc1blpTQmhablJsY2lCaElIZHBibVJ2ZHlCeVpYTnBlbVVzSUhOdklHRnlhV0ZXWVd4MVpVNXZkeUJ1WldWa2N5QjBieUJpWlNCMWNHUmhkR1ZrSUdGalkyOXlaR2x1WjJ4NVhHNGdJSFZ6WlZKbGMybDZaVTlpYzJWeWRtVnlLRnh1SUNBZ0lHTnZiblJoYVc1bGNsSmxaaTVqZFhKeVpXNTBJU3hjYmlBZ0lDQW9aVzUwY21sbGN5a2dQVDRnZTF4dUlDQWdJQ0FnWm05eUlDaGpiMjV6ZENCbGJuUnllU0J2WmlCbGJuUnlhV1Z6S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doWlc1MGNua3VkR0Z5WjJWMExtbHpVMkZ0WlU1dlpHVW9ZMjl1ZEdGcGJtVnlVbVZtTG1OMWNuSmxiblFwS1NCN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdZM1Z5VTJsNlpTQTlJR1pwY25OMFVHRnVaVkpsWmk1amRYSnlaVzUwSVM1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVnR0WldGemRYSmxiV1Z1ZEZCeWIzQmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnVaWGRFYVcxeklEMGdiV1ZoYzNWeVpVVnNaVzFsYm5Rb1ptbHljM1JRWVc1bFVtVm1MbU4xY25KbGJuUWhLVHRjYmlBZ0lDQWdJQ0FnYzNCc2FYUjBaWEpTWldZdVkzVnljbVZ1ZENFdVlYSnBZVlpoYkhWbFRtOTNJRDBnWUNSN1kyeGhiWEFvWEc0Z0lDQWdJQ0FnSUNBZ0tDaGpkWEpUYVhwbElDMGdibVYzUkdsdGMxdHRhVzVFYVcxUWNtOXdYU2tnTHlBb2JtVjNSR2x0YzF0dFlYaEVhVzFRY205d1hTQXRJRzVsZDBScGJYTmJiV2x1UkdsdFVISnZjRjBwS1NBcUlERXdNQ3hjYmlBZ0lDQWdJQ0FnSUNBd0xGeHVJQ0FnSUNBZ0lDQWdJREV3TUZ4dUlDQWdJQ0FnSUNBcGZXQTdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTeGNiaUFnSUNBMU1EQXNYRzRnSUNBZ1cyMWhlRVJwYlZCeWIzQXNJRzFwYmtScGJWQnliM0FzSUdScGNtVmpkR2x2Yml3Z2JXVmhjM1Z5WlcxbGJuUlFjbTl3WFZ4dUlDQXBPMXh1WEc0Z0lHTnZibk4wSUdSeVlXZFRkR0Z5ZENBOUlIVnpaVkpsWmp4dWRXMWlaWElnZkNCdWRXeHNQaWh1ZFd4c0tUdGNiaUFnWTI5dWMzUWdiMjVRYjJsdWRHVnlSRzkzYmlBOUlIVnpaVU5oYkd4aVlXTnJLRnh1SUNBZ0lDaGxPaUJTWldGamRDNVFiMmx1ZEdWeVJYWmxiblE4U0ZSTlRFUnBka1ZzWlcxbGJuUStLU0E5UGlCN1hHNGdJQ0FnSUNBdkx5QnRaV0Z6ZFhKbElHeGxablF0YzJsa1pTQjNhV1IwYUZ4dUlDQWdJQ0FnY0hKcGJXRnllVk5wZW1WU1pXWXVZM1Z5Y21WdWRDQTlJR1pwY25OMFVHRnVaVkpsWmk1amRYSnlaVzUwSVM1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVnR0WldGemRYSmxiV1Z1ZEZCeWIzQmRPMXh1SUNBZ0lDQWdZMjl1ZEdGcGJtVnlVMmw2WlM1amRYSnlaVzUwSUQwZ1kyOXVkR0ZwYm1WeVVtVm1MbU4xY25KbGJuUWhMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENncFcyMWxZWE4xY21WdFpXNTBVSEp2Y0YwN1hHNWNiaUFnSUNBZ0lDOHZJSE5sZENCd2IzTnBkR2x2YmlCaGRDQnpkR0Z5ZENCdlppQmtjbUZuWEc0Z0lDQWdJQ0JrY21GblUzUmhjblF1WTNWeWNtVnVkQ0E5SUdWYlkyeHBaVzUwUVhocGMxMDdYRzRnSUNBZ0lDQnpjR3hwZEhSbGNsSmxaaTVqZFhKeVpXNTBJUzV6WlhSUWIybHVkR1Z5UTJGd2RIVnlaU2hsTG5CdmFXNTBaWEpKWkNrN1hHNGdJQ0FnSUNCbWFYSnpkRkJoYm1WTlpXRnpkWEpsYldWdWRITXVZM1Z5Y21WdWRDQTlJRzFsWVhOMWNtVkZiR1Z0Wlc1MEtHWnBjbk4wVUdGdVpWSmxaaTVqZFhKeVpXNTBJU2s3WEc1Y2JpQWdJQ0FnSUhOaGRtVmtVRzl6TG1OMWNuSmxiblFnUFNCMWJtUmxabWx1WldRN1hHNGdJQ0FnZlN4Y2JpQWdJQ0JiYldWaGMzVnlaVzFsYm5SUWNtOXdMQ0JqYkdsbGJuUkJlR2x6WFZ4dUlDQXBPMXh1WEc0Z0lHTnZibk4wSUc5dVVHOXBiblJsY2sxdmRtVWdQU0IxYzJWRFlXeHNZbUZqYXloY2JpQWdJQ0FvWlRvZ1VtVmhZM1F1VUc5cGJuUmxja1YyWlc1MFBFaFVUVXhFYVhaRmJHVnRaVzUwUGlrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0dSeVlXZFRkR0Z5ZEM1amRYSnlaVzUwSUNFOVBTQnVkV3hzSUNZbUlIQnlhVzFoY25sVGFYcGxVbVZtTG1OMWNuSmxiblFnSVQwOUlDY3habkluS1NCN1hHNGdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWWdQU0JsVzJOc2FXVnVkRUY0YVhOZElDMGdaSEpoWjFOMFlYSjBMbU4xY25KbGJuUTdYRzRnSUNBZ0lDQWdJR052Ym5OMElHUnBiWE1nUFNCbWFYSnpkRkJoYm1WTlpXRnpkWEpsYldWdWRITXVZM1Z5Y21WdWRDRTdYRzRnSUNBZ0lDQWdJR052Ym5OMElHNWxkMU5wZW1VZ1BTQmpiR0Z0Y0Nod2NtbHRZWEo1VTJsNlpWSmxaaTVqZFhKeVpXNTBJQ3NnWkdsbVppd2daR2x0YzF0dGFXNUVhVzFRY205d1hTd2daR2x0YzF0dFlYaEVhVzFRY205d1hTazdYRzRnSUNBZ0lDQWdJR052Ym5OMElHNWxkMFpzWlhnZ1BTQnVaWGRUYVhwbElDOGdLR052Ym5SaGFXNWxjbE5wZW1VdVkzVnljbVZ1ZENFZ0xTQm9ZVzVrYkdWVGFYcGxLVHRjYmlBZ0lDQWdJQ0FnWm1seWMzUlFZVzVsVW1WbUxtTjFjbkpsYm5RaExuTjBlV3hsTG1ac1pYaEhjbTkzSUQwZ1lDUjdibVYzUm14bGVIMWdPMXh1SUNBZ0lDQWdJQ0J6WldOdmJtUlFZVzVsVW1WbUxtTjFjbkpsYm5RaExuTjBlV3hsTG1ac1pYaEhjbTkzSUQwZ1lDUjdNU0F0SUc1bGQwWnNaWGg5WUR0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnWVhKcFlWWmhiSFZsVG05M0lEMGdZMnhoYlhBb1hHNGdJQ0FnSUNBZ0lDQWdLQ2h1WlhkVGFYcGxJQzBnWkdsdGMxdHRhVzVFYVcxUWNtOXdYU2tnTHlBb1pHbHRjMXR0WVhoRWFXMVFjbTl3WFNBdElHUnBiWE5iYldsdVJHbHRVSEp2Y0YwcEtTQXFJREV3TUN4Y2JpQWdJQ0FnSUNBZ0lDQXdMRnh1SUNBZ0lDQWdJQ0FnSURFd01GeHVJQ0FnSUNBZ0lDQXBPMXh1WEc0Z0lDQWdJQ0FnSUhOd2JHbDBkR1Z5VW1WbUxtTjFjbkpsYm5RaExtRnlhV0ZXWVd4MVpVNXZkeUE5SUdBa2UyRnlhV0ZXWVd4MVpVNXZkMzFnTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDBzWEc0Z0lDQWdXMmhoYm1Sc1pWTnBlbVVzSUdOc2FXVnVkRUY0YVhNc0lHMXBia1JwYlZCeWIzQXNJRzFoZUVScGJWQnliM0JkWEc0Z0lDazdYRzVjYmlBZ1kyOXVjM1FnYjI1UWIybHVkR1Z5VlhBZ1BTQjFjMlZEWVd4c1ltRmpheWhjYmlBZ0lDQW9aVG9nVW1WaFkzUXVVRzlwYm5SbGNrVjJaVzUwUEVoVVRVeEVhWFpGYkdWdFpXNTBQaWtnUFQ0Z2UxeHVJQ0FnSUNBZ1pTNXdjbVYyWlc1MFJHVm1ZWFZzZENncE8xeHVJQ0FnSUNBZ1pTNXpkRzl3VUhKdmNHRm5ZWFJwYjI0b0tUdGNiaUFnSUNBZ0lITndiR2wwZEdWeVVtVm1MbU4xY25KbGJuUWhMbkpsYkdWaGMyVlFiMmx1ZEdWeVEyRndkSFZ5WlNobExuQnZhVzUwWlhKSlpDazdYRzRnSUNBZ0lDQmtjbUZuVTNSaGNuUXVZM1Z5Y21WdWRDQTlJRzUxYkd3N1hHNGdJQ0FnSUNCdmJrUnlZV2RHYVc1cGMyaGxaRDh1S0hCaGNuTmxSbXh2WVhRb1ptbHljM1JRWVc1bFVtVm1MbU4xY25KbGJuUWhMbk4wZVd4bExtWnNaWGhIY205M0tTazdYRzRnSUNBZ2ZTeGNiaUFnSUNCYmIyNUVjbUZuUm1sdWFYTm9aV1JkWEc0Z0lDazdYRzVjYmlBZ1kyOXVjM1FnY0hKbGMzTmxaRXRsZVhNZ1BTQjFjMlZTWldZb2JtVjNJRk5sZER4emRISnBibWMrS0NrcE8xeHVJQ0JqYjI1emRDQnJaWGx6VEdGemRFaGhibVJzWldSQmRDQTlJSFZ6WlZKbFpqeHVkVzFpWlhJZ2ZDQnVkV3hzUGlodWRXeHNLVHRjYmlBZ1kyOXVjM1FnYUdGdVpHeGxVSEpsYzNObFpFdGxlWE1nUFNCMWMyVkRZV3hzWW1GamF5aGNiaUFnSUNBb2RHbHRaVG9nYm5WdFltVnlLU0E5UGlCN1hHNGdJQ0FnSUNCamIyNXpkQ0J1YjNSb2FXNW5VSEpsYzNObFpDQTlJSEJ5WlhOelpXUkxaWGx6TG1OMWNuSmxiblF1YzJsNlpTQTlQVDBnTUR0Y2JpQWdJQ0FnSUdsbUlDaHViM1JvYVc1blVISmxjM05sWkNrZ2UxeHVJQ0FnSUNBZ0lDQnJaWGx6VEdGemRFaGhibVJzWldSQmRDNWpkWEp5Wlc1MElEMGdiblZzYkR0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1TzF4dUlDQWdJQ0FnZlNCbGJITmxJR2xtSUNod2NtbHRZWEo1VTJsNlpWSmxaaTVqZFhKeVpXNTBJRDA5UFNBbk1XWnlKeWtnZTF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUdOdmJuTjBJR1IwSUQwZ2RHbHRaU0F0SUNoclpYbHpUR0Z6ZEVoaGJtUnNaV1JCZEM1amRYSnlaVzUwSUQ4L0lIUnBiV1VwTzF4dUlDQWdJQ0FnWTI5dWMzUWdaSGdnUFNCa2RDQXFJRkJKV0VWTVUxOVFSVkpmVFZNN1hHNGdJQ0FnSUNCc1pYUWdjMmw2WlVOb1lXNW5aU0E5SURBN1hHNWNiaUFnSUNBZ0lHbG1JQ2hrYVhKbFkzUnBiMjRnUFQwOUlDZHliM2NuS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2h3Y21WemMyVmtTMlY1Y3k1amRYSnlaVzUwTG1oaGN5Z25RWEp5YjNkTVpXWjBKeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnphWHBsUTJoaGJtZGxJQzA5SUdSNE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQWdJR2xtSUNod2NtVnpjMlZrUzJWNWN5NWpkWEp5Wlc1MExtaGhjeWduUVhKeWIzZFNhV2RvZENjcEtTQjdYRzRnSUNBZ0lDQWdJQ0FnYzJsNlpVTm9ZVzVuWlNBclBTQmtlRHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQnlaWE56WldSTFpYbHpMbU4xY25KbGJuUXVhR0Z6S0NkQmNuSnZkMVZ3SnlrcElIdGNiaUFnSUNBZ0lDQWdJQ0J6YVhwbFEyaGhibWRsSUMwOUlHUjRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0FnSUdsbUlDaHdjbVZ6YzJWa1MyVjVjeTVqZFhKeVpXNTBMbWhoY3lnblFYSnliM2RFYjNkdUp5a3BJSHRjYmlBZ0lDQWdJQ0FnSUNCemFYcGxRMmhoYm1kbElDczlJR1I0TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUdacGNuTjBVR0Z1WlVScGJYTWdQU0JtYVhKemRGQmhibVZOWldGemRYSmxiV1Z1ZEhNdVkzVnljbVZ1ZENFN1hHNGdJQ0FnSUNCamIyNXpkQ0JqZFhKVGFYcGxJRDBnWm1seWMzUlFZVzVsVW1WbUxtTjFjbkpsYm5RaExtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwVzIxbFlYTjFjbVZ0Wlc1MFVISnZjRjA3WEc0Z0lDQWdJQ0JqYjI1emRDQnVaWGRUYVhwbElEMGdZMnhoYlhBb1kzVnlVMmw2WlNBcklITnBlbVZEYUdGdVoyVXNJR1pwY25OMFVHRnVaVVJwYlhOYmJXbHVSR2x0VUhKdmNGMHNJR1pwY25OMFVHRnVaVVJwYlhOYmJXRjRSR2x0VUhKdmNGMHBPMXh1WEc0Z0lDQWdJQ0JqYjI1emRDQnVaWGRHYkdWNElEMGdibVYzVTJsNlpTQXZJQ2hqYjI1MFlXbHVaWEpUYVhwbExtTjFjbkpsYm5RaElDMGdhR0Z1Wkd4bFUybDZaU2s3WEc1Y2JpQWdJQ0FnSUdacGNuTjBVR0Z1WlZKbFppNWpkWEp5Wlc1MElTNXpkSGxzWlM1bWJHVjRSM0p2ZHlBOUlHQWtlMjVsZDBac1pYaDlZRHRjYmlBZ0lDQWdJSE5sWTI5dVpGQmhibVZTWldZdVkzVnljbVZ1ZENFdWMzUjViR1V1Wm14bGVFZHliM2NnUFNCZ0pIc3hJQzBnYm1WM1JteGxlSDFnTzF4dUlDQWdJQ0FnWTI5dWMzUWdZWEpwWVZaaGJIVmxUbTkzSUQxY2JpQWdJQ0FnSUNBZ0tDaHVaWGRUYVhwbElDMGdabWx5YzNSUVlXNWxSR2x0YzF0dGFXNUVhVzFRY205d1hTa2dMeUFvWm1seWMzUlFZVzVsUkdsdGMxdHRZWGhFYVcxUWNtOXdYU0F0SUdacGNuTjBVR0Z1WlVScGJYTmJiV2x1UkdsdFVISnZjRjBwS1NBcUlERXdNRHRjYmlBZ0lDQWdJSE53YkdsMGRHVnlVbVZtTG1OMWNuSmxiblFoTG1GeWFXRldZV3gxWlU1dmR5QTlJR0FrZTJOc1lXMXdLR0Z5YVdGV1lXeDFaVTV2ZHl3Z01Dd2dNVEF3S1gxZ08xeHVYRzRnSUNBZ0lDQnJaWGx6VEdGemRFaGhibVJzWldSQmRDNWpkWEp5Wlc1MElEMGdkR2x0WlR0Y2JpQWdJQ0FnSUhkcGJtUnZkeTV5WlhGMVpYTjBRVzVwYldGMGFXOXVSbkpoYldVb2FHRnVaR3hsVUhKbGMzTmxaRXRsZVhNcE8xeHVJQ0FnSUgwc1hHNGdJQ0FnVzJScGNtVmpkR2x2Yml3Z2FHRnVaR3hsVTJsNlpTd2diV2x1UkdsdFVISnZjQ3dnYldGNFJHbHRVSEp2Y0N3Z2JXVmhjM1Z5WlcxbGJuUlFjbTl3WFZ4dUlDQXBPMXh1WEc0Z0lHTnZibk4wSUc5dVMyVjVSRzkzYmlBOUlIVnpaVU5oYkd4aVlXTnJLRnh1SUNBZ0lDaGxPaUJTWldGamRDNUxaWGxpYjJGeVpFVjJaVzUwUEVoVVRVeEVhWFpGYkdWdFpXNTBQaWtnUFQ0Z2UxeHVJQ0FnSUNBZ2FXWWdLR1V1YTJWNUlEMDlQU0FuUlc1MFpYSW5LU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHpZWFpsWkZCdmN5NWpkWEp5Wlc1MElEMDlQU0IxYm1SbFptbHVaV1FwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnpZWFpsWkZCdmN5NWpkWEp5Wlc1MElEMGdabWx5YzNSUVlXNWxVbVZtTG1OMWNuSmxiblFoTG5OMGVXeGxMbVpzWlhoSGNtOTNPMXh1SUNBZ0lDQWdJQ0FnSUdacGNuTjBVR0Z1WlZKbFppNWpkWEp5Wlc1MElTNXpkSGxzWlM1bWJHVjRSM0p2ZHlBOUlDY3dKenRjYmlBZ0lDQWdJQ0FnSUNCelpXTnZibVJRWVc1bFVtVm1MbU4xY25KbGJuUWhMbk4wZVd4bExtWnNaWGhIY205M0lEMGdKekVuTzF4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNBZ0lHWnBjbk4wVUdGdVpWSmxaaTVqZFhKeVpXNTBJUzV6ZEhsc1pTNW1iR1Y0UjNKdmR5QTlJSE5oZG1Wa1VHOXpMbU4xY25KbGJuUTdYRzRnSUNBZ0lDQWdJQ0FnYzJWamIyNWtVR0Z1WlZKbFppNWpkWEp5Wlc1MElTNXpkSGxzWlM1bWJHVjRSM0p2ZHlBOUlHQWtlekVnTFNCd1lYSnpaVVpzYjJGMEtITmhkbVZrVUc5ekxtTjFjbkpsYm5RcGZXQTdYRzRnSUNBZ0lDQWdJQ0FnYzJGMlpXUlFiM011WTNWeWNtVnVkQ0E5SUhWdVpHVm1hVzVsWkR0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ0lDQnlaWFIxY200N1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tHVXVhMlY1SUQwOVBTQW5TRzl0WlNjcElIdGNiaUFnSUNBZ0lDQWdabWx5YzNSUVlXNWxUV1ZoYzNWeVpXMWxiblJ6TG1OMWNuSmxiblFnUFNCdFpXRnpkWEpsUld4bGJXVnVkQ2htYVhKemRGQmhibVZTWldZdVkzVnljbVZ1ZENFcE8xeHVJQ0FnSUNBZ0lDQmpiMjUwWVdsdVpYSlRhWHBsTG1OMWNuSmxiblFnUFNCamIyNTBZV2x1WlhKU1pXWXVZM1Z5Y21WdWRDRXVaMlYwUW05MWJtUnBibWREYkdsbGJuUlNaV04wS0NsYmJXVmhjM1Z5WlcxbGJuUlFjbTl3WFR0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYm1WM1JteGxlQ0E5SUdacGNuTjBVR0Z1WlUxbFlYTjFjbVZ0Wlc1MGN5NWpkWEp5Wlc1MFcyMXBia1JwYlZCeWIzQmRJQzhnS0dOdmJuUmhhVzVsY2xOcGVtVXVZM1Z5Y21WdWRDRWdMU0JvWVc1a2JHVlRhWHBsS1R0Y2JpQWdJQ0FnSUNBZ1ptbHljM1JRWVc1bFVtVm1MbU4xY25KbGJuUWhMbk4wZVd4bExtWnNaWGhIY205M0lEMGdZQ1I3Ym1WM1JteGxlSDFnTzF4dUlDQWdJQ0FnSUNCelpXTnZibVJRWVc1bFVtVm1MbU4xY25KbGJuUWhMbk4wZVd4bExtWnNaWGhIY205M0lEMGdZQ1I3TVNBdElHNWxkMFpzWlhoOVlEdGNiaUFnSUNBZ0lDQWdjM0JzYVhSMFpYSlNaV1l1WTNWeWNtVnVkQ0V1WVhKcFlWWmhiSFZsVG05M0lEMGdKekFuTzF4dUlDQWdJQ0FnSUNCeVpYUjFjbTQ3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdhV1lnS0dVdWEyVjVJRDA5UFNBblJXNWtKeWtnZTF4dUlDQWdJQ0FnSUNCbWFYSnpkRkJoYm1WTlpXRnpkWEpsYldWdWRITXVZM1Z5Y21WdWRDQTlJRzFsWVhOMWNtVkZiR1Z0Wlc1MEtHWnBjbk4wVUdGdVpWSmxaaTVqZFhKeVpXNTBJU2s3WEc0Z0lDQWdJQ0FnSUdOdmJuUmhhVzVsY2xOcGVtVXVZM1Z5Y21WdWRDQTlJR052Ym5SaGFXNWxjbEpsWmk1amRYSnlaVzUwSVM1blpYUkNiM1Z1WkdsdVowTnNhV1Z1ZEZKbFkzUW9LVnR0WldGemRYSmxiV1Z1ZEZCeWIzQmRPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnVaWGRHYkdWNElEMGdabWx5YzNSUVlXNWxUV1ZoYzNWeVpXMWxiblJ6TG1OMWNuSmxiblJiYldGNFJHbHRVSEp2Y0YwZ0x5QW9ZMjl1ZEdGcGJtVnlVMmw2WlM1amRYSnlaVzUwSVNBdElHaGhibVJzWlZOcGVtVXBPMXh1SUNBZ0lDQWdJQ0JtYVhKemRGQmhibVZTWldZdVkzVnljbVZ1ZENFdWMzUjViR1V1Wm14bGVFZHliM2NnUFNCZ0pIdHVaWGRHYkdWNGZXQTdYRzRnSUNBZ0lDQWdJSE5sWTI5dVpGQmhibVZTWldZdVkzVnljbVZ1ZENFdWMzUjViR1V1Wm14bGVFZHliM2NnUFNCZ0pIc3hJQzBnYm1WM1JteGxlSDFnTzF4dUlDQWdJQ0FnSUNCemNHeHBkSFJsY2xKbFppNWpkWEp5Wlc1MElTNWhjbWxoVm1Gc2RXVk9iM2NnUFNBbk1UQXdKenRjYmlBZ0lDQWdJQ0FnY21WMGRYSnVPMXh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JwWmlBb1hHNGdJQ0FnSUNBZ0lDRW9YRzRnSUNBZ0lDQWdJQ0FnS0dScGNtVmpkR2x2YmlBOVBUMGdKMk52YkhWdGJpY2dKaVlnVmtWU1ZFbERRVXhmUzBWWlV5NW9ZWE1vWlM1clpYa3BLU0I4ZkZ4dUlDQWdJQ0FnSUNBZ0lDaGthWEpsWTNScGIyNGdQVDA5SUNkeWIzY25JQ1ltSUVoUFVrbGFUMDVVUVV4ZlMwVlpVeTVvWVhNb1pTNXJaWGtwS1Z4dUlDQWdJQ0FnSUNBcElIeDhYRzRnSUNBZ0lDQWdJSEJ5WlhOelpXUkxaWGx6TG1OMWNuSmxiblF1YUdGektHVXVhMlY1S1Z4dUlDQWdJQ0FnS1NCN1hHNGdJQ0FnSUNBZ0lISmxkSFZ5Ymp0Y2JpQWdJQ0FnSUgxY2JseHVJQ0FnSUNBZ2MyRjJaV1JRYjNNdVkzVnljbVZ1ZENBOUlIVnVaR1ZtYVc1bFpEdGNiaUFnSUNBZ0lHVXVjSEpsZG1WdWRFUmxabUYxYkhRb0tUdGNiaUFnSUNBZ0lHVXVjM1J2Y0ZCeWIzQmhaMkYwYVc5dUtDazdYRzRnSUNBZ0lDQndjbWx0WVhKNVUybDZaVkpsWmk1amRYSnlaVzUwSUQwZ1ptbHljM1JRWVc1bFVtVm1MbU4xY25KbGJuUWhMbWRsZEVKdmRXNWthVzVuUTJ4cFpXNTBVbVZqZENncFcyMWxZWE4xY21WdFpXNTBVSEp2Y0YwN1hHNGdJQ0FnSUNCamIyNTBZV2x1WlhKVGFYcGxMbU4xY25KbGJuUWdQU0JqYjI1MFlXbHVaWEpTWldZdVkzVnljbVZ1ZENFdVoyVjBRbTkxYm1ScGJtZERiR2xsYm5SU1pXTjBLQ2xiYldWaGMzVnlaVzFsYm5SUWNtOXdYVHRjYmlBZ0lDQWdJR1pwY25OMFVHRnVaVTFsWVhOMWNtVnRaVzUwY3k1amRYSnlaVzUwSUQwZ2JXVmhjM1Z5WlVWc1pXMWxiblFvWm1seWMzUlFZVzVsVW1WbUxtTjFjbkpsYm5RaEtUdGNiaUFnSUNBZ0lHTnZibk4wSUc1bGQwdGxlU0E5SUNGd2NtVnpjMlZrUzJWNWN5NWpkWEp5Wlc1MExtaGhjeWhsTG10bGVTazdYRzVjYmlBZ0lDQWdJR2xtSUNodVpYZExaWGtwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVc1cGRHbGhkR1ZCYm1sdFlYUnBiMjVNYjI5d0lEMGdjSEpsYzNObFpFdGxlWE11WTNWeWNtVnVkQzV6YVhwbElEMDlQU0F3TzF4dUlDQWdJQ0FnSUNCd2NtVnpjMlZrUzJWNWN5NWpkWEp5Wlc1MExtRmtaQ2hsTG10bGVTazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tHbHVhWFJwWVhSbFFXNXBiV0YwYVc5dVRHOXZjQ2tnZTF4dUlDQWdJQ0FnSUNBZ0lIZHBibVJ2ZHk1eVpYRjFaWE4wUVc1cGJXRjBhVzl1Um5KaGJXVW9hR0Z1Wkd4bFVISmxjM05sWkV0bGVYTXBPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU3hjYmlBZ0lDQmJaR2x5WldOMGFXOXVMQ0JvWVc1a2JHVlFjbVZ6YzJWa1MyVjVjeXdnYUdGdVpHeGxVMmw2WlN3Z2JXRjRSR2x0VUhKdmNDd2diV1ZoYzNWeVpXMWxiblJRY205d0xDQnRhVzVFYVcxUWNtOXdYVnh1SUNBcE8xeHVYRzRnSUdOdmJuTjBJRzl1UzJWNVZYQWdQU0IxYzJWRFlXeHNZbUZqYXloY2JpQWdJQ0FvWlRvZ1VtVmhZM1F1UzJWNVltOWhjbVJGZG1WdWREeElWRTFNUkdsMlJXeGxiV1Z1ZEQ0cElEMCtJSHRjYmlBZ0lDQWdJR2xtSUNoY2JpQWdJQ0FnSUNBZ0tHUnBjbVZqZEdsdmJpQTlQVDBnSjNKdmR5Y2dKaVlnSVVoUFVrbGFUMDVVUVV4ZlMwVlpVeTVvWVhNb1pTNXJaWGtwS1NCOGZGeHVJQ0FnSUNBZ0lDQW9aR2x5WldOMGFXOXVJRDA5UFNBblkyOXNkVzF1SnlBbUppQWhWa1ZTVkVsRFFVeGZTMFZaVXk1b1lYTW9aUzVyWlhrcEtWeHVJQ0FnSUNBZ0tTQjdYRzRnSUNBZ0lDQWdJSEpsZEhWeWJqdGNiaUFnSUNBZ0lIMWNibHh1SUNBZ0lDQWdjSEpsYzNObFpFdGxlWE11WTNWeWNtVnVkQzVrWld4bGRHVW9aUzVyWlhrcE8xeHVJQ0FnSUNBZ2IyNUVjbUZuUm1sdWFYTm9aV1EvTGlod1lYSnpaVVpzYjJGMEtHWnBjbk4wVUdGdVpWSmxaaTVqZFhKeVpXNTBJUzV6ZEhsc1pTNW1iR1Y0UjNKdmR5a3BPMXh1SUNBZ0lIMHNYRzRnSUNBZ1cyUnBjbVZqZEdsdmJpd2diMjVFY21GblJtbHVhWE5vWldSZFhHNGdJQ2s3WEc1Y2JpQWdZMjl1YzNRZ2IyNUViM1ZpYkdWRGJHbGpheUE5SUhWelpVTmhiR3hpWVdOcktDZ3BJRDArSUh0Y2JpQWdJQ0JtYVhKemRGQmhibVZTWldZdVkzVnljbVZ1ZENFdWMzUjViR1V1Wm14bGVFZHliM2NnUFNBbk1DNDFKenRjYmlBZ0lDQnpaV052Ym1SUVlXNWxVbVZtTG1OMWNuSmxiblFoTG5OMGVXeGxMbVpzWlhoSGNtOTNJRDBnSnpBdU5TYzdYRzRnSUNBZ1kyOXVjM1FnWkdsdElEMGdiV1ZoYzNWeVpVVnNaVzFsYm5Rb1ptbHljM1JRWVc1bFVtVm1MbU4xY25KbGJuUWhLVHRjYmlBZ0lDQm1hWEp6ZEZCaGJtVk5aV0Z6ZFhKbGJXVnVkSE11WTNWeWNtVnVkQ0E5SUdScGJUdGNiaUFnSUNCd2NtbHRZWEo1VTJsNlpWSmxaaTVqZFhKeVpXNTBJRDBnWm1seWMzUlFZVzVsVW1WbUxtTjFjbkpsYm5RaExtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwVzIxbFlYTjFjbVZ0Wlc1MFVISnZjRjA3WEc0Z0lDQWdjM0JzYVhSMFpYSlNaV1l1WTNWeWNtVnVkQ0V1WVhKcFlWWmhiSFZsVG05M0lEMGdZQ1I3WEc0Z0lDQWdJQ0FvS0hCeWFXMWhjbmxUYVhwbFVtVm1MbU4xY25KbGJuUWdMU0JrYVcxYmJXbHVSR2x0VUhKdmNGMHBJQzhnS0dScGJWdHRZWGhFYVcxUWNtOXdYU0F0SUdScGJWdHRhVzVFYVcxUWNtOXdYU2twSUNvZ01UQXdYRzRnSUNBZ2ZXQTdYRzRnSUgwc0lGdHRZWGhFYVcxUWNtOXdMQ0J0WldGemRYSmxiV1Z1ZEZCeWIzQXNJRzFwYmtScGJWQnliM0JkS1R0Y2JseHVJQ0JqYjI1emRDQnZia0pzZFhJZ1BTQjFjMlZEWVd4c1ltRmpheWdvS1NBOVBpQjdYRzRnSUNBZ0x5OGdTV1lnWm05amRYTWdhWE1nYkc5emRDQjNhR2xzWlNCclpYbHpJR0Z5WlNCb1pXeGtMQ0J6ZEc5d0lHTm9ZVzVuYVc1bklIQmhibVZzSUhOcGVtVnpYRzRnSUNBZ2FXWWdLSEJ5WlhOelpXUkxaWGx6TG1OMWNuSmxiblF1YzJsNlpTQStJREFwSUh0Y2JpQWdJQ0FnSUhCeVpYTnpaV1JMWlhsekxtTjFjbkpsYm5RdVkyeGxZWElvS1R0Y2JpQWdJQ0FnSUdSeVlXZFRkR0Z5ZEM1amRYSnlaVzUwSUQwZ2JuVnNiRHRjYmlBZ0lDQWdJRzl1UkhKaFowWnBibWx6YUdWa1B5NG9jR0Z5YzJWR2JHOWhkQ2htYVhKemRGQmhibVZTWldZdVkzVnljbVZ1ZENFdWMzUjViR1V1Wm14bGVFZHliM2NwS1R0Y2JpQWdJQ0I5WEc0Z0lIMHNJRnR2YmtSeVlXZEdhVzVwYzJobFpGMHBPMXh1WEc0Z0lHTnZibk4wSUhOMGVXeGxjeUE5SUhWelpWTjBlV3hsY3pJb1oyVjBVM1I1YkdWektUdGNiaUFnWTI5dWMzUWdhV1FnUFNCMWMyVlZibWx4ZFdWSlpDZ3BPMXh1WEc0Z0lHTnZibk4wSUhObFkyOXVaRUYyWVdsc1lXSnNaU0E5SUd0cFpITXViR1Z1WjNSb0lEMDlQU0F5TzF4dUlDQmpiMjV6ZENCMmFYTnBZbWxzYVhSNVUyVmpiMjVrSUQwZ2MyVmpiMjVrUVhaaGFXeGhZbXhsSUQ4Z0ozWnBjMmxpYkdVbklEb2dKMmhwWkdSbGJpYzdYRzVjYmlBZ2NtVjBkWEp1SUNoY2JpQWdJQ0E4WkdsMlhHNGdJQ0FnSUNCeVpXWTllMk52Ym5SaGFXNWxjbEpsWm4xY2JpQWdJQ0FnSUdOc1lYTnpUbUZ0WlQxN2MzUjViR1Z6TG1OdmJuUmhhVzVsY24xY2JpQWdJQ0FnSUhOMGVXeGxQWHQ3WEc0Z0lDQWdJQ0FnSUdac1pYaEVhWEpsWTNScGIyNDZJR1JwY21WamRHbHZiaXhjYmlBZ0lDQWdJSDE5WEc0Z0lDQWdQbHh1SUNBZ0lDQWdQR1JwZGx4dUlDQWdJQ0FnSUNCeVpXWTllMlpwY25OMFVHRnVaVkpsWm4xY2JpQWdJQ0FnSUNBZ1kyeGhjM05PWVcxbFBYdHpkSGxzWlhNdWNHRnVaV3g5WEc0Z0lDQWdJQ0FnSUhOMGVXeGxQWHQ3WEc0Z0lDQWdJQ0FnSUNBZ1pteGxlRWR5YjNjNklHbHVhWFJwWVd4VGFYcGxJRDA5UFNBbllYVjBieWNnUHlBd0xqVWdPaUJqYkdGdGNDaHBibWwwYVdGc1UybDZaU3dnTUN3Z01Ta3NYRzRnSUNBZ0lDQWdJQ0FnVzIxcGJrUnBiVkJ5YjNCZE9pQW5iV2x1TFdOdmJuUmxiblFuTEZ4dUlDQWdJQ0FnSUNBZ0lDNHVMbkJ5YVcxaGNubFFZVzVsVTNSNWJHVnpMRnh1SUNBZ0lDQWdJQ0I5ZlZ4dUlDQWdJQ0FnSUNCcFpEMTdZSE4wWVhKMExYQmhibVZzTFNSN2FXUjlZSDFjYmlBZ0lDQWdJRDVjYmlBZ0lDQWdJQ0FnZTJ0cFpITmJNRjE5WEc0Z0lDQWdJQ0E4TDJScGRqNWNibHh1SUNBZ0lDQWdlMnRwWkhOYk1WMGdKaVlnS0Z4dUlDQWdJQ0FnSUNBOFBseHVJQ0FnSUNBZ0lDQWdJRHhrYVhaY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsWmoxN2MzQnNhWFIwWlhKU1pXWjlYRzRnSUNBZ0lDQWdJQ0FnSUNCemRIbHNaVDE3ZXlCYmJXVmhjM1Z5WlcxbGJuUlFjbTl3WFRvZ1lDUjdhR0Z1Wkd4bFUybDZaWDF3ZUdBZ2ZYMWNiaUFnSUNBZ0lDQWdJQ0FnSUdOc1lYTnpUbUZ0WlQxN1kzZ29jM1I1YkdWekxtaGhibVJzWlN3Z2V5QmJjM1I1YkdWekxtaGhibVJzWlVodmNtbDZiMjUwWVd4ZE9pQmthWEpsWTNScGIyNGdQVDA5SUNkamIyeDFiVzRuSUgwcGZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1UWIybHVkR1Z5VlhBOWUyOXVVRzlwYm5SbGNsVndmVnh1SUNBZ0lDQWdJQ0FnSUNBZ2IyNVFiMmx1ZEdWeVJHOTNiajE3YjI1UWIybHVkR1Z5Ukc5M2JuMWNiaUFnSUNBZ0lDQWdJQ0FnSUc5dVVHOXBiblJsY2sxdmRtVTllMjl1VUc5cGJuUmxjazF2ZG1WOVhHNGdJQ0FnSUNBZ0lDQWdJQ0J2Ymt0bGVVUnZkMjQ5ZTI5dVMyVjVSRzkzYm4xY2JpQWdJQ0FnSUNBZ0lDQWdJRzl1UzJWNVZYQTllMjl1UzJWNVZYQjlYRzRnSUNBZ0lDQWdJQ0FnSUNCdmJrUnZkV0pzWlVOc2FXTnJQWHR2YmtSdmRXSnNaVU5zYVdOcmZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYjI1Q2JIVnlQWHR2YmtKc2RYSjlYRzRnSUNBZ0lDQWdJQ0FnSUNCeWIyeGxQVndpYzJWd1lYSmhkRzl5WENKY2JpQWdJQ0FnSUNBZ0lDQWdJR0Z5YVdFdGRtRnNkV1Z0YVc0OWV6QjlYRzRnSUNBZ0lDQWdJQ0FnSUNCaGNtbGhMWFpoYkhWbGJXRjRQWHN4TURCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JoY21saExYWmhiSFZsYm05M1BYczFNSDFjYmlBZ0lDQWdJQ0FnSUNBZ0lHRnlhV0V0WTI5dWRISnZiSE05ZTJCemRHRnlkQzF3WVc1bGJDMGtlMmxrZldCOVhHNGdJQ0FnSUNBZ0lDQWdJQ0JoY21saExXeGhZbVZzUFZ3aVVHRnVaU0J5WlhOcGVtVWdkMmxrWjJWMFhDSmNiaUFnSUNBZ0lDQWdJQ0FnSUhSaFlrbHVaR1Y0UFhzd2ZWeHVJQ0FnSUNBZ0lDQWdJRDQ4TDJScGRqNWNibHh1SUNBZ0lDQWdJQ0FnSUR4a2FYWmNiaUFnSUNBZ0lDQWdJQ0FnSUhKbFpqMTdjMlZqYjI1a1VHRnVaVkpsWm4xY2JpQWdJQ0FnSUNBZ0lDQWdJR05zWVhOelRtRnRaVDE3YzNSNWJHVnpMbkJoYm1Wc2ZWeHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSNWJHVTllM3RjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdabXhsZUVkeWIzYzZJR2x1YVhScFlXeFRhWHBsSUQwOVBTQW5ZWFYwYnljZ1B5QXdMalVnT2lCamJHRnRjQ2d4SUMwZ2FXNXBkR2xoYkZOcGVtVXNJREFzSURFcExGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCYmJXbHVSR2x0VUhKdmNGMDZJQ2R0YVc0dFkyOXVkR1Z1ZENjc1hHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUhacGMybGlhV3hwZEhrNklHQWtlM1pwYzJsaWFXeHBkSGxUWldOdmJtUjlZQ3hjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdMaTR1YzJWamIyNWtZWEo1VUdGdVpWTjBlV3hsY3l4Y2JpQWdJQ0FnSUNBZ0lDQWdJSDE5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaRDE3WUdWdVpDMXdZVzVsYkMwa2UybGtmV0I5WEc0Z0lDQWdJQ0FnSUNBZ1BseHVJQ0FnSUNBZ0lDQWdJQ0FnZTJ0cFpITmJNVjE5WEc0Z0lDQWdJQ0FnSUNBZ1BDOWthWFkrWEc0Z0lDQWdJQ0FnSUR3dlBseHVJQ0FnSUNBZ0tYMWNiaUFnSUNBOEwyUnBkajVjYmlBZ0tUdGNibjFjYmx4dVpuVnVZM1JwYjI0Z1oyVjBVM1I1YkdWektIUm9aVzFsT2lCSGNtRm1ZVzVoVkdobGJXVXlLU0I3WEc0Z0lISmxkSFZ5YmlCN1hHNGdJQ0FnYUdGdVpHeGxPaUJqYzNNb2UxeHVJQ0FnSUNBZ1kzVnljMjl5T2lBblkyOXNMWEpsYzJsNlpTY3NYRzRnSUNBZ0lDQndiM05wZEdsdmJqb2dKM0psYkdGMGFYWmxKeXhjYmlBZ0lDQWdJR1pzWlhoVGFISnBibXM2SURBc1hHNGdJQ0FnSUNCMWMyVnlVMlZzWldOME9pQW5ibTl1WlNjc1hHNWNiaUFnSUNBZ0lDY21PanBpWldadmNtVW5PaUI3WEc0Z0lDQWdJQ0FnSUdOdmJuUmxiblE2SUNkY0lsd2lKeXhjYmlBZ0lDQWdJQ0FnY0c5emFYUnBiMjQ2SUNkaFluTnZiSFYwWlNjc1hHNGdJQ0FnSUNBZ0lHSmhZMnRuY205MWJtUkRiMnh2Y2pvZ2RHaGxiV1V1WTI5c2IzSnpMbkJ5YVcxaGNua3ViV0ZwYml4Y2JpQWdJQ0FnSUNBZ2JHVm1kRG9nSnpVd0pTY3NYRzRnSUNBZ0lDQWdJSFJ5WVc1elptOXliVG9nSjNSeVlXNXpiR0YwWlNndE5UQWxLU2NzWEc0Z0lDQWdJQ0FnSUhSdmNEb2dNQ3hjYmlBZ0lDQWdJQ0FnYUdWcFoyaDBPaUFuTVRBd0pTY3NYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQW5NWEI0Snl4Y2JpQWdJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01DeGNiaUFnSUNBZ0lDQWdkSEpoYm5OcGRHbHZiam9nSjI5d1lXTnBkSGtnWldGelpTMXBiaTF2ZFhRZ01DNHljeWNzWEc0Z0lDQWdJQ0I5TEZ4dVhHNGdJQ0FnSUNBbkpqbzZZV1owWlhJbk9pQjdYRzRnSUNBZ0lDQWdJR052Ym5SbGJuUTZJQ2RjSWx3aUp5eGNiaUFnSUNBZ0lDQWdkMmxrZEdnNklDYzBjSGduTEZ4dUlDQWdJQ0FnSUNCaWIzSmtaWEpTWVdScGRYTTZJQ2MwY0hnbkxGeHVJQ0FnSUNBZ0lDQmlZV05yWjNKdmRXNWtRMjlzYjNJNklIUm9aVzFsTG1OdmJHOXljeTVpYjNKa1pYSXVkMlZoYXl4Y2JpQWdJQ0FnSUNBZ2RISmhibk5wZEdsdmJqb2dKMkpoWTJ0bmNtOTFibVF0WTI5c2IzSWdaV0Z6WlMxcGJpMXZkWFFnTUM0eWN5Y3NYRzRnSUNBZ0lDQWdJR2hsYVdkb2REb2dKelV3SlNjc1hHNGdJQ0FnSUNBZ0lIUnZjRG9nSjJOaGJHTW9OVEFsSUMwZ0tEVXdKU2tnTHlBeUtTY3NYRzRnSUNBZ0lDQWdJSFJ5WVc1elptOXliVG9nSjNSeVlXNXpiR0YwWlZnb0xUVXdKU2tuTEZ4dUlDQWdJQ0FnSUNCd2IzTnBkR2x2YmpvZ0oyRmljMjlzZFhSbEp5eGNiaUFnSUNBZ0lDQWdiR1ZtZERvZ0p6VXdKU2NzWEc0Z0lDQWdJQ0I5TEZ4dVhHNGdJQ0FnSUNBbkpqcG9iM1psY2l3Z0pqcG1iMk4xY3kxMmFYTnBZbXhsSnpvZ2UxeHVJQ0FnSUNBZ0lDQnZkWFJzYVc1bE9pQW5ibTl1WlNjc1hHNGdJQ0FnSUNBZ0lDY21PanBpWldadmNtVW5PaUI3WEc0Z0lDQWdJQ0FnSUNBZ2IzQmhZMmwwZVRvZ01TeGNiaUFnSUNBZ0lDQWdmU3hjYmx4dUlDQWdJQ0FnSUNBbkpqbzZZV1owWlhJbk9pQjdYRzRnSUNBZ0lDQWdJQ0FnWW1GamEyZHliM1Z1WkVOdmJHOXlPaUIwYUdWdFpTNWpiMnh2Y25NdWNISnBiV0Z5ZVM1dFlXbHVMRnh1SUNBZ0lDQWdJQ0I5TEZ4dUlDQWdJQ0FnZlN4Y2JpQWdJQ0I5S1N4Y2JpQWdJQ0JvWVc1a2JHVkliM0pwZW05dWRHRnNPaUJqYzNNb2UxeHVJQ0FnSUNBZ1kzVnljMjl5T2lBbmNtOTNMWEpsYzJsNlpTY3NYRzVjYmlBZ0lDQWdJQ2NtT2pwaVpXWnZjbVVuT2lCN1hHNGdJQ0FnSUNBZ0lHeGxablE2SUNkcGJtaGxjbWwwSnl4Y2JpQWdJQ0FnSUNBZ2RISmhibk5tYjNKdE9pQW5kSEpoYm5Oc1lYUmxXU2d0TlRBbEtTY3NYRzRnSUNBZ0lDQWdJSFJ2Y0RvZ0p6VXdKU2NzWEc0Z0lDQWdJQ0FnSUdobGFXZG9kRG9nSnpGd2VDY3NYRzRnSUNBZ0lDQWdJSGRwWkhSb09pQW5NVEF3SlNjc1hHNGdJQ0FnSUNCOUxGeHVYRzRnSUNBZ0lDQW5Kam82WVdaMFpYSW5PaUI3WEc0Z0lDQWdJQ0FnSUhkcFpIUm9PaUFuTlRBbEp5eGNiaUFnSUNBZ0lDQWdhR1ZwWjJoME9pQW5OSEI0Snl4Y2JpQWdJQ0FnSUNBZ2RHOXdPaUFuTlRBbEp5eGNiaUFnSUNBZ0lDQWdkSEpoYm5ObWIzSnRPaUFuZEhKaGJuTnNZWFJsV1NndE5UQWxLU2NzWEc0Z0lDQWdJQ0FnSUd4bFpuUTZJQ2RqWVd4aktEVXdKU0F0SUNnMU1DVXBJQzhnTWlrbkxGeHVJQ0FnSUNBZ2ZTeGNiaUFnSUNCOUtTeGNiaUFnSUNCamIyNTBZV2x1WlhJNklHTnpjeWg3WEc0Z0lDQWdJQ0JrYVhOd2JHRjVPaUFuWm14bGVDY3NYRzRnSUNBZ0lDQjNhV1IwYURvZ0p6RXdNQ1VuTEZ4dUlDQWdJQ0FnWm14bGVFZHliM2M2SURFc1hHNGdJQ0FnSUNCdmRtVnlabXh2ZHpvZ0oyaHBaR1JsYmljc1hHNGdJQ0FnZlNrc1hHNGdJQ0FnY0dGdVpXdzZJR056Y3loN0lHUnBjM0JzWVhrNklDZG1iR1Y0Snl3Z2NHOXphWFJwYjI0NklDZHlaV3hoZEdsMlpTY3NJR1pzWlhoQ1lYTnBjem9nTUNCOUtTeGNiaUFnZlR0Y2JuMWNibHh1ZEhsd1pTQk5aV0Z6ZFhKbFVqeFVQaUE5SUZRZ1pYaDBaVzVrY3lCSVZFMU1SV3hsYldWdWRGeHVJQ0EvSUhzZ2JXbHVWMmxrZEdnNklHNTFiV0psY2pzZ2JXRjRWMmxrZEdnNklHNTFiV0psY2pzZ2JXbHVTR1ZwWjJoME9pQnVkVzFpWlhJN0lHMWhlRWhsYVdkb2REb2diblZ0WW1WeUlIMWNiaUFnT2lCVUlHVjRkR1Z1WkhNZ2JuVnNiRnh1SUNBL0lIVnVaR1ZtYVc1bFpGeHVJQ0E2SUc1bGRtVnlPMXh1ZEhsd1pTQklWRTFNUld4bGJXVnVkRTl5VG5Wc2JDQTlJRWhVVFV4RmJHVnRaVzUwSUh3Z2JuVnNiRHRjYmx4dVpuVnVZM1JwYjI0Z2JXVmhjM1Z5WlVWc1pXMWxiblE4VkNCbGVIUmxibVJ6SUVoVVRVeEZiR1Z0Wlc1MFQzSk9kV3hzUGloeVpXWTZJRlFwT2lCTlpXRnpkWEpsVWp4VVBpQjdYRzRnSUdsbUlDaHlaV1lnUFQwOUlHNTFiR3dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkVzVrWldacGJtVmtJR0Z6SUUxbFlYTjFjbVZTUEZRK08xeHVJQ0I5WEc1Y2JpQWdZMjl1YzNRZ2MyRjJaV1JDYjJSNVQzWmxjbVpzYjNjZ1BTQmtiMk4xYldWdWRDNWliMlI1TG5OMGVXeGxMbTkyWlhKbWJHOTNPMXh1SUNCamIyNXpkQ0J6WVhabFpGZHBaSFJvSUQwZ2NtVm1Mbk4wZVd4bExuZHBaSFJvTzF4dUlDQmpiMjV6ZENCellYWmxaRWhsYVdkb2RDQTlJSEpsWmk1emRIbHNaUzVvWldsbmFIUTdYRzRnSUdOdmJuTjBJSE5oZG1Wa1JteGxlQ0E5SUhKbFppNXpkSGxzWlM1bWJHVjRSM0p2ZHp0Y2JpQWdaRzlqZFcxbGJuUXVZbTlrZVM1emRIbHNaUzV2ZG1WeVpteHZkeUE5SUNkb2FXUmtaVzRuTzF4dUlDQnlaV1l1YzNSNWJHVXVabXhsZUVkeWIzY2dQU0FuTUNjN1hHNGdJR052Ym5OMElIc2dkMmxrZEdnNklHMXBibGRwWkhSb0xDQm9aV2xuYUhRNklHMXBia2hsYVdkb2RDQjlJRDBnY21WbUxtZGxkRUp2ZFc1a2FXNW5RMnhwWlc1MFVtVmpkQ2dwTzF4dVhHNGdJSEpsWmk1emRIbHNaUzVtYkdWNFIzSnZkeUE5SUNjeE1EQW5PMXh1SUNCamIyNXpkQ0I3SUhkcFpIUm9PaUJ0WVhoWGFXUjBhQ3dnYUdWcFoyaDBPaUJ0WVhoSVpXbG5hSFFnZlNBOUlISmxaaTVuWlhSQ2IzVnVaR2x1WjBOc2FXVnVkRkpsWTNRb0tUdGNibHh1SUNCa2IyTjFiV1Z1ZEM1aWIyUjVMbk4wZVd4bExtOTJaWEptYkc5M0lEMGdjMkYyWldSQ2IyUjVUM1psY21ac2IzYzdYRzRnSUhKbFppNXpkSGxzWlM1M2FXUjBhQ0E5SUhOaGRtVmtWMmxrZEdnN1hHNGdJSEpsWmk1emRIbHNaUzVvWldsbmFIUWdQU0J6WVhabFpFaGxhV2RvZER0Y2JpQWdjbVZtTG5OMGVXeGxMbVpzWlhoSGNtOTNJRDBnYzJGMlpXUkdiR1Y0TzF4dVhHNGdJSEpsZEhWeWJpQjdJRzFwYmxkcFpIUm9MQ0J0WVhoWGFXUjBhQ3dnYldsdVNHVnBaMmgwTENCdFlYaElaV2xuYUhRZ2ZTQmhjeUJOWldGemRYSmxVanhVUGp0Y2JuMWNibHh1Wm5WdVkzUnBiMjRnZFhObFVtVnphWHBsVDJKelpYSjJaWElvWEc0Z0lIUmhjbWRsZERvZ1JXeGxiV1Z1ZEN4Y2JpQWdZMkk2SUNobGJuUnlhV1Z6T2lCU1pYTnBlbVZQWW5ObGNuWmxja1Z1ZEhKNVcxMHBJRDArSUhadmFXUXNYRzRnSUhSb2NtOTBkR3hsVjJGcGRDQTlJREFzWEc0Z0lHUmxjSE0vT2lCU1pXRmpkQzVFWlhCbGJtUmxibU41VEdsemRGeHVLU0I3WEc0Z0lHTnZibk4wSUhSb2NtOTBkR3hsWkVOaGJHeGlZV05ySUQwZ2RHaHliM1IwYkdVb1kySXNJSFJvY205MGRHeGxWMkZwZENrN1hHNWNiaUFnZFhObFRHRjViM1YwUldabVpXTjBLQ2dwSUQwK0lIdGNiaUFnSUNCcFppQW9JWFJoY21kbGRDa2dlMXh1SUNBZ0lDQWdjbVYwZFhKdU8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdOdmJuTjBJSEpsYzJsNlpVOWljMlZ5ZG1WeUlEMGdibVYzSUZKbGMybDZaVTlpYzJWeWRtVnlLSFJvY205MGRHeGxaRU5oYkd4aVlXTnJLVHRjYmx4dUlDQWdJSEpsYzJsNlpVOWljMlZ5ZG1WeUxtOWljMlZ5ZG1Vb2RHRnlaMlYwTENCN0lHSnZlRG9nSjJSbGRtbGpaUzF3YVhobGJDMWpiMjUwWlc1MExXSnZlQ2NnZlNrN1hHNGdJQ0FnY21WMGRYSnVJQ2dwSUQwK0lISmxjMmw2WlU5aWMyVnlkbVZ5TG1ScGMyTnZibTVsWTNRb0tUdGNiaUFnSUNBdkx5QmxjMnhwYm5RdFpHbHpZV0pzWlMxdVpYaDBMV3hwYm1VZ2NtVmhZM1F0YUc5dmEzTXZaWGhvWVhWemRHbDJaUzFrWlhCelhHNGdJSDBzSUdSbGNITXBPMXh1ZlZ4dUlsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN096czdPenM3T3pzN096czdPenM3T3pzN096czdRVUZ0UWtFc1RVRkJUU3hoUVVGblFpeEhRVUZCTEVkQlFVRXNRMEZCUVR0QlFVTjBRaXhOUVVGTkxHZERRVUZ2UWl4SlFVRkJMRWRCUVVFc1EwRkJTU3hEUVVGRExGTkJRVUVzUlVGQlZ5eFhRVUZYTEVOQlFVTXNRMEZCUVN4RFFVRkJPMEZCUTNSRUxFMUJRVTBzYTBOQlFYTkNMRWxCUVVFc1IwRkJRU3hEUVVGSkxFTkJRVU1zVjBGQlFTeEZRVUZoTEZsQlFWa3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkZNMFFzVFVGQlRTeHBRa0ZCYjBJc1IwRkJRVHRCUVVGQkxFVkJRM2hDTEVkQlFVc3NSVUZCUVR0QlFVRkJMRWxCUTBnc1IwRkJTeXhGUVVGQkxFOUJRVUU3UVVGQlFTeEpRVU5NTEVsQlFVMHNSVUZCUVN4VFFVRkJPMEZCUVVFc1NVRkRUaXhIUVVGTExFVkJRVUVzVlVGQlFUdEJRVUZCTEVsQlEwd3NSMEZCU3l4RlFVRkJMRlZCUVVFN1FVRkJRU3hIUVVOUU8wRkJRVUVzUlVGRFFTeE5RVUZSTEVWQlFVRTdRVUZCUVN4SlFVTk9MRWRCUVVzc1JVRkJRU3hSUVVGQk8wRkJRVUVzU1VGRFRDeEpRVUZOTEVWQlFVRXNVMEZCUVR0QlFVRkJMRWxCUTA0c1IwRkJTeXhGUVVGQkxGZEJRVUU3UVVGQlFTeEpRVU5NTEVkQlFVc3NSVUZCUVN4WFFVRkJPMEZCUVVFc1IwRkRVRHRCUVVOR0xFTkJRVUVzUTBGQlFUdEJRVVZQTEZOQlFWTXNVVUZCVXl4RFFVRkJPMEZCUVVFc1JVRkRka0lzVTBGQldTeEhRVUZCTEV0QlFVRTdRVUZCUVN4RlFVTmFMRlZCUVdFc1IwRkJRU3hGUVVGQk8wRkJRVUVzUlVGRFlpeFhRVUZqTEVkQlFVRXNUVUZCUVR0QlFVRkJMRVZCUTJRc2FVSkJRVUU3UVVGQlFTeEZRVU5CTEcxQ1FVRkJPMEZCUVVFc1JVRkRRU3hqUVVGQk8wRkJRVUVzUlVGRFFTeFJRVUZCTzBGQlEwWXNRMEZCVlN4RlFVRkJPMEZCUTFJc1JVRkJRU3hOUVVGTkxFbEJRVThzUjBGQlFTeExRVUZCTEVOQlFVMHNVVUZCVXl4RFFVRkJMRTlCUVVFc1EwRkJVU3hSUVVGUkxFTkJRVUVzUTBGQlFUdEJRVVUxUXl4RlFVRk5MRTFCUVVFc1YwRkJRU3hIUVVGakxFOUJRVGhDTEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCUTNSRUxFVkJRVTBzVFVGQlFTeFpRVUZCTEVkQlFXVXNUMEZCT0VJc1NVRkJTU3hEUVVGQkxFTkJRVUU3UVVGRGRrUXNSVUZCVFN4TlFVRkJMR0ZCUVVFc1IwRkJaMElzVDBGQk9FSXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRlRVFzUlVGQlRTeE5RVUZCTEZsQlFVRXNSMEZCWlN4UFFVRTRRaXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVU4yUkN4RlFVRk5MRTFCUVVFc1lVRkJRU3hIUVVGblFpeFBRVUZ6UWl4SlFVRkpMRU5CUVVFc1EwRkJRVHRCUVVOb1JDeEZRVUZOTEUxQlFVRXNZMEZCUVN4SFFVRnBRaXhQUVVGMVFpeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVVnVSQ3hGUVVGTkxFMUJRVUVzY1VKQlFVRXNSMEZCZDBJc1QwRkJNRU1zUzBGQlV5eERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTnFSaXhGUVVGTkxFMUJRVUVzVVVGQlFTeEhRVUZYTEU5QlFUSkNMRXRCUVZNc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRmNrUXNSVUZCVFN4TlFVRkJMR1ZCUVVFc1IwRkJhMElzYTBKQlFXdENMRk5CUVZjc1EwRkJRU3hEUVVGQkxFZEJRVUVzUTBGQlFUdEJRVU55UkN4RlFVRk5MRTFCUVVFc1ZVRkJRU3hIUVVGaExHdENRVUZyUWl4VFFVRlhMRU5CUVVFc1EwRkJRU3hKUVVGQkxFTkJRVUU3UVVGRGFFUXNSVUZCVFN4TlFVRkJMRlZCUVVFc1IwRkJZU3hyUWtGQmEwSXNVMEZCVnl4RFFVRkJMRU5CUVVFc1IwRkJRU3hEUVVGQk8wRkJRMmhFTEVWQlFVMHNUVUZCUVN4VlFVRkJMRWRCUVdFc2EwSkJRV3RDTEZOQlFWY3NRMEZCUVN4RFFVRkJMRWRCUVVFc1EwRkJRVHRCUVVsb1JDeEZRVUZCTEdsQ1FVRkJPMEZCUVVFc1NVRkRSU3haUVVGaExFTkJRVUVzVDBGQlFUdEJRVUZCTEVsQlEySXNRMEZCUXl4UFFVRlpMRXRCUVVFN1FVRkRXQ3hOUVVGQkxFdEJRVUVzVFVGQlZ5eFRRVUZUTEU5QlFWTXNSVUZCUVR0QlFVTXpRaXhSUVVGQkxFbEJRVWtzUTBGQlF5eExRVUZOTEVOQlFVRXNUVUZCUVN4RFFVRlBMRlZCUVZjc1EwRkJRU3haUVVGQkxFTkJRV0VzVDBGQlR5eERRVUZITEVWQlFVRTdRVUZEYkVRc1ZVRkJRU3hQUVVGQk8wRkJRVUVzVTBGRFJqdEJRVVZCTEZGQlFVRXNUVUZCVFN4UFFVRlZMRWRCUVVFc1dVRkJRU3hEUVVGaExFOUJRVk1zUTBGQlFTeHhRa0ZCUVN4RlFVRjNRaXhEUVVGQkxHVkJRVUVzUTBGQlFTeERRVUZCTzBGQlF6bEVMRkZCUVUwc1RVRkJRU3hQUVVGQkxFZEJRVlVzWTBGQlpTeERRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVOd1JDeFJRVUZaTEZkQlFVRXNRMEZCUVN4UFFVRkJMRU5CUVZNc1pVRkJaU3hEUVVGSExFVkJRVUVzUzBGQlFUdEJRVUZCTEZWQlFVRXNRMEZEYmtNc1ZVRkJWU3hQUVVGUkxFTkJRVUVzVlVGQlFTeERRVUZCTEV0QlFXZENMRTlCUVZFc1EwRkJRU3hWUVVGQkxFTkJRVUVzUjBGQll5eFJRVUZSTEZWQlFXZENMRU5CUVVFc1EwRkJRU3hIUVVGQkxFZEJRVUU3UVVGQlFTeFZRVU5zUml4RFFVRkJPMEZCUVVFc1ZVRkRRU3hIUVVGQk8wRkJRVUVzVTBGRFJpeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRTlCUTBZN1FVRkJRU3hMUVVOR08wRkJRVUVzU1VGRFFTeEhRVUZCTzBGQlFVRXNTVUZEUVN4RFFVRkRMRlZCUVVFc1JVRkJXU3hWUVVGWkxFVkJRVUVzVTBGQlFTeEZRVUZYTEdWQlFXVXNRMEZCUVR0QlFVRkJMRWRCUTNKRUxFTkJRVUU3UVVGRlFTeEZRVUZOTEUxQlFVRXNVMEZCUVN4SFFVRlpMRTlCUVhOQ0xFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlF6VkRMRVZCUVVFc1RVRkJUU3hoUVVGblFpeEhRVUZCTEZkQlFVRTdRVUZCUVN4SlFVTndRaXhEUVVGRExFTkJRVEJETEV0QlFVRTdRVUZGZWtNc1RVRkJRU3hqUVVGQkxFTkJRV1VzVDBGQlZTeEhRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlRMRU5CUVVFc2NVSkJRVUVzUlVGQmQwSXNRMEZCUVN4bFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVOMlJTeE5RVUZCTEdGQlFVRXNRMEZCWXl4UFFVRlZMRWRCUVVFc1dVRkJRU3hEUVVGaExFOUJRVk1zUTBGQlFTeHhRa0ZCUVN4RlFVRjNRaXhEUVVGQkxHVkJRVUVzUTBGQlFTeERRVUZCTzBGQlIzUkZMRTFCUVVFc1UwRkJRU3hEUVVGVkxGVkJRVlVzUTBGQlJTeERRVUZCTEZWQlFVRXNRMEZCUVN4RFFVRkJPMEZCUTNSQ0xFMUJRVmtzVjBGQlFTeERRVUZCTEU5QlFVRXNRMEZCVXl4cFFrRkJhMElzUTBGQlFTeERRVUZCTEVOQlFVVXNVMEZCVXl4RFFVRkJMRU5CUVVFN1FVRkRiRVFzVFVGQmMwSXNjVUpCUVVFc1EwRkJRU3hQUVVGQkxFZEJRVlVzWTBGQlpTeERRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVWd1JTeE5RVUZCTEZGQlFVRXNRMEZCVXl4UFFVRlZMRWRCUVVFc1MwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU55UWp0QlFVRkJMRWxCUTBFc1EwRkJReXhwUWtGQmFVSXNWVUZCVlN4RFFVRkJPMEZCUVVFc1IwRkRPVUlzUTBGQlFUdEJRVVZCTEVWQlFVRXNUVUZCVFN4aFFVRm5RaXhIUVVGQkxGZEJRVUU3UVVGQlFTeEpRVU53UWl4RFFVRkRMRU5CUVRCRExFdEJRVUU3UVVGRGVrTXNUVUZCUVN4SlFVRkpMRk5CUVZVc1EwRkJRU3hQUVVGQkxFdEJRVmtzU1VGQlVTeEpRVUZCTEdOQlFVRXNRMEZCWlN4WlFVRlpMRXRCUVU4c1JVRkJRVHRCUVVOc1JTeFJRVUZOTEUxQlFVRXNTVUZCUVN4SFFVRlBMRU5CUVVVc1EwRkJRU3hWUVVGQkxFTkJRVUVzUjBGQll5eFRRVUZWTEVOQlFVRXNUMEZCUVN4RFFVRkJPMEZCUTNaRExGRkJRVUVzVFVGQlRTeFBRVUZQTEhGQ1FVRnpRaXhEUVVGQkxFOUJRVUVzUTBGQlFUdEJRVU51UXl4UlFVRk5MRTFCUVVFc1QwRkJRU3hIUVVGVkxFMUJRVTBzWTBGQlpTeERRVUZCTEU5QlFVRXNSMEZCVlN4TlFVRk5MRWxCUVVzc1EwRkJRU3hWUVVGQkxFTkJRVUVzUlVGQllTeExRVUZMTEZWQlFWY3NRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRka1lzVVVGQlRTeE5RVUZCTEU5QlFVRXNSMEZCVlN4UFFVRlhMRWxCUVVFc1lVRkJRU3hEUVVGakxFOUJRVmNzUjBGQlFTeFZRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTndSQ3hSUVVGaExGbEJRVUVzUTBGQlFTeFBRVUZCTEVOQlFWTXNTMEZCVFN4RFFVRkJMRkZCUVVFc1IwRkJWeXhEUVVGSExFVkJRVUVzVDBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTXhReXhSUVVGQkxHRkJRVUVzUTBGQll5eFBRVUZUTEVOQlFVRXNTMEZCUVN4RFFVRk5MRkZCUVZjc1IwRkJRU3hEUVVGQkxFVkJRVWNzUTBGQlNTeEhRVUZCTEU5QlFVRXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkRMME1zVVVGQlFTeE5RVUZOTEZsQlFXVXNSMEZCUVN4TFFVRkJPMEZCUVVFc1ZVRkJRU3hEUVVOcVFpeFZRVUZWTEVsQlFVc3NRMEZCUVN4VlFVRkJMRU5CUVVFc1MwRkJaMElzU1VGQlN5eERRVUZCTEZWQlFVRXNRMEZCUVN4SFFVRmpMRXRCUVVzc1ZVRkJaMElzUTBGQlFTeERRVUZCTEVkQlFVRXNSMEZCUVR0QlFVRkJMRlZCUTNwRkxFTkJRVUU3UVVGQlFTeFZRVU5CTEVkQlFVRTdRVUZCUVN4VFFVTkdMRU5CUVVFN1FVRkZRU3hSUVVGWkxGZEJRVUVzUTBGQlFTeFBRVUZCTEVOQlFWTXNaVUZCWlN4RFFVRkhMRVZCUVVFc1dVRkJRU3hEUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlEzcERPMEZCUVVFc1MwRkRSanRCUVVGQkxFbEJRMEVzUTBGQlF5eFZRVUZCTEVWQlFWa3NWVUZCV1N4RlFVRkJMRlZCUVVFc1JVRkJXU3hWUVVGVkxFTkJRVUU3UVVGQlFTeEhRVU5xUkN4RFFVRkJPMEZCUlVFc1JVRkJRU3hOUVVGTkxGZEJRV01zUjBGQlFTeFhRVUZCTzBGQlFVRXNTVUZEYkVJc1EwRkJReXhEUVVFd1F5eExRVUZCTzBGQlEzcERMRTFCUVVFc1EwRkJRU3hEUVVGRkxHTkJRV1VzUlVGQlFTeERRVUZCTzBGQlEycENMRTFCUVVFc1EwRkJRU3hEUVVGRkxHVkJRV2RDTEVWQlFVRXNRMEZCUVR0QlFVTnNRaXhOUVVGWkxGZEJRVUVzUTBGQlFTeFBRVUZCTEVOQlFWTXNjVUpCUVhOQ0xFTkJRVUVzUTBGQlFTeERRVUZGTEZOQlFWTXNRMEZCUVN4RFFVRkJPMEZCUTNSRUxFMUJRVUVzVTBGQlFTeERRVUZWTEU5QlFWVXNSMEZCUVN4SlFVRkJMRU5CUVVFN1FVRkRjRUlzVFVGQlFTeGpRVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHTkJRVUVzUTBGQmFVSXNWVUZCVnl4RFFVRkJMRmxCUVVFc1EwRkJZU3hQUVVGVExFTkJRVUVzUzBGQlFTeERRVUZOTEZGQlFWRXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JUdEJRVUZCTEVsQlEwRXNRMEZCUXl4alFVRmpMRU5CUVVFN1FVRkJRU3hIUVVOcVFpeERRVUZCTzBGQlJVRXNSVUZCUVN4TlFVRk5MRmRCUVdNc1IwRkJRU3hOUVVGQkxHbENRVUZYTEVsQlFVRXNSMEZCUVN4RlFVRmhMRU5CUVVFc1EwRkJRVHRCUVVNMVF5eEZRVUZOTEUxQlFVRXNhVUpCUVVFc1IwRkJiMElzVDBGQmMwSXNTVUZCU1N4RFFVRkJMRU5CUVVFN1FVRkRjRVFzUlVGQlFTeE5RVUZOTEdsQ1FVRnZRaXhIUVVGQkxGZEJRVUU3UVVGQlFTeEpRVU40UWl4RFFVRkRMRWxCUVdsQ0xFdEJRVUU3UVVFelNYUkNMRTFCUVVFc1NVRkJRU3hGUVVGQkxFTkJRVUU3UVVFMFNVMHNUVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzVjBGQldTeERRVUZCTEU5QlFVRXNRMEZCVVN4SlFVRlRMRXRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRM0JFTEUxQlFVRXNTVUZCU1N4alFVRm5RaXhGUVVGQk8wRkJRMnhDTEZGQlFVRXNhVUpCUVVFc1EwRkJhMElzVDBGQlZTeEhRVUZCTEVsQlFVRXNRMEZCUVR0QlFVTTFRaXhSUVVGQkxFOUJRVUU3UVVGQlFTeFBRVU5HTEUxQlFVRXNTVUZCVnl4alFVRmxMRU5CUVVFc1QwRkJRU3hMUVVGWkxFdEJRVThzUlVGQlFUdEJRVU16UXl4UlFVRkJMRTlCUVVFN1FVRkJRU3hQUVVOR08wRkJSVUVzVFVGQlFTeE5RVUZOTEVWQlFVc3NSMEZCUVN4SlFVRkJMRWxCUVVFc1EwRkJVU3hGUVVGclFpeEhRVUZCTEdsQ1FVRkJMRU5CUVVFc1QwRkJRU3hMUVVGc1FpeEpRVUUyUWl4SFFVRkJMRVZCUVVFc1IwRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlFUdEJRVU5vUkN4TlFVRkJMRTFCUVUwc1MwRkJTeXhGUVVGTExFZEJRVUVzWVVGQlFTeERRVUZCTzBGQlEyaENMRTFCUVVFc1NVRkJTU3hWUVVGaExFZEJRVUVzUTBGQlFTeERRVUZCTzBGQlJXcENMRTFCUVVFc1NVRkJTU3hqUVVGakxFdEJRVThzUlVGQlFUdEJRVU4yUWl4UlFVRkJMRWxCUVVrc1YwRkJXU3hEUVVGQkxFOUJRVUVzUTBGQlVTeEhRVUZKTEVOQlFVRXNWMEZCVnl4RFFVRkhMRVZCUVVFN1FVRkRlRU1zVlVGQll5eFZRVUZCTEVsQlFVRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1UwRkRhRUk3UVVGRFFTeFJRVUZCTEVsQlFVa3NWMEZCV1N4RFFVRkJMRTlCUVVFc1EwRkJVU3hIUVVGSkxFTkJRVUVzV1VGQldTeERRVUZITEVWQlFVRTdRVUZEZWtNc1ZVRkJZeXhWUVVGQkxFbEJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNVMEZEYUVJN1FVRkJRU3hQUVVOTExFMUJRVUU3UVVGRFRDeFJRVUZCTEVsQlFVa3NWMEZCV1N4RFFVRkJMRTlCUVVFc1EwRkJVU3hIUVVGSkxFTkJRVUVzVTBGQlV5eERRVUZITEVWQlFVRTdRVUZEZEVNc1ZVRkJZeXhWUVVGQkxFbEJRVUVzUlVGQlFTeERRVUZCTzBGQlFVRXNVMEZEYUVJN1FVRkRRU3hSUVVGQkxFbEJRVWtzVjBGQldTeERRVUZCTEU5QlFVRXNRMEZCVVN4SFFVRkpMRU5CUVVFc1YwRkJWeXhEUVVGSExFVkJRVUU3UVVGRGVFTXNWVUZCWXl4VlFVRkJMRWxCUVVFc1JVRkJRU3hEUVVGQk8wRkJRVUVzVTBGRGFFSTdRVUZCUVN4UFFVTkdPMEZCUlVFc1RVRkJRU3hOUVVGTkxHZENRVUZuUWl4eFFrRkJjMElzUTBGQlFTeFBRVUZCTEVOQlFVRTdRVUZETlVNc1RVRkJRU3hOUVVGTkxFOUJRVlVzUjBGQlFTeFpRVUZCTEVOQlFXRXNUMEZCVXl4RFFVRkJMSEZDUVVGQkxFVkJRWGRDTEVOQlFVRXNaVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkRPVVFzVFVGQlFTeE5RVUZOTEZWQlFWVXNTMEZCVFN4RFFVRkJMRTlCUVVFc1IwRkJWU3haUVVGWkxHRkJRV01zUTBGQlFTeFZRVUZCTEVOQlFVRXNSVUZCWVN4alFVRmpMRlZCUVZjc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRmFFY3NUVUZCVFN4TlFVRkJMRTlCUVVFc1IwRkJWU3hQUVVGWExFbEJRVUVzWVVGQlFTeERRVUZqTEU5QlFWY3NSMEZCUVN4VlFVRkJMRU5CUVVFc1EwRkJRVHRCUVVWd1JDeE5RVUZoTEZsQlFVRXNRMEZCUVN4UFFVRkJMRU5CUVZNc1MwRkJUU3hEUVVGQkxGRkJRVUVzUjBGQlZ5eERRVUZITEVWQlFVRXNUMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVNeFF5eE5RVUZCTEdGQlFVRXNRMEZCWXl4UFFVRlRMRU5CUVVFc1MwRkJRU3hEUVVGTkxGRkJRVmNzUjBGQlFTeERRVUZCTEVWQlFVY3NRMEZCU1N4SFFVRkJMRTlCUVVFc1EwRkJRU3hEUVVGQkxFTkJRVUU3UVVGREwwTXNUVUZCUVN4TlFVRk5MR2RDUVVOR0xFOUJRVlVzUjBGQlFTeGhRVUZCTEVOQlFXTXNaMEpCUVdkQ0xHRkJRV01zUTBGQlFTeFZRVUZCTEVOQlFVRXNSMEZCWXl4alFVRmpMRlZCUVdkQ0xFTkJRVUVzUTBGQlFTeEhRVUZCTEVkQlFVRXNRMEZCUVR0QlFVTjBSeXhOUVVGQkxGZEJRVUVzUTBGQldTeFJRVUZUTEZsQlFXVXNSMEZCUVN4RFFVRkJMRVZCUVVjc1MwRkJUU3hEUVVGQkxGbEJRVUVzUlVGQll5eEhRVUZITEVkQlFVY3NRMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVWcVJTeE5RVUZCTEdsQ1FVRkJMRU5CUVd0Q0xFOUJRVlVzUjBGQlFTeEpRVUZCTEVOQlFVRTdRVUZETlVJc1RVRkJRU3hOUVVGQkxFTkJRVThzYzBKQlFYTkNMR2xDUVVGcFFpeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTm9SRHRCUVVGQkxFbEJRMEVzUTBGQlF5eFRRVUZCTEVWQlFWY3NWVUZCV1N4RlFVRkJMRlZCUVVFc1JVRkJXU3haUVVGWkxHVkJRV1VzUTBGQlFUdEJRVUZCTEVkQlEycEZMRU5CUVVFN1FVRkZRU3hGUVVGQkxFMUJRVTBzVTBGQldTeEhRVUZCTEZkQlFVRTdRVUZCUVN4SlFVTm9RaXhEUVVGRExFTkJRVEpETEV0QlFVRTdRVUZETVVNc1RVRkJTU3hKUVVGQkxFTkJRVUVzUTBGQlJTeFJRVUZSTEU5QlFWTXNSVUZCUVR0QlFVTnlRaXhSUVVGSkxFbEJRVUVzVVVGQlFTeERRVUZUTEZsQlFWa3NTMEZCVnl4RFFVRkJMRVZCUVVFN1FVRkRiRU1zVlVGQlV5eFJRVUZCTEVOQlFVRXNUMEZCUVN4SFFVRlZMRmxCUVdFc1EwRkJRU3hQUVVGQkxFTkJRVk1zUzBGQlRTeERRVUZCTEZGQlFVRXNRMEZCUVR0QlFVTXZReXhWUVVGaExGbEJRVUVzUTBGQlFTeFBRVUZCTEVOQlFWTXNUVUZCVFN4UlFVRlhMRWRCUVVFc1IwRkJRU3hEUVVGQk8wRkJRM1pETEZWQlFXTXNZVUZCUVN4RFFVRkJMRTlCUVVFc1EwRkJVeXhOUVVGTkxGRkJRVmNzUjBGQlFTeEhRVUZCTEVOQlFVRTdRVUZCUVN4VFFVTnVReXhOUVVGQk8wRkJRMHdzVlVGQllTeFpRVUZCTEVOQlFVRXNUMEZCUVN4RFFVRlRMRXRCUVUwc1EwRkJRU3hSUVVGQkxFZEJRVmNzVVVGQlV5eERRVUZCTEU5QlFVRXNRMEZCUVR0QlFVTm9SQ3hWUVVGQkxHRkJRVUVzUTBGQll5eFJRVUZUTEV0QlFVMHNRMEZCUVN4UlFVRkJMRWRCUVZjc1IwRkJSeXhEUVVGSkxFZEJRVUVzVlVGQlFTeERRVUZYTEZOQlFWTXNUMEZCVHl4RFFVRkJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRekZGTEZWQlFVRXNVVUZCUVN4RFFVRlRMRTlCUVZVc1IwRkJRU3hMUVVGQkxFTkJRVUVzUTBGQlFUdEJRVUZCTEZOQlEzSkNPMEZCUTBFc1VVRkJRU3hQUVVGQk8wRkJRVUVzVDBGRFJpeE5RVUZCTEVsQlFWY3NRMEZCUlN4RFFVRkJMRWRCUVVFc1MwRkJVU3hOUVVGUkxFVkJRVUU3UVVGRE0wSXNVVUZCYzBJc2NVSkJRVUVzUTBGQlFTeFBRVUZCTEVkQlFWVXNZMEZCWlN4RFFVRkJMRmxCUVVFc1EwRkJZU3hQUVVGUkxFTkJRVUVzUTBGQlFUdEJRVU53UlN4UlFVRkJMR0ZCUVVFc1EwRkJZeXhQUVVGVkxFZEJRVUVzV1VGQlFTeERRVUZoTEU5QlFWTXNRMEZCUVN4eFFrRkJRU3hGUVVGM1FpeERRVUZCTEdWQlFVRXNRMEZCUVN4RFFVRkJPMEZCUTNSRkxGRkJRVUVzVFVGQlRTeFBRVUZWTEVkQlFVRXNjVUpCUVVFc1EwRkJjMElzVDBGQlVTeERRVUZCTEZWQlFVRXNRMEZCUVN4SlFVRmxMR05CUVdNc1QwRkJWeXhIUVVGQkxGVkJRVUVzUTBGQlFTeERRVUZCTzBGQlEzUkdMRkZCUVdFc1dVRkJRU3hEUVVGQkxFOUJRVUVzUTBGQlV5eExRVUZOTEVOQlFVRXNVVUZCUVN4SFFVRlhMRU5CUVVjc1JVRkJRU3hQUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlF6RkRMRkZCUVVFc1lVRkJRU3hEUVVGakxFOUJRVk1zUTBGQlFTeExRVUZCTEVOQlFVMHNVVUZCVnl4SFFVRkJMRU5CUVVFc1JVRkJSeXhEUVVGSkxFZEJRVUVzVDBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVTXZReXhSUVVGQkxGZEJRVUVzUTBGQldTeFJRVUZUTEZsQlFXVXNSMEZCUVN4SFFVRkJMRU5CUVVFN1FVRkRjRU1zVVVGQlFTeFBRVUZCTzBGQlFVRXNUMEZEUml4TlFVRkJMRWxCUVZjc1EwRkJSU3hEUVVGQkxFZEJRVUVzUzBGQlVTeExRVUZQTEVWQlFVRTdRVUZETVVJc1VVRkJjMElzY1VKQlFVRXNRMEZCUVN4UFFVRkJMRWRCUVZVc1kwRkJaU3hEUVVGQkxGbEJRVUVzUTBGQllTeFBRVUZSTEVOQlFVRXNRMEZCUVR0QlFVTndSU3hSUVVGQkxHRkJRVUVzUTBGQll5eFBRVUZWTEVkQlFVRXNXVUZCUVN4RFFVRmhMRTlCUVZNc1EwRkJRU3h4UWtGQlFTeEZRVUYzUWl4RFFVRkJMR1ZCUVVFc1EwRkJRU3hEUVVGQk8wRkJRM1JGTEZGQlFVRXNUVUZCVFN4UFFVRlZMRWRCUVVFc2NVSkJRVUVzUTBGQmMwSXNUMEZCVVN4RFFVRkJMRlZCUVVFc1EwRkJRU3hKUVVGbExHTkJRV01zVDBGQlZ5eEhRVUZCTEZWQlFVRXNRMEZCUVN4RFFVRkJPMEZCUTNSR0xGRkJRV0VzV1VGQlFTeERRVUZCTEU5QlFVRXNRMEZCVXl4TFFVRk5MRU5CUVVFc1VVRkJRU3hIUVVGWExFTkJRVWNzUlVGQlFTeFBRVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUXpGRExGRkJRVUVzWVVGQlFTeERRVUZqTEU5QlFWTXNRMEZCUVN4TFFVRkJMRU5CUVUwc1VVRkJWeXhIUVVGQkxFTkJRVUVzUlVGQlJ5eERRVUZKTEVkQlFVRXNUMEZCUVN4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVNdlF5eFJRVUZCTEZkQlFVRXNRMEZCV1N4UlFVRlRMRmxCUVdVc1IwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGNFTXNVVUZCUVN4UFFVRkJPMEZCUVVFc1QwRkRSanRCUVVWQkxFMUJRMFVzU1VGQlFTeEZRVU5ITEdOQlFXTXNVVUZCV1N4SlFVRkJMR0ZCUVVFc1EwRkJZeXhKUVVGSkxFTkJRVVVzUTBGQlFTeEhRVUZITEV0QlEycEVMRk5CUVdNc1MwRkJRU3hMUVVGQkxFbEJRVk1zWjBKQlFXZENMRWRCUVVrc1EwRkJRU3hEUVVGQkxFTkJRVVVzUjBGQlJ5eERRVVZ1UkN4RFFVRkJMRWxCUVVFc1YwRkJRU3hEUVVGWkxGRkJRVkVzUjBGQlNTeERRVUZCTEVOQlFVRXNRMEZCUlN4SFFVRkhMRU5CUXpkQ0xFVkJRVUU3UVVGRFFTeFJRVUZCTEU5QlFVRTdRVUZCUVN4UFFVTkdPMEZCUlVFc1RVRkJRU3hSUVVGQkxFTkJRVk1zVDBGQlZTeEhRVUZCTEV0QlFVRXNRMEZCUVN4RFFVRkJPMEZCUTI1Q0xFMUJRVUVzUTBGQlFTeERRVUZGTEdOQlFXVXNSVUZCUVN4RFFVRkJPMEZCUTJwQ0xFMUJRVUVzUTBGQlFTeERRVUZGTEdWQlFXZENMRVZCUVVFc1EwRkJRVHRCUVVOc1FpeE5RVUZCTEdOQlFVRXNRMEZCWlN4UFFVRlZMRWRCUVVFc1dVRkJRU3hEUVVGaExFOUJRVk1zUTBGQlFTeHhRa0ZCUVN4RlFVRjNRaXhEUVVGQkxHVkJRVUVzUTBGQlFTeERRVUZCTzBGQlEzWkZMRTFCUVVFc1lVRkJRU3hEUVVGakxFOUJRVlVzUjBGQlFTeFpRVUZCTEVOQlFXRXNUMEZCVXl4RFFVRkJMSEZDUVVGQkxFVkJRWGRDTEVOQlFVRXNaVUZCUVN4RFFVRkJMRU5CUVVFN1FVRkRkRVVzVFVGQmMwSXNjVUpCUVVFc1EwRkJRU3hQUVVGQkxFZEJRVlVzWTBGQlpTeERRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVOd1JTeE5RVUZCTEUxQlFVMHNVMEZCVXl4RFFVRkRMRmRCUVVFc1EwRkJXU3hQUVVGUkxFTkJRVUVzUjBGQlFTeERRVUZKTEVWQlFVVXNSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkZOME1zVFVGQlFTeEpRVUZKTEUxQlFWRXNSVUZCUVR0QlFVTldMRkZCUVUwc1RVRkJRU3h4UWtGQlFTeEhRVUYzUWl4WFFVRlpMRU5CUVVFc1QwRkJRU3hEUVVGUkxFbEJRVk1zUzBGQlFTeERRVUZCTEVOQlFVRTdRVUZETTBRc1VVRkJXU3hYUVVGQkxFTkJRVUVzVDBGQlFTeERRVUZSTEVkQlFVa3NRMEZCUVN4RFFVRkJMRU5CUVVVc1IwRkJSeXhEUVVGQkxFTkJRVUU3UVVGRk4wSXNVVUZCUVN4SlFVRkpMSEZDUVVGMVFpeEZRVUZCTzBGQlEzcENMRlZCUVVFc1RVRkJRU3hEUVVGUExITkNRVUZ6UWl4cFFrRkJhVUlzUTBGQlFTeERRVUZCTzBGQlFVRXNVMEZEYUVRN1FVRkJRU3hQUVVOR08wRkJRVUVzUzBGRFJqdEJRVUZCTEVsQlEwRXNRMEZCUXl4VFFVRlhMRVZCUVVFc2FVSkJRVUVzUlVGQmJVSXNWVUZCV1N4RlFVRkJMRlZCUVVFc1JVRkJXU3hwUWtGQmFVSXNWVUZCVlN4RFFVRkJPMEZCUVVFc1IwRkRjRVlzUTBGQlFUdEJRVVZCTEVWQlFVRXNUVUZCVFN4UFFVRlZMRWRCUVVFc1YwRkJRVHRCUVVGQkxFbEJRMlFzUTBGQlF5eERRVUV5UXl4TFFVRkJPMEZCUXpGRExFMUJRVUVzU1VGRFJ5eFRRVUZqTEV0QlFVRXNTMEZCUVN4SlFVRlRMRU5CUVVNc1pVRkJRU3hEUVVGblFpeEpRVUZKTEVOQlFVVXNRMEZCUVN4SFFVRkhMRU5CUTJwRUxFbEJRVUVzVTBGQlFTeExRVUZqTEZsQlFWa3NRMEZCUXl4aFFVRkJMRU5CUVdNc1IwRkJTU3hEUVVGQkxFTkJRVUVzUTBGQlJTeEhRVUZITEVOQlEyNUVMRVZCUVVFN1FVRkRRU3hSUVVGQkxFOUJRVUU3UVVGQlFTeFBRVU5HTzBGQlJVRXNUVUZCV1N4WFFVRkJMRU5CUVVFc1QwRkJRU3hEUVVGUkxFMUJRVThzUTBGQlFTeERRVUZCTEVOQlFVVXNSMEZCUnl4RFFVRkJMRU5CUVVFN1FVRkRhRU1zVFVGQlFTeGpRVUZCTEVsQlFVRXNTVUZCUVN4SFFVRkJMRXRCUVVFc1EwRkJRU3hIUVVGQkxHTkJRVUVzUTBGQmFVSXNWVUZCVnl4RFFVRkJMRmxCUVVFc1EwRkJZU3hQUVVGVExFTkJRVUVzUzBGQlFTeERRVUZOTEZGQlFWRXNRMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOc1JUdEJRVUZCTEVsQlEwRXNRMEZCUXl4WFFVRlhMR05CUVdNc1EwRkJRVHRCUVVGQkxFZEJRelZDTEVOQlFVRTdRVUZGUVN4RlFVRk5MRTFCUVVFc1lVRkJRU3hIUVVGblFpeFpRVUZaTEUxQlFVMDdRVUZEZEVNc1NVRkJZU3haUVVGQkxFTkJRVUVzVDBGQlFTeERRVUZUTEUxQlFVMHNVVUZCVnl4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVOMlF5eEpRVUZqTEdGQlFVRXNRMEZCUVN4UFFVRkJMRU5CUVZNc1RVRkJUU3hSUVVGWExFZEJRVUVzUzBGQlFTeERRVUZCTzBGQlEzaERMRWxCUVUwc1RVRkJRU3hIUVVGQkxFZEJRVTBzWTBGQlpTeERRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlJMRU5CUVVFc1EwRkJRVHRCUVVOb1JDeEpRVUZCTEhGQ1FVRkJMRU5CUVhOQ0xFOUJRVlVzUjBGQlFTeEhRVUZCTEVOQlFVRTdRVUZEYUVNc1NVRkJRU3hqUVVGQkxFTkJRV1VzVDBGQlZTeEhRVUZCTEZsQlFVRXNRMEZCWVN4UFFVRlRMRU5CUVVFc2NVSkJRVUVzUlVGQmQwSXNRMEZCUVN4bFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVOMlJTeEpRVUZaTEZkQlFVRXNRMEZCUVN4UFFVRkJMRU5CUVZNc1dVRkJaU3hIUVVGQkxFTkJRVUVzUlVGQlFTeERRVU5vUXl4alFVRmxMRU5CUVVFc1QwRkJRU3hIUVVGVkxFbEJRVWtzVlVGQlowSXNRMEZCUVN4TFFVRkJMRWRCUVVFc1EwRkJTU3hWUVVGakxFTkJRVUVzUjBGQlFTeEhRVUZCTEVOQlFVa3NWVUZCWjBJc1EwRkJRU3hEUVVGQkxFZEJRVUVzUjBGQlFTeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUlhSR0xFVkJRVUVzUTBGQlF5eFZRVUZaTEVWQlFVRXNaVUZCUVN4RlFVRnBRaXhWUVVGVkxFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlJUVkRMRVZCUVUwc1RVRkJRU3hOUVVGQkxFZEJRVk1zV1VGQldTeE5RVUZOTzBGQlJTOUNMRWxCUVVrc1NVRkJRU3hYUVVGQkxFTkJRVmtzVDBGQlVTeERRVUZCTEVsQlFVRXNSMEZCVHl4RFFVRkhMRVZCUVVFN1FVRkRhRU1zVFVGQlFTeFhRVUZCTEVOQlFWa3NVVUZCVVN4TFFVRk5MRVZCUVVFc1EwRkJRVHRCUVVNeFFpeE5RVUZCTEZOQlFVRXNRMEZCVlN4UFFVRlZMRWRCUVVFc1NVRkJRU3hEUVVGQk8wRkJRM0JDTEUxQlFVRXNZMEZCUVN4SlFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeGpRVUZCTEVOQlFXbENMRlZCUVZjc1EwRkJRU3haUVVGQkxFTkJRV0VzVDBGQlV5eERRVUZCTEV0QlFVRXNRMEZCVFN4UlFVRlJMRU5CUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGRGJFVTdRVUZCUVN4SFFVTkdMRVZCUVVjc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlFTeERRVUZCTzBGQlJXNUNMRVZCUVUwc1RVRkJRU3hOUVVGQkxFZEJRVk1zVjBGQlZ5eFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVTnVReXhGUVVGQkxFMUJRVTBzUzBGQlN5eFhRVUZaTEVWQlFVRXNRMEZCUVR0QlFVVjJRaXhGUVVGTkxFMUJRVUVzWlVGQlFTeEhRVUZyUWl4TFFVRkxMRTFCUVZjc1MwRkJRU3hEUVVGQkxFTkJRVUU3UVVGRGVFTXNSVUZCVFN4TlFVRkJMR2RDUVVGQkxFZEJRVzFDTEd0Q1FVRnJRaXhUUVVGWkxFZEJRVUVzVVVGQlFTeERRVUZCTzBGQlJYWkVMRVZCUVVFc2RVSkJRMGNzUzBGQlFTeERRVUZCTEdGQlFVRXNRMEZCUVN4TFFVRkJMRVZCUVVFN1FVRkJRU3hKUVVORExFZEJRVXNzUlVGQlFTeFpRVUZCTzBGQlFVRXNTVUZEVEN4WFFVRlhMRTFCUVU4c1EwRkJRU3hUUVVGQk8wRkJRVUVzU1VGRGJFSXNTMEZCVHl4RlFVRkJPMEZCUVVFc1RVRkRUQ3hoUVVGbExFVkJRVUVzVTBGQlFUdEJRVUZCTEV0QlEycENPMEZCUVVFc1IwRkJRU3hyUWtGRlF5eExRVUZCTEVOQlFVRXNZVUZCUVN4RFFVRkJMRXRCUVVFc1JVRkJRVHRCUVVGQkxFbEJRME1zUjBGQlN5eEZRVUZCTEZsQlFVRTdRVUZCUVN4SlFVTk1MRmRCUVZjc1RVRkJUeXhEUVVGQkxFdEJRVUU3UVVGQlFTeEpRVU5zUWl4TFFVRlBMRVZCUVVFc1kwRkJRU3hEUVVGQk8wRkJRVUVzVFVGRFRDeFZRVUZWTEZkQlFXZENMRXRCUVVFc1RVRkJRU3hIUVVGVExFMUJRVTBzUzBGQlRTeERRVUZCTEZkQlFVRXNSVUZCWVN4SFFVRkhMRU5CUVVNc1EwRkJRVHRCUVVGQkxFMUJRMmhGTEVOQlFVTXNWVUZCWVN4SFFVRkJMR0ZCUVVFN1FVRkJRU3hMUVVOWUxFVkJRVUVzYVVKQlFVRXNRMEZCUVR0QlFVRkJMRWxCUlV3c1NVRkJTU3hEUVVGbExGbEJRVUVzUlVGQlFTeEZRVUZCTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUVVFc1JVRkZiRUlzUzBGQlN5eERRVU5TTEVOQlFVRXNRMEZCUVN4RlFVVkRMRWxCUVVzc1EwRkJRU3hEUVVGQkxFTkJRVUVzT0VWQlJVUXNTMEZCUVN4RFFVRkJMR0ZCUVVFc1EwRkJRU3hMUVVGQkxFVkJRVUU3UVVGQlFTeEpRVU5ETEVkQlFVc3NSVUZCUVN4WFFVRkJPMEZCUVVFc1NVRkRUQ3hMUVVGUExFVkJRVUVzUlVGQlJTeERRVUZETEdWQlFVRXNSMEZCYTBJc1IwRkJSeXhWUVVGbExFTkJRVUVzUlVGQlFTeERRVUZCTEVWQlFVRTdRVUZCUVN4SlFVTTVReXhUUVVGQkxFVkJRVmNzUlVGQlJ5eERRVUZCTEUxQlFVRXNRMEZCVHl4TlFVRlJMRVZCUVVFc1JVRkJSU3hEUVVGRExFMUJRVThzUTBGQlFTeG5Ra0ZCUVN4SFFVRnRRaXhUUVVGakxFdEJRVUVzVVVGQlFTeEZRVUZWTEVOQlFVRTdRVUZCUVN4SlFVTnNSaXhYUVVGQk8wRkJRVUVzU1VGRFFTeGhRVUZCTzBGQlFVRXNTVUZEUVN4aFFVRkJPMEZCUVVFc1NVRkRRU3hUUVVGQk8wRkJRVUVzU1VGRFFTeFBRVUZCTzBGQlFVRXNTVUZEUVN4aFFVRkJPMEZCUVVFc1NVRkRRU3hOUVVGQk8wRkJRVUVzU1VGRFFTeEpRVUZMTEVWQlFVRXNWMEZCUVR0QlFVRkJMRWxCUTB3c1pVRkJaU3hGUVVGQkxFTkJRVUU3UVVGQlFTeEpRVU5tTEdWQlFXVXNSVUZCUVN4SFFVRkJPMEZCUVVFc1NVRkRaaXhsUVVGbExFVkJRVUVzUlVGQlFUdEJRVUZCTEVsQlEyWXNhVUpCUVdVc1EwRkJaU3haUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SlFVTTVRaXhaUVVGWExFVkJRVUVzYjBKQlFVRTdRVUZCUVN4SlFVTllMRkZCUVZVc1JVRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFdDeHRRa0ZGUVN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxFdEJRVUVzUlVGQlFUdEJRVUZCTEVsQlEwTXNSMEZCU3l4RlFVRkJMR0ZCUVVFN1FVRkJRU3hKUVVOTUxGZEJRVmNzVFVGQlR5eERRVUZCTEV0QlFVRTdRVUZCUVN4SlFVTnNRaXhMUVVGUExFVkJRVUVzWTBGQlFTeERRVUZCTzBGQlFVRXNUVUZEVEN4UlFVRkJMRVZCUVZVc1owSkJRV2RDTEUxQlFWTXNSMEZCUVN4SFFVRkJMRWRCUVUwc1RVRkJUU3hEUVVGSkxFZEJRVUVzVjBGQlFTeEZRVUZoTEVkQlFVY3NRMEZCUXl4RFFVRkJPMEZCUVVFc1RVRkRjRVVzUTBGQlF5eFZRVUZoTEVkQlFVRXNZVUZCUVR0QlFVRkJMRTFCUTJRc1dVRkJXU3hEUVVGSExFVkJRVUVzWjBKQlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1MwRkRXaXhGUVVGQkxHMUNRVUZCTEVOQlFVRTdRVUZCUVN4SlFVVk1MRWxCUVVrc1EwRkJZU3hWUVVGQkxFVkJRVUVzUlVGQlFTeERRVUZCTEVOQlFVRTdRVUZCUVN4SFFVVm9RaXhGUVVGQkxFbEJRVUVzUTBGQlN5eERRVU5TTEVOQlFVRXNRMEZEUml4RFFVVktMRU5CUVVFc1EwRkJRVHRCUVVWS0xFTkJRVUU3UVVGRlFTeFRRVUZUTEZWQlFWVXNTMEZCYzBJc1JVRkJRVHRCUVVOMlF5eEZRVUZQTEU5QlFVRTdRVUZCUVN4SlFVTk1MRkZCUVZFc1IwRkJTU3hEUVVGQk8wRkJRVUVzVFVGRFZpeE5RVUZSTEVWQlFVRXNXVUZCUVR0QlFVRkJMRTFCUTFJc1VVRkJWU3hGUVVGQkxGVkJRVUU3UVVGQlFTeE5RVU5XTEZWQlFWa3NSVUZCUVN4RFFVRkJPMEZCUVVFc1RVRkRXaXhWUVVGWkxFVkJRVUVzVFVGQlFUdEJRVUZCTEUxQlJWb3NWMEZCWVN4RlFVRkJPMEZCUVVFc1VVRkRXQ3hQUVVGVExFVkJRVUVzU1VGQlFUdEJRVUZCTEZGQlExUXNVVUZCVlN4RlFVRkJMRlZCUVVFN1FVRkJRU3hSUVVOV0xHVkJRVUVzUlVGQmFVSXNTMEZCVFN4RFFVRkJMRTFCUVVFc1EwRkJUeXhQUVVGUkxFTkJRVUVzU1VGQlFUdEJRVUZCTEZGQlEzUkRMRWxCUVUwc1JVRkJRU3hMUVVGQk8wRkJRVUVzVVVGRFRpeFRRVUZYTEVWQlFVRXNhVUpCUVVFN1FVRkJRU3hSUVVOWUxFZEJRVXNzUlVGQlFTeERRVUZCTzBGQlFVRXNVVUZEVEN4TlFVRlJMRVZCUVVFc1RVRkJRVHRCUVVGQkxGRkJRMUlzUzBGQlR5eEZRVUZCTEV0QlFVRTdRVUZCUVN4UlFVTlFMRTlCUVZNc1JVRkJRU3hEUVVGQk8wRkJRVUVzVVVGRFZDeFZRVUZaTEVWQlFVRXNNRUpCUVVFN1FVRkJRU3hQUVVOa08wRkJRVUVzVFVGRlFTeFZRVUZaTEVWQlFVRTdRVUZCUVN4UlFVTldMRTlCUVZNc1JVRkJRU3hKUVVGQk8wRkJRVUVzVVVGRFZDeExRVUZQTEVWQlFVRXNTMEZCUVR0QlFVRkJMRkZCUTFBc1dVRkJZeXhGUVVGQkxFdEJRVUU3UVVGQlFTeFJRVU5rTEdWQlFVRXNSVUZCYVVJc1MwRkJUU3hEUVVGQkxFMUJRVUVzUTBGQlR5eE5RVUZQTEVOQlFVRXNTVUZCUVR0QlFVRkJMRkZCUTNKRExGVkJRVmtzUlVGQlFTeHRRMEZCUVR0QlFVRkJMRkZCUTFvc1RVRkJVU3hGUVVGQkxFdEJRVUU3UVVGQlFTeFJRVU5TTEVkQlFVc3NSVUZCUVN4MVFrRkJRVHRCUVVGQkxGRkJRMHdzVTBGQlZ5eEZRVUZCTEd0Q1FVRkJPMEZCUVVFc1VVRkRXQ3hSUVVGVkxFVkJRVUVzVlVGQlFUdEJRVUZCTEZGQlExWXNTVUZCVFN4RlFVRkJMRXRCUVVFN1FVRkJRU3hQUVVOU08wRkJRVUVzVFVGRlFTd3dRa0ZCTkVJc1JVRkJRVHRCUVVGQkxGRkJRekZDTEU5QlFWTXNSVUZCUVN4TlFVRkJPMEZCUVVFc1VVRkRWQ3hYUVVGaExFVkJRVUU3UVVGQlFTeFZRVU5ZTEU5QlFWTXNSVUZCUVN4RFFVRkJPMEZCUVVFc1UwRkRXRHRCUVVGQkxGRkJSVUVzVlVGQldTeEZRVUZCTzBGQlFVRXNWVUZEVml4bFFVRkJMRVZCUVdsQ0xFdEJRVTBzUTBGQlFTeE5RVUZCTEVOQlFVOHNUMEZCVVN4RFFVRkJMRWxCUVVFN1FVRkJRU3hUUVVONFF6dEJRVUZCTEU5QlEwWTdRVUZCUVN4TFFVTkVMRU5CUVVFN1FVRkJRU3hKUVVORUxHdENRVUZyUWl4SFFVRkpMRU5CUVVFN1FVRkJRU3hOUVVOd1FpeE5RVUZSTEVWQlFVRXNXVUZCUVR0QlFVRkJMRTFCUlZJc1YwRkJZU3hGUVVGQk8wRkJRVUVzVVVGRFdDeEpRVUZOTEVWQlFVRXNVMEZCUVR0QlFVRkJMRkZCUTA0c1UwRkJWeXhGUVVGQkxHdENRVUZCTzBGQlFVRXNVVUZEV0N4SFFVRkxMRVZCUVVFc1MwRkJRVHRCUVVGQkxGRkJRMHdzVFVGQlVTeEZRVUZCTEV0QlFVRTdRVUZCUVN4UlFVTlNMRXRCUVU4c1JVRkJRU3hOUVVGQk8wRkJRVUVzVDBGRFZEdEJRVUZCTEUxQlJVRXNWVUZCV1N4RlFVRkJPMEZCUVVFc1VVRkRWaXhMUVVGUExFVkJRVUVzUzBGQlFUdEJRVUZCTEZGQlExQXNUVUZCVVN4RlFVRkJMRXRCUVVFN1FVRkJRU3hSUVVOU0xFZEJRVXNzUlVGQlFTeExRVUZCTzBGQlFVRXNVVUZEVEN4VFFVRlhMRVZCUVVFc2EwSkJRVUU3UVVGQlFTeFJRVU5ZTEVsQlFVMHNSVUZCUVN4MVFrRkJRVHRCUVVGQkxFOUJRMUk3UVVGQlFTeExRVU5FTEVOQlFVRTdRVUZCUVN4SlFVTkVMRmRCUVZjc1IwRkJTU3hEUVVGQk8wRkJRVUVzVFVGRFlpeFBRVUZUTEVWQlFVRXNUVUZCUVR0QlFVRkJMRTFCUTFRc1MwRkJUeXhGUVVGQkxFMUJRVUU3UVVGQlFTeE5RVU5RTEZGQlFWVXNSVUZCUVN4RFFVRkJPMEZCUVVFc1RVRkRWaXhSUVVGVkxFVkJRVUVzVVVGQlFUdEJRVUZCTEV0QlExZ3NRMEZCUVR0QlFVRkJMRWxCUTBRc1MwRkJRU3hGUVVGUExFbEJRVWtzUlVGQlJTeFBRVUZCTEVWQlFWTXNVVUZCVVN4UlFVRlZMRVZCUVVFc1ZVRkJRU3hGUVVGWkxGTkJRVmNzUlVGQlFTeERRVUZCTEVWQlFVY3NRMEZCUVR0QlFVRkJMRWRCUTNCRkxFTkJRVUU3UVVGRFJpeERRVUZCTzBGQlUwRXNVMEZCVXl4bFFVRTBReXhIUVVGeFFpeEZRVUZCTzBGQlEzaEZMRVZCUVVFc1NVRkJTU3hSUVVGUkxFbEJRVTBzUlVGQlFUdEJRVU5vUWl4SlFVRlBMRTlCUVVFc1MwRkJRU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5VTzBGQlJVRXNSVUZCVFN4TlFVRkJMR2xDUVVGQkxFZEJRVzlDTEZGQlFWTXNRMEZCUVN4SlFVRkJMRU5CUVVzc1MwRkJUU3hEUVVGQkxGRkJRVUVzUTBGQlFUdEJRVU01UXl4RlFVRk5MRTFCUVVFc1ZVRkJRU3hIUVVGaExFbEJRVWtzUzBGQlRTeERRVUZCTEV0QlFVRXNRMEZCUVR0QlFVTTNRaXhGUVVGTkxFMUJRVUVzVjBGQlFTeEhRVUZqTEVsQlFVa3NTMEZCVFN4RFFVRkJMRTFCUVVFc1EwRkJRVHRCUVVNNVFpeEZRVUZOTEUxQlFVRXNVMEZCUVN4SFFVRlpMRWxCUVVrc1MwRkJUU3hEUVVGQkxGRkJRVUVzUTBGQlFUdEJRVU0xUWl4RlFVRlRMRkZCUVVFc1EwRkJRU3hKUVVGQkxFTkJRVXNzVFVGQlRTeFJRVUZYTEVkQlFVRXNVVUZCUVN4RFFVRkJPMEZCUXk5Q0xFVkJRVUVzUjBGQlFTeERRVUZKTEUxQlFVMHNVVUZCVnl4SFFVRkJMRWRCUVVFc1EwRkJRVHRCUVVOeVFpeEZRVUZCTEUxQlFVMHNSVUZCUlN4TFFVRlBMRVZCUVVFc1VVRkJRU3hGUVVGVkxGRkJRVkVzVTBGQlZTeEZRVUZCTEVkQlFVa3NTVUZCU1N4eFFrRkJjMElzUlVGQlFTeERRVUZCTzBGQlJYcEZMRVZCUVVFc1IwRkJRU3hEUVVGSkxFMUJRVTBzVVVGQlZ5eEhRVUZCTEV0QlFVRXNRMEZCUVR0QlFVTnlRaXhGUVVGQkxFMUJRVTBzUlVGQlJTeExRVUZQTEVWQlFVRXNVVUZCUVN4RlFVRlZMRkZCUVZFc1UwRkJWU3hGUVVGQkxFZEJRVWtzU1VGQlNTeHhRa0ZCYzBJc1JVRkJRU3hEUVVGQk8wRkJSWHBGTEVWQlFWTXNVVUZCUVN4RFFVRkJMRWxCUVVFc1EwRkJTeXhOUVVGTkxGRkJRVmNzUjBGQlFTeHBRa0ZCUVN4RFFVRkJPMEZCUXk5Q0xFVkJRVUVzUjBGQlFTeERRVUZKTEUxQlFVMHNTMEZCVVN4SFFVRkJMRlZCUVVFc1EwRkJRVHRCUVVOc1FpeEZRVUZCTEVkQlFVRXNRMEZCU1N4TlFVRk5MRTFCUVZNc1IwRkJRU3hYUVVGQkxFTkJRVUU3UVVGRGJrSXNSVUZCUVN4SFFVRkJMRU5CUVVrc1RVRkJUU3hSUVVGWExFZEJRVUVzVTBGQlFTeERRVUZCTzBGQlJYSkNMRVZCUVVFc1QwRkJUeXhGUVVGRkxGRkJRVUVzUlVGQlZTeFJRVUZWTEVWQlFVRXNVMEZCUVN4RlFVRlhMRk5CUVZVc1JVRkJRU3hEUVVGQk8wRkJRM0JFTEVOQlFVRTdRVUZGUVN4VFFVRlRMR2xDUVVOUUxFTkJRVUVzVFVGQlFTeEZRVU5CTEVWQlEwRXNSVUZCUVN4WlFVRkJMRWRCUVdVc1IwRkRaaXhKUVVOQkxFVkJRVUU3UVVGRFFTeEZRVUZOTEUxQlFVRXNhVUpCUVVFc1IwRkJiMElzVVVGQlV5eERRVUZCTEVWQlFVRXNSVUZCU1N4WlFVRlpMRU5CUVVFc1EwRkJRVHRCUVVWdVJDeEZRVUZCTEdWQlFVRXNRMEZCWjBJc1RVRkJUVHRCUVVOd1FpeEpRVUZCTEVsQlFVa3NRMEZCUXl4TlFVRlJMRVZCUVVFN1FVRkRXQ3hOUVVGQkxFOUJRVUU3UVVGQlFTeExRVU5HTzBGQlJVRXNTVUZCVFN4TlFVRkJMR05CUVVFc1IwRkJhVUlzU1VGQlNTeGpRVUZCTEVOQlFXVXNhVUpCUVdsQ0xFTkJRVUVzUTBGQlFUdEJRVVV6UkN4SlFVRkJMR05CUVVFc1EwRkJaU3hQUVVGUkxFTkJRVUVzVFVGQlFTeEZRVUZSTEVWQlFVVXNSMEZCUVN4RlFVRkxMRFJDUVVFMFFpeERRVUZCTEVOQlFVRTdRVUZEYkVVc1NVRkJUeXhQUVVGQkxFMUJRVTBzWlVGQlpTeFZRVUZYTEVWQlFVRXNRMEZCUVR0QlFVRkJMRXRCUlhSRExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlExUTdPenM3SW4wPVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQkEsTUFBTSxhQUFnQixHQUFBLEdBQUEsQ0FBQTtBQUN0QixNQUFNLGdDQUFvQixJQUFBLEdBQUEsQ0FBSSxDQUFDLFNBQUEsRUFBVyxXQUFXLENBQUMsQ0FBQSxDQUFBO0FB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
|