@grafana/scenes 6.7.0 → 6.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
  3. package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
  4. package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
  5. package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
  6. package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
  7. package/dist/esm/dist/esm/components/NestedScene.js +95 -0
  8. package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
  9. package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
  10. package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
  11. package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
  12. package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
  13. package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
  14. package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
  15. package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
  16. package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
  17. package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
  18. package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
  19. package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
  20. package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
  21. package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
  22. package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
  23. package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
  24. package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
  25. package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
  26. package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
  27. package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
  28. package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  29. package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  30. package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
  31. package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  32. package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  33. package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
  34. package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
  35. package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
  36. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
  37. package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  38. package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
  39. package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
  40. package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
  41. package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
  42. package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
  43. package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
  44. package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
  45. package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
  46. package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
  47. package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
  48. package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
  49. package/dist/esm/dist/esm/core/events.js +11 -0
  50. package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
  51. package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
  52. package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
  53. package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
  54. package/dist/esm/dist/esm/core/types.js +15 -0
  55. package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
  56. package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
  57. package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
  58. package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
  59. package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
  60. package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
  61. package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
  62. package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
  63. package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
  64. package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  65. package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
  66. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  67. package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  68. package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
  69. package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
  70. package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
  71. package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
  72. package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
  73. package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
  74. package/dist/esm/dist/esm/services/utils.js +71 -0
  75. package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
  76. package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
  77. package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
  78. package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  79. package/dist/esm/dist/esm/utils/date.js +15 -0
  80. package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
  81. package/dist/esm/dist/esm/utils/explore.js +47 -0
  82. package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
  83. package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
  84. package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
  85. package/dist/esm/dist/esm/utils/metricTree.js +53 -0
  86. package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
  87. package/dist/esm/dist/esm/utils/utils.js +11 -0
  88. package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
  89. package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
  90. package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
  91. package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
  92. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
  93. package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
  94. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  95. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  96. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  97. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  98. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  99. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  100. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  101. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  102. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
  103. package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  104. package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  105. package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
  106. package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
  107. package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
  108. package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
  109. package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
  110. package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
  111. package/dist/esm/dist/esm/variables/constants.js +9 -0
  112. package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
  113. package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
  114. package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  115. package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  116. package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
  117. package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
  118. package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
  119. package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
  120. package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
  121. package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
  122. package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
  123. package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
  124. package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
  125. package/dist/esm/dist/esm/variables/macros/index.js +26 -0
  126. package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
  127. package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
  128. package/dist/esm/dist/esm/variables/macros/types.js +11 -0
  129. package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
  130. package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
  131. package/dist/esm/dist/esm/variables/types.js +11 -0
  132. package/dist/esm/dist/esm/variables/utils.js +172 -0
  133. package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
  134. package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
  135. package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
  136. package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
  137. package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
  138. package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
  139. package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
  140. package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
  141. package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
  142. package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
  143. package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
  144. package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
  145. package/dist/esm/index.js +1 -1
  146. package/dist/esm/index.js.map +1 -1
  147. package/dist/esm/querying/DataProviderSharer.js +39 -0
  148. package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
  149. package/dist/esm/src/behaviors/CursorSync.js +76 -0
  150. package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
  151. package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
  152. package/dist/esm/src/behaviors/index.js +5 -0
  153. package/dist/esm/src/components/EmbeddedScene.js +59 -0
  154. package/dist/esm/src/components/NestedScene.js +95 -0
  155. package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
  156. package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
  157. package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
  158. package/dist/esm/src/components/SceneApp/utils.js +42 -0
  159. package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
  160. package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
  161. package/dist/esm/src/components/SceneCanvasText.js +32 -0
  162. package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
  163. package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
  164. package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
  165. package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
  166. package/dist/esm/src/components/SceneReactObject.js +34 -0
  167. package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
  168. package/dist/esm/src/components/SceneTimePicker.js +139 -0
  169. package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
  170. package/dist/esm/src/components/SceneToolbarButton.js +33 -0
  171. package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
  172. package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
  173. package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
  174. package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
  175. package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
  176. package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
  177. package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
  178. package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
  179. package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
  180. package/dist/esm/src/components/layout/LazyLoader.js +103 -0
  181. package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
  182. package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
  183. package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
  184. package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
  185. package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
  186. package/dist/esm/src/components/layout/grid/constants.js +7 -0
  187. package/dist/esm/src/components/layout/grid/utils.js +36 -0
  188. package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
  189. package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
  190. package/dist/esm/src/components/layout/split/Splitter.js +386 -0
  191. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
  192. package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
  193. package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
  194. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
  195. package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
  196. package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
  197. package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
  198. package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
  199. package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
  200. package/dist/esm/src/core/PanelBuilders/index.js +116 -0
  201. package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
  202. package/dist/esm/src/core/SceneDataNode.js +43 -0
  203. package/dist/esm/src/core/SceneObjectBase.js +286 -0
  204. package/dist/esm/src/core/SceneObjectRef.js +32 -0
  205. package/dist/esm/src/core/SceneTimeRange.js +231 -0
  206. package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
  207. package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
  208. package/dist/esm/src/core/events.js +11 -0
  209. package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
  210. package/dist/esm/src/core/sceneGraph/index.js +25 -0
  211. package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
  212. package/dist/esm/src/core/sceneGraph/utils.js +64 -0
  213. package/dist/esm/src/core/types.js +15 -0
  214. package/dist/esm/src/index.js +108 -0
  215. package/dist/esm/src/querying/DataLayersMerger.js +46 -0
  216. package/dist/esm/src/querying/DataProviderProxy.js +37 -0
  217. package/dist/esm/src/querying/DataProviderSharer.js +108 -0
  218. package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
  219. package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
  220. package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
  221. package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
  222. package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
  223. package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
  224. package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
  225. package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
  226. package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
  227. package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
  228. package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
  229. package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
  230. package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
  231. package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
  232. package/dist/esm/src/querying/layers/index.js +2 -0
  233. package/dist/esm/src/querying/registerQueryWithController.js +41 -0
  234. package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
  235. package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
  236. package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
  237. package/dist/esm/src/services/UrlSyncManager.js +167 -0
  238. package/dist/esm/src/services/useUrlSync.js +29 -0
  239. package/dist/esm/src/services/utils.js +75 -0
  240. package/dist/esm/src/utils/ControlsLabel.js +107 -0
  241. package/dist/esm/src/utils/LoadingIndicator.js +19 -0
  242. package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
  243. package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
  244. package/dist/esm/src/utils/date.js +15 -0
  245. package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
  246. package/dist/esm/src/utils/explore.js +47 -0
  247. package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
  248. package/dist/esm/src/utils/getDataSource.js +18 -0
  249. package/dist/esm/src/utils/getMessageFromError.js +24 -0
  250. package/dist/esm/src/utils/metricTree.js +53 -0
  251. package/dist/esm/src/utils/parseUrlParam.js +41 -0
  252. package/dist/esm/src/utils/utils.js +11 -0
  253. package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
  254. package/dist/esm/src/utils/writeSceneLog.js +12 -0
  255. package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
  256. package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
  257. package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
  258. package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
  259. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
  260. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
  261. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
  262. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
  263. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
  264. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
  265. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
  266. package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
  267. package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
  268. package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
  269. package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
  270. package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
  271. package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
  272. package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
  273. package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
  274. package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
  275. package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
  276. package/dist/esm/src/variables/constants.js +9 -0
  277. package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
  278. package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
  279. package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
  280. package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
  281. package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
  282. package/dist/esm/src/variables/interpolation/defaults.js +21 -0
  283. package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
  284. package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
  285. package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
  286. package/dist/esm/src/variables/lookupVariable.js +20 -0
  287. package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
  288. package/dist/esm/src/variables/macros/contextMacros.js +43 -0
  289. package/dist/esm/src/variables/macros/dataMacros.js +134 -0
  290. package/dist/esm/src/variables/macros/index.js +35 -0
  291. package/dist/esm/src/variables/macros/templateProxies.js +51 -0
  292. package/dist/esm/src/variables/macros/timeMacros.js +86 -0
  293. package/dist/esm/src/variables/macros/types.js +11 -0
  294. package/dist/esm/src/variables/macros/urlMacros.js +56 -0
  295. package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
  296. package/dist/esm/src/variables/types.js +11 -0
  297. package/dist/esm/src/variables/utils.js +172 -0
  298. package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
  299. package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
  300. package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
  301. package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
  302. package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
  303. package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
  304. package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
  305. package/dist/esm/src/variables/variants/TestVariable.js +117 -0
  306. package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
  307. package/dist/esm/src/variables/variants/guards.js +27 -0
  308. package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
  309. package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
  310. package/dist/esm/src/variables/variants/query/guards.js +28 -0
  311. package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
  312. package/dist/esm/src/variables/variants/query/utils.js +124 -0
  313. package/dist/esm/variables/components/VariableValueSelect.js +13 -9
  314. package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
  315. package/dist/esm/variables/variants/ConstantVariable.js +22 -0
  316. package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
  317. package/dist/esm/variables/variants/CustomVariable.js +3 -2
  318. package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
  319. package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
  320. package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
  321. package/dist/esm/variables/variants/JsonVariable.js +96 -0
  322. package/dist/esm/variables/variants/TestVariable.js +3 -2
  323. package/dist/esm/variables/variants/TestVariable.js.map +1 -1
  324. package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
  325. package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
  326. package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
  327. package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
  328. package/dist/index.d.ts +14 -6
  329. package/dist/index.js +35 -13
  330. package/dist/index.js.map +1 -1
  331. package/package.json +2 -2
@@ -0,0 +1,259 @@
1
+ import React, { useMemo, useState, useEffect } from 'react';
2
+ import { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid.js';
3
+ import { sceneGraph } from '../../core/sceneGraph/index.js';
4
+ import { MultiValueVariable } from '../variants/MultiValueVariable.js';
5
+ import { lastValueFrom, map, of, from, mergeMap, tap, take } from 'rxjs';
6
+ import { getDataSource } from '../../utils/getDataSource.js';
7
+ import { MultiSelect } from '@grafana/ui';
8
+ import { isArray } from 'lodash';
9
+ import { handleOptionGroups, dataFromResponse, getQueriesForVariables, responseHasError } from '../utils.js';
10
+ import { OptionWithCheckbox } from '../components/VariableValueSelect.js';
11
+ import { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler.js';
12
+ import { getOptionSearcher } from '../components/getOptionSearcher.js';
13
+ import { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';
14
+ import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';
15
+
16
+ var __defProp = Object.defineProperty;
17
+ var __defProps = Object.defineProperties;
18
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
19
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
20
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
21
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
22
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
23
+ var __spreadValues = (a, b) => {
24
+ for (var prop in b || (b = {}))
25
+ if (__hasOwnProp.call(b, prop))
26
+ __defNormalProp(a, prop, b[prop]);
27
+ if (__getOwnPropSymbols)
28
+ for (var prop of __getOwnPropSymbols(b)) {
29
+ if (__propIsEnum.call(b, prop))
30
+ __defNormalProp(a, prop, b[prop]);
31
+ }
32
+ return a;
33
+ };
34
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
35
+ class GroupByVariable extends MultiValueVariable {
36
+ constructor(initialState) {
37
+ super(__spreadProps(__spreadValues({
38
+ isMulti: true,
39
+ name: "",
40
+ value: [],
41
+ text: [],
42
+ options: [],
43
+ datasource: null,
44
+ baseFilters: [],
45
+ applyMode: "auto",
46
+ layout: "horizontal",
47
+ type: "groupby"
48
+ }, initialState), {
49
+ noValueOnClear: true
50
+ }));
51
+ this.isLazy = true;
52
+ this._urlSync = new GroupByVariableUrlSyncHandler(this);
53
+ this._getKeys = async (ds) => {
54
+ var _a, _b, _c;
55
+ const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));
56
+ if (override && override.replace) {
57
+ return override.values;
58
+ }
59
+ if (this.state.defaultOptions) {
60
+ return this.state.defaultOptions.concat(dataFromResponse((_c = override == null ? void 0 : override.values) != null ? _c : []));
61
+ }
62
+ if (!ds.getTagKeys) {
63
+ return [];
64
+ }
65
+ const queries = getQueriesForVariables(this);
66
+ const otherFilters = this.state.baseFilters || [];
67
+ const timeRange = sceneGraph.getTimeRange(this).state.value;
68
+ const response = await ds.getTagKeys(__spreadValues({
69
+ filters: otherFilters,
70
+ queries,
71
+ timeRange
72
+ }, getEnrichedFiltersRequest(this)));
73
+ if (responseHasError(response)) {
74
+ this.setState({ error: response.error.message });
75
+ }
76
+ let keys = dataFromResponse(response);
77
+ if (override) {
78
+ keys = keys.concat(dataFromResponse(override.values));
79
+ }
80
+ const tagKeyRegexFilter = this.state.tagKeyRegexFilter;
81
+ if (tagKeyRegexFilter) {
82
+ keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));
83
+ }
84
+ return keys;
85
+ };
86
+ this.addActivationHandler(() => {
87
+ allActiveGroupByVariables.add(this);
88
+ return () => allActiveGroupByVariables.delete(this);
89
+ });
90
+ }
91
+ validateAndUpdate() {
92
+ return this.getValueOptions({}).pipe(
93
+ map((options) => {
94
+ this._updateValueGivenNewOptions(options);
95
+ return {};
96
+ })
97
+ );
98
+ }
99
+ _updateValueGivenNewOptions(options) {
100
+ const { value: currentValue, text: currentText } = this.state;
101
+ const stateUpdate = {
102
+ options,
103
+ loading: false,
104
+ value: currentValue != null ? currentValue : [],
105
+ text: currentText != null ? currentText : []
106
+ };
107
+ this.setState(stateUpdate);
108
+ }
109
+ getValueOptions(args) {
110
+ if (this.state.defaultOptions) {
111
+ return of(
112
+ this.state.defaultOptions.map((o) => ({
113
+ label: o.text,
114
+ value: String(o.value),
115
+ group: o.group
116
+ }))
117
+ );
118
+ }
119
+ this.setState({ loading: true, error: null });
120
+ return from(
121
+ getDataSource(this.state.datasource, {
122
+ __sceneObject: wrapInSafeSerializableSceneObject(this)
123
+ })
124
+ ).pipe(
125
+ mergeMap((ds) => {
126
+ return from(this._getKeys(ds)).pipe(
127
+ tap((response) => {
128
+ if (responseHasError(response)) {
129
+ this.setState({ error: response.error.message });
130
+ }
131
+ }),
132
+ map((response) => dataFromResponse(response)),
133
+ take(1),
134
+ mergeMap((data) => {
135
+ const a = data.map((i) => {
136
+ return {
137
+ label: i.text,
138
+ value: i.value ? String(i.value) : i.text,
139
+ group: i.group
140
+ };
141
+ });
142
+ return of(a);
143
+ })
144
+ );
145
+ })
146
+ );
147
+ }
148
+ getDefaultMultiState(options) {
149
+ return { value: [], text: [] };
150
+ }
151
+ }
152
+ GroupByVariable.Component = GroupByVariableRenderer;
153
+ function GroupByVariableRenderer({ model }) {
154
+ const {
155
+ value,
156
+ text,
157
+ key,
158
+ maxVisibleValues,
159
+ noValueOnClear,
160
+ options,
161
+ includeAll,
162
+ allowCustomValue = true
163
+ } = model.useState();
164
+ const values = useMemo(() => {
165
+ const arrayValue = isArray(value) ? value : [value];
166
+ const arrayText = isArray(text) ? text : [text];
167
+ return arrayValue.map((value2, idx) => {
168
+ var _a;
169
+ return {
170
+ value: value2,
171
+ label: String((_a = arrayText[idx]) != null ? _a : value2)
172
+ };
173
+ });
174
+ }, [value, text]);
175
+ const [isFetchingOptions, setIsFetchingOptions] = useState(false);
176
+ const [isOptionsOpen, setIsOptionsOpen] = useState(false);
177
+ const [inputValue, setInputValue] = useState("");
178
+ const [uncommittedValue, setUncommittedValue] = useState(values);
179
+ const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);
180
+ useEffect(() => {
181
+ setUncommittedValue(values);
182
+ }, [values]);
183
+ const onInputChange = (value2, { action }) => {
184
+ if (action === "input-change") {
185
+ setInputValue(value2);
186
+ if (model.onSearchChange) {
187
+ model.onSearchChange(value2);
188
+ }
189
+ return value2;
190
+ }
191
+ if (action === "input-blur") {
192
+ setInputValue("");
193
+ return "";
194
+ }
195
+ return inputValue;
196
+ };
197
+ const filteredOptions = useMemo(
198
+ () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),
199
+ [optionSearcher, inputValue]
200
+ );
201
+ return /* @__PURE__ */ React.createElement(MultiSelect, {
202
+ "data-testid": `GroupBySelect-${key}`,
203
+ id: key,
204
+ placeholder: "Select value",
205
+ width: "auto",
206
+ allowCustomValue,
207
+ inputValue,
208
+ value: uncommittedValue,
209
+ noMultiValueWrap: true,
210
+ maxVisibleValues: maxVisibleValues != null ? maxVisibleValues : 5,
211
+ tabSelectsValue: false,
212
+ virtualized: true,
213
+ options: filteredOptions,
214
+ filterOption: filterNoOp,
215
+ closeMenuOnSelect: false,
216
+ isOpen: isOptionsOpen,
217
+ isClearable: true,
218
+ hideSelectedOptions: false,
219
+ isLoading: isFetchingOptions,
220
+ components: { Option: OptionWithCheckbox },
221
+ onInputChange,
222
+ onBlur: () => {
223
+ model.changeValueTo(
224
+ uncommittedValue.map((x) => x.value),
225
+ uncommittedValue.map((x) => x.label)
226
+ );
227
+ },
228
+ onChange: (newValue, action) => {
229
+ if (action.action === "clear" && noValueOnClear) {
230
+ model.changeValueTo([]);
231
+ }
232
+ setUncommittedValue(newValue);
233
+ },
234
+ onOpenMenu: async () => {
235
+ setIsFetchingOptions(true);
236
+ await lastValueFrom(model.validateAndUpdate());
237
+ setIsFetchingOptions(false);
238
+ setIsOptionsOpen(true);
239
+ },
240
+ onCloseMenu: () => {
241
+ setIsOptionsOpen(false);
242
+ }
243
+ });
244
+ }
245
+ const filterNoOp = () => true;
246
+ function toSelectableValue(input) {
247
+ const { label, value, group } = input;
248
+ const result = {
249
+ label,
250
+ value
251
+ };
252
+ if (group) {
253
+ result.group = group;
254
+ }
255
+ return result;
256
+ }
257
+
258
+ export { GroupByVariable, GroupByVariableRenderer };
259
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXBCeVZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvZ3JvdXBieS9Hcm91cEJ5VmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBhbGxBY3RpdmVHcm91cEJ5VmFyaWFibGVzIH0gZnJvbSAnLi9maW5kQWN0aXZlR3JvdXBCeVZhcmlhYmxlc0J5VWlkLmpzJztcbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi9jb3JlL3NjZW5lR3JhcGgvaW5kZXguanMnO1xuaW1wb3J0IHsgTXVsdGlWYWx1ZVZhcmlhYmxlIH0gZnJvbSAnLi4vdmFyaWFudHMvTXVsdGlWYWx1ZVZhcmlhYmxlLmpzJztcbmltcG9ydCB7IG1hcCwgb2YsIGZyb20sIG1lcmdlTWFwLCB0YXAsIHRha2UsIGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGdldERhdGFTb3VyY2UgfSBmcm9tICcuLi8uLi91dGlscy9nZXREYXRhU291cmNlLmpzJztcbmltcG9ydCB7IE11bHRpU2VsZWN0IH0gZnJvbSAnQGdyYWZhbmEvdWknO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkYXRhRnJvbVJlc3BvbnNlLCBnZXRRdWVyaWVzRm9yVmFyaWFibGVzLCByZXNwb25zZUhhc0Vycm9yLCBoYW5kbGVPcHRpb25Hcm91cHMgfSBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgeyBPcHRpb25XaXRoQ2hlY2tib3ggfSBmcm9tICcuLi9jb21wb25lbnRzL1ZhcmlhYmxlVmFsdWVTZWxlY3QuanMnO1xuaW1wb3J0IHsgR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXIgfSBmcm9tICcuL0dyb3VwQnlWYXJpYWJsZVVybFN5bmNIYW5kbGVyLmpzJztcbmltcG9ydCB7IGdldE9wdGlvblNlYXJjaGVyIH0gZnJvbSAnLi4vY29tcG9uZW50cy9nZXRPcHRpb25TZWFyY2hlci5qcyc7XG5pbXBvcnQgeyBnZXRFbnJpY2hlZEZpbHRlcnNSZXF1ZXN0IH0gZnJvbSAnLi4vZ2V0RW5yaWNoZWRGaWx0ZXJzUmVxdWVzdC5qcyc7XG5pbXBvcnQgeyB3cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QgfSBmcm9tICcuLi8uLi91dGlscy93cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QuanMnO1xuXG52YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fZGVmUHJvcHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydGllcztcbnZhciBfX2dldE93blByb3BEZXNjcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzO1xudmFyIF9fZ2V0T3duUHJvcFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIF9faGFzT3duUHJvcCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgX19wcm9wSXNFbnVtID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBfX2RlZk5vcm1hbFByb3AgPSAob2JqLCBrZXksIHZhbHVlKSA9PiBrZXkgaW4gb2JqID8gX19kZWZQcm9wKG9iaiwga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUsIHZhbHVlIH0pIDogb2JqW2tleV0gPSB2YWx1ZTtcbnZhciBfX3NwcmVhZFZhbHVlcyA9IChhLCBiKSA9PiB7XG4gIGZvciAodmFyIHByb3AgaW4gYiB8fCAoYiA9IHt9KSlcbiAgICBpZiAoX19oYXNPd25Qcm9wLmNhbGwoYiwgcHJvcCkpXG4gICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gIGlmIChfX2dldE93blByb3BTeW1ib2xzKVxuICAgIGZvciAodmFyIHByb3Agb2YgX19nZXRPd25Qcm9wU3ltYm9scyhiKSkge1xuICAgICAgaWYgKF9fcHJvcElzRW51bS5jYWxsKGIsIHByb3ApKVxuICAgICAgICBfX2RlZk5vcm1hbFByb3AoYSwgcHJvcCwgYltwcm9wXSk7XG4gICAgfVxuICByZXR1cm4gYTtcbn07XG52YXIgX19zcHJlYWRQcm9wcyA9IChhLCBiKSA9PiBfX2RlZlByb3BzKGEsIF9fZ2V0T3duUHJvcERlc2NzKGIpKTtcbmNsYXNzIEdyb3VwQnlWYXJpYWJsZSBleHRlbmRzIE11bHRpVmFsdWVWYXJpYWJsZSB7XG4gIGNvbnN0cnVjdG9yKGluaXRpYWxTdGF0ZSkge1xuICAgIHN1cGVyKF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe1xuICAgICAgaXNNdWx0aTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICB2YWx1ZTogW10sXG4gICAgICB0ZXh0OiBbXSxcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgZGF0YXNvdXJjZTogbnVsbCxcbiAgICAgIGJhc2VGaWx0ZXJzOiBbXSxcbiAgICAgIGFwcGx5TW9kZTogXCJhdXRvXCIsXG4gICAgICBsYXlvdXQ6IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgdHlwZTogXCJncm91cGJ5XCJcbiAgICB9LCBpbml0aWFsU3RhdGUpLCB7XG4gICAgICBub1ZhbHVlT25DbGVhcjogdHJ1ZVxuICAgIH0pKTtcbiAgICB0aGlzLmlzTGF6eSA9IHRydWU7XG4gICAgdGhpcy5fdXJsU3luYyA9IG5ldyBHcm91cEJ5VmFyaWFibGVVcmxTeW5jSGFuZGxlcih0aGlzKTtcbiAgICB0aGlzLl9nZXRLZXlzID0gYXN5bmMgKGRzKSA9PiB7XG4gICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgIGNvbnN0IG92ZXJyaWRlID0gYXdhaXQgKChfYiA9IChfYSA9IHRoaXMuc3RhdGUpLmdldFRhZ0tleXNQcm92aWRlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EsIHRoaXMsIG51bGwpKTtcbiAgICAgIGlmIChvdmVycmlkZSAmJiBvdmVycmlkZS5yZXBsYWNlKSB7XG4gICAgICAgIHJldHVybiBvdmVycmlkZS52YWx1ZXM7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0T3B0aW9ucykge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZS5kZWZhdWx0T3B0aW9ucy5jb25jYXQoZGF0YUZyb21SZXNwb25zZSgoX2MgPSBvdmVycmlkZSA9PSBudWxsID8gdm9pZCAwIDogb3ZlcnJpZGUudmFsdWVzKSAhPSBudWxsID8gX2MgOiBbXSkpO1xuICAgICAgfVxuICAgICAgaWYgKCFkcy5nZXRUYWdLZXlzKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHF1ZXJpZXMgPSBnZXRRdWVyaWVzRm9yVmFyaWFibGVzKHRoaXMpO1xuICAgICAgY29uc3Qgb3RoZXJGaWx0ZXJzID0gdGhpcy5zdGF0ZS5iYXNlRmlsdGVycyB8fCBbXTtcbiAgICAgIGNvbnN0IHRpbWVSYW5nZSA9IHNjZW5lR3JhcGguZ2V0VGltZVJhbmdlKHRoaXMpLnN0YXRlLnZhbHVlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBkcy5nZXRUYWdLZXlzKF9fc3ByZWFkVmFsdWVzKHtcbiAgICAgICAgZmlsdGVyczogb3RoZXJGaWx0ZXJzLFxuICAgICAgICBxdWVyaWVzLFxuICAgICAgICB0aW1lUmFuZ2VcbiAgICAgIH0sIGdldEVucmljaGVkRmlsdGVyc1JlcXVlc3QodGhpcykpKTtcbiAgICAgIGlmIChyZXNwb25zZUhhc0Vycm9yKHJlc3BvbnNlKSkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IHJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICB9XG4gICAgICBsZXQga2V5cyA9IGRhdGFGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgaWYgKG92ZXJyaWRlKSB7XG4gICAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChkYXRhRnJvbVJlc3BvbnNlKG92ZXJyaWRlLnZhbHVlcykpO1xuICAgICAgfVxuICAgICAgY29uc3QgdGFnS2V5UmVnZXhGaWx0ZXIgPSB0aGlzLnN0YXRlLnRhZ0tleVJlZ2V4RmlsdGVyO1xuICAgICAgaWYgKHRhZ0tleVJlZ2V4RmlsdGVyKSB7XG4gICAgICAgIGtleXMgPSBrZXlzLmZpbHRlcigoZikgPT4gZi50ZXh0Lm1hdGNoKHRhZ0tleVJlZ2V4RmlsdGVyKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5cztcbiAgICB9O1xuICAgIHRoaXMuYWRkQWN0aXZhdGlvbkhhbmRsZXIoKCkgPT4ge1xuICAgICAgYWxsQWN0aXZlR3JvdXBCeVZhcmlhYmxlcy5hZGQodGhpcyk7XG4gICAgICByZXR1cm4gKCkgPT4gYWxsQWN0aXZlR3JvdXBCeVZhcmlhYmxlcy5kZWxldGUodGhpcyk7XG4gICAgfSk7XG4gIH1cbiAgdmFsaWRhdGVBbmRVcGRhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVPcHRpb25zKHt9KS5waXBlKFxuICAgICAgbWFwKChvcHRpb25zKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZVZhbHVlR2l2ZW5OZXdPcHRpb25zKG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgX3VwZGF0ZVZhbHVlR2l2ZW5OZXdPcHRpb25zKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IHZhbHVlOiBjdXJyZW50VmFsdWUsIHRleHQ6IGN1cnJlbnRUZXh0IH0gPSB0aGlzLnN0YXRlO1xuICAgIGNvbnN0IHN0YXRlVXBkYXRlID0ge1xuICAgICAgb3B0aW9ucyxcbiAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgdmFsdWU6IGN1cnJlbnRWYWx1ZSAhPSBudWxsID8gY3VycmVudFZhbHVlIDogW10sXG4gICAgICB0ZXh0OiBjdXJyZW50VGV4dCAhPSBudWxsID8gY3VycmVudFRleHQgOiBbXVxuICAgIH07XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZVVwZGF0ZSk7XG4gIH1cbiAgZ2V0VmFsdWVPcHRpb25zKGFyZ3MpIHtcbiAgICBpZiAodGhpcy5zdGF0ZS5kZWZhdWx0T3B0aW9ucykge1xuICAgICAgcmV0dXJuIG9mKFxuICAgICAgICB0aGlzLnN0YXRlLmRlZmF1bHRPcHRpb25zLm1hcCgobykgPT4gKHtcbiAgICAgICAgICBsYWJlbDogby50ZXh0LFxuICAgICAgICAgIHZhbHVlOiBTdHJpbmcoby52YWx1ZSksXG4gICAgICAgICAgZ3JvdXA6IG8uZ3JvdXBcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSwgZXJyb3I6IG51bGwgfSk7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICBnZXREYXRhU291cmNlKHRoaXMuc3RhdGUuZGF0YXNvdXJjZSwge1xuICAgICAgICBfX3NjZW5lT2JqZWN0OiB3cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QodGhpcylcbiAgICAgIH0pXG4gICAgKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRzKSA9PiB7XG4gICAgICAgIHJldHVybiBmcm9tKHRoaXMuX2dldEtleXMoZHMpKS5waXBlKFxuICAgICAgICAgIHRhcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZUhhc0Vycm9yKHJlc3BvbnNlKSkge1xuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZXJyb3I6IHJlc3BvbnNlLmVycm9yLm1lc3NhZ2UgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4gZGF0YUZyb21SZXNwb25zZShyZXNwb25zZSkpLFxuICAgICAgICAgIHRha2UoMSksXG4gICAgICAgICAgbWVyZ2VNYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGEgPSBkYXRhLm1hcCgoaSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxhYmVsOiBpLnRleHQsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGkudmFsdWUgPyBTdHJpbmcoaS52YWx1ZSkgOiBpLnRleHQsXG4gICAgICAgICAgICAgICAgZ3JvdXA6IGkuZ3JvdXBcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIG9mKGEpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgZ2V0RGVmYXVsdE11bHRpU3RhdGUob3B0aW9ucykge1xuICAgIHJldHVybiB7IHZhbHVlOiBbXSwgdGV4dDogW10gfTtcbiAgfVxufVxuR3JvdXBCeVZhcmlhYmxlLkNvbXBvbmVudCA9IEdyb3VwQnlWYXJpYWJsZVJlbmRlcmVyO1xuZnVuY3Rpb24gR3JvdXBCeVZhcmlhYmxlUmVuZGVyZXIoeyBtb2RlbCB9KSB7XG4gIGNvbnN0IHtcbiAgICB2YWx1ZSxcbiAgICB0ZXh0LFxuICAgIGtleSxcbiAgICBtYXhWaXNpYmxlVmFsdWVzLFxuICAgIG5vVmFsdWVPbkNsZWFyLFxuICAgIG9wdGlvbnMsXG4gICAgaW5jbHVkZUFsbCxcbiAgICBhbGxvd0N1c3RvbVZhbHVlID0gdHJ1ZVxuICB9ID0gbW9kZWwudXNlU3RhdGUoKTtcbiAgY29uc3QgdmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgYXJyYXlWYWx1ZSA9IGlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xuICAgIGNvbnN0IGFycmF5VGV4dCA9IGlzQXJyYXkodGV4dCkgPyB0ZXh0IDogW3RleHRdO1xuICAgIHJldHVybiBhcnJheVZhbHVlLm1hcCgodmFsdWUyLCBpZHgpID0+IHtcbiAgICAgIHZhciBfYTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiB2YWx1ZTIsXG4gICAgICAgIGxhYmVsOiBTdHJpbmcoKF9hID0gYXJyYXlUZXh0W2lkeF0pICE9IG51bGwgPyBfYSA6IHZhbHVlMilcbiAgICAgIH07XG4gICAgfSk7XG4gIH0sIFt2YWx1ZSwgdGV4dF0pO1xuICBjb25zdCBbaXNGZXRjaGluZ09wdGlvbnMsIHNldElzRmV0Y2hpbmdPcHRpb25zXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzT3B0aW9uc09wZW4sIHNldElzT3B0aW9uc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3VuY29tbWl0dGVkVmFsdWUsIHNldFVuY29tbWl0dGVkVmFsdWVdID0gdXNlU3RhdGUodmFsdWVzKTtcbiAgY29uc3Qgb3B0aW9uU2VhcmNoZXIgPSB1c2VNZW1vKCgpID0+IGdldE9wdGlvblNlYXJjaGVyKG9wdGlvbnMsIGluY2x1ZGVBbGwpLCBbb3B0aW9ucywgaW5jbHVkZUFsbF0pO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFVuY29tbWl0dGVkVmFsdWUodmFsdWVzKTtcbiAgfSwgW3ZhbHVlc10pO1xuICBjb25zdCBvbklucHV0Q2hhbmdlID0gKHZhbHVlMiwgeyBhY3Rpb24gfSkgPT4ge1xuICAgIGlmIChhY3Rpb24gPT09IFwiaW5wdXQtY2hhbmdlXCIpIHtcbiAgICAgIHNldElucHV0VmFsdWUodmFsdWUyKTtcbiAgICAgIGlmIChtb2RlbC5vblNlYXJjaENoYW5nZSkge1xuICAgICAgICBtb2RlbC5vblNlYXJjaENoYW5nZSh2YWx1ZTIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlMjtcbiAgICB9XG4gICAgaWYgKGFjdGlvbiA9PT0gXCJpbnB1dC1ibHVyXCIpIHtcbiAgICAgIHNldElucHV0VmFsdWUoXCJcIik7XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0VmFsdWU7XG4gIH07XG4gIGNvbnN0IGZpbHRlcmVkT3B0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gaGFuZGxlT3B0aW9uR3JvdXBzKG9wdGlvblNlYXJjaGVyKGlucHV0VmFsdWUpLm1hcCh0b1NlbGVjdGFibGVWYWx1ZSkpLFxuICAgIFtvcHRpb25TZWFyY2hlciwgaW5wdXRWYWx1ZV1cbiAgKTtcbiAgcmV0dXJuIC8qIEBfX1BVUkVfXyAqLyBSZWFjdC5jcmVhdGVFbGVtZW50KE11bHRpU2VsZWN0LCB7XG4gICAgXCJkYXRhLXRlc3RpZFwiOiBgR3JvdXBCeVNlbGVjdC0ke2tleX1gLFxuICAgIGlkOiBrZXksXG4gICAgcGxhY2Vob2xkZXI6IFwiU2VsZWN0IHZhbHVlXCIsXG4gICAgd2lkdGg6IFwiYXV0b1wiLFxuICAgIGFsbG93Q3VzdG9tVmFsdWUsXG4gICAgaW5wdXRWYWx1ZSxcbiAgICB2YWx1ZTogdW5jb21taXR0ZWRWYWx1ZSxcbiAgICBub011bHRpVmFsdWVXcmFwOiB0cnVlLFxuICAgIG1heFZpc2libGVWYWx1ZXM6IG1heFZpc2libGVWYWx1ZXMgIT0gbnVsbCA/IG1heFZpc2libGVWYWx1ZXMgOiA1LFxuICAgIHRhYlNlbGVjdHNWYWx1ZTogZmFsc2UsXG4gICAgdmlydHVhbGl6ZWQ6IHRydWUsXG4gICAgb3B0aW9uczogZmlsdGVyZWRPcHRpb25zLFxuICAgIGZpbHRlck9wdGlvbjogZmlsdGVyTm9PcCxcbiAgICBjbG9zZU1lbnVPblNlbGVjdDogZmFsc2UsXG4gICAgaXNPcGVuOiBpc09wdGlvbnNPcGVuLFxuICAgIGlzQ2xlYXJhYmxlOiB0cnVlLFxuICAgIGhpZGVTZWxlY3RlZE9wdGlvbnM6IGZhbHNlLFxuICAgIGlzTG9hZGluZzogaXNGZXRjaGluZ09wdGlvbnMsXG4gICAgY29tcG9uZW50czogeyBPcHRpb246IE9wdGlvbldpdGhDaGVja2JveCB9LFxuICAgIG9uSW5wdXRDaGFuZ2UsXG4gICAgb25CbHVyOiAoKSA9PiB7XG4gICAgICBtb2RlbC5jaGFuZ2VWYWx1ZVRvKFxuICAgICAgICB1bmNvbW1pdHRlZFZhbHVlLm1hcCgoeCkgPT4geC52YWx1ZSksXG4gICAgICAgIHVuY29tbWl0dGVkVmFsdWUubWFwKCh4KSA9PiB4LmxhYmVsKVxuICAgICAgKTtcbiAgICB9LFxuICAgIG9uQ2hhbmdlOiAobmV3VmFsdWUsIGFjdGlvbikgPT4ge1xuICAgICAgaWYgKGFjdGlvbi5hY3Rpb24gPT09IFwiY2xlYXJcIiAmJiBub1ZhbHVlT25DbGVhcikge1xuICAgICAgICBtb2RlbC5jaGFuZ2VWYWx1ZVRvKFtdKTtcbiAgICAgIH1cbiAgICAgIHNldFVuY29tbWl0dGVkVmFsdWUobmV3VmFsdWUpO1xuICAgIH0sXG4gICAgb25PcGVuTWVudTogYXN5bmMgKCkgPT4ge1xuICAgICAgc2V0SXNGZXRjaGluZ09wdGlvbnModHJ1ZSk7XG4gICAgICBhd2FpdCBsYXN0VmFsdWVGcm9tKG1vZGVsLnZhbGlkYXRlQW5kVXBkYXRlKCkpO1xuICAgICAgc2V0SXNGZXRjaGluZ09wdGlvbnMoZmFsc2UpO1xuICAgICAgc2V0SXNPcHRpb25zT3Blbih0cnVlKTtcbiAgICB9LFxuICAgIG9uQ2xvc2VNZW51OiAoKSA9PiB7XG4gICAgICBzZXRJc09wdGlvbnNPcGVuKGZhbHNlKTtcbiAgICB9XG4gIH0pO1xufVxuY29uc3QgZmlsdGVyTm9PcCA9ICgpID0+IHRydWU7XG5mdW5jdGlvbiB0b1NlbGVjdGFibGVWYWx1ZShpbnB1dCkge1xuICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZ3JvdXAgfSA9IGlucHV0O1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgbGFiZWwsXG4gICAgdmFsdWVcbiAgfTtcbiAgaWYgKGdyb3VwKSB7XG4gICAgcmVzdWx0Lmdyb3VwID0gZ3JvdXA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IHsgR3JvdXBCeVZhcmlhYmxlLCBHcm91cEJ5VmFyaWFibGVSZW5kZXJlciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lSM0p2ZFhCQ2VWWmhjbWxoWW14bExtcHpJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTh1TGk4dUxpOXpjbU12ZG1GeWFXRmliR1Z6TDJkeWIzVndZbmt2UjNKdmRYQkNlVlpoY21saFlteGxMblJ6ZUNKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1VtVmhZM1FzSUhzZ2RYTmxSV1ptWldOMExDQjFjMlZOWlcxdkxDQjFjMlZUZEdGMFpTQjlJR1p5YjIwZ0ozSmxZV04wSnp0Y2JtbHRjRzl5ZENCN0lFRmtTRzlqVm1GeWFXRmliR1ZHYVd4MFpYSXNJRVJoZEdGVGIzVnlZMlZCY0drc0lFZGxkRlJoWjFKbGMzQnZibk5sTENCTlpYUnlhV05HYVc1a1ZtRnNkV1VzSUZObGJHVmpkR0ZpYkdWV1lXeDFaU0I5SUdaeWIyMGdKMEJuY21GbVlXNWhMMlJoZEdFbk8xeHVhVzF3YjNKMElIc2dZV3hzUVdOMGFYWmxSM0p2ZFhCQ2VWWmhjbWxoWW14bGN5QjlJR1p5YjIwZ0p5NHZabWx1WkVGamRHbDJaVWR5YjNWd1FubFdZWEpwWVdKc1pYTkNlVlZwWkNjN1hHNXBiWEJ2Y25RZ2V5QkVZWFJoVTI5MWNtTmxVbVZtTENCV1lYSnBZV0pzWlZSNWNHVWdmU0JtY205dElDZEFaM0poWm1GdVlTOXpZMmhsYldFbk8xeHVhVzF3YjNKMElIc2dVMk5sYm1WRGIyMXdiMjVsYm5SUWNtOXdjeXdnUTI5dWRISnZiSE5NWVhsdmRYUXNJRk5qWlc1bFQySnFaV04wVlhKc1UzbHVZMGhoYm1Sc1pYSWdmU0JtY205dElDY3VMaTh1TGk5amIzSmxMM1I1Y0dWekp6dGNibWx0Y0c5eWRDQjdJSE5qWlc1bFIzSmhjR2dnZlNCbWNtOXRJQ2N1TGk4dUxpOWpiM0psTDNOalpXNWxSM0poY0dnbk8xeHVhVzF3YjNKMElIc2dWbUZzYVdSaGRHVkJibVJWY0dSaGRHVlNaWE4xYkhRc0lGWmhjbWxoWW14bFZtRnNkV1ZQY0hScGIyNHNJRlpoY21saFlteGxWbUZzZFdWVGFXNW5iR1VnZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1cGJYQnZjblFnZXlCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdVc0lFMTFiSFJwVm1Gc2RXVldZWEpwWVdKc1pWTjBZWFJsTENCV1lYSnBZV0pzWlVkbGRFOXdkR2x2Ym5OQmNtZHpJSDBnWm5KdmJTQW5MaTR2ZG1GeWFXRnVkSE12VFhWc2RHbFdZV3gxWlZaaGNtbGhZbXhsSnp0Y2JtbHRjRzl5ZENCN0lHWnliMjBzSUd4aGMzUldZV3gxWlVaeWIyMHNJRzFoY0N3Z2JXVnlaMlZOWVhBc0lFOWljMlZ5ZG1GaWJHVXNJRzltTENCMFlXdGxMQ0IwWVhBZ2ZTQm1jbTl0SUNkeWVHcHpKenRjYm1sdGNHOXlkQ0I3SUdkbGRFUmhkR0ZUYjNWeVkyVWdmU0JtY205dElDY3VMaTh1TGk5MWRHbHNjeTluWlhSRVlYUmhVMjkxY21ObEp6dGNibWx0Y0c5eWRDQjdJRWx1Y0hWMFFXTjBhVzl1VFdWMFlTd2dUWFZzZEdsVFpXeGxZM1FnZlNCbWNtOXRJQ2RBWjNKaFptRnVZUzkxYVNjN1hHNXBiWEJ2Y25RZ2V5QnBjMEZ5Y21GNUlIMGdabkp2YlNBbmJHOWtZWE5vSnp0Y2JtbHRjRzl5ZENCN0lHUmhkR0ZHY205dFVtVnpjRzl1YzJVc0lHZGxkRkYxWlhKcFpYTkdiM0pXWVhKcFlXSnNaWE1zSUdoaGJtUnNaVTl3ZEdsdmJrZHliM1Z3Y3l3Z2NtVnpjRzl1YzJWSVlYTkZjbkp2Y2lCOUlHWnliMjBnSnk0dUwzVjBhV3h6Snp0Y2JtbHRjRzl5ZENCN0lFOXdkR2x2YmxkcGRHaERhR1ZqYTJKdmVDQjlJR1p5YjIwZ0p5NHVMMk52YlhCdmJtVnVkSE12Vm1GeWFXRmliR1ZXWVd4MVpWTmxiR1ZqZENjN1hHNXBiWEJ2Y25RZ2V5QkhjbTkxY0VKNVZtRnlhV0ZpYkdWVmNteFRlVzVqU0dGdVpHeGxjaUI5SUdaeWIyMGdKeTR2UjNKdmRYQkNlVlpoY21saFlteGxWWEpzVTNsdVkwaGhibVJzWlhJbk8xeHVhVzF3YjNKMElIc2daMlYwVDNCMGFXOXVVMlZoY21Ob1pYSWdmU0JtY205dElDY3VMaTlqYjIxd2IyNWxiblJ6TDJkbGRFOXdkR2x2YmxObFlYSmphR1Z5Snp0Y2JtbHRjRzl5ZENCN0lHZGxkRVZ1Y21samFHVmtSbWxzZEdWeWMxSmxjWFZsYzNRZ2ZTQm1jbTl0SUNjdUxpOW5aWFJGYm5KcFkyaGxaRVpwYkhSbGNuTlNaWEYxWlhOMEp6dGNibWx0Y0c5eWRDQjdJSGR5WVhCSmJsTmhabVZUWlhKcFlXeHBlbUZpYkdWVFkyVnVaVTlpYW1WamRDQjlJR1p5YjIwZ0p5NHVMeTR1TDNWMGFXeHpMM2R5WVhCSmJsTmhabVZUWlhKcFlXeHBlbUZpYkdWVFkyVnVaVTlpYW1WamRDYzdYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnUjNKdmRYQkNlVlpoY21saFlteGxVM1JoZEdVZ1pYaDBaVzVrY3lCTmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdWVGRHRjBaU0I3WEc0Z0lDOHFLaUJFWldaaGRXeDBjeUIwYnlCY0lrZHliM1Z3WENJZ0tpOWNiaUFnYm1GdFpUb2djM1J5YVc1bk8xeHVJQ0F2S2lvZ1ZHaGxJSFpwYzJsaWJHVWdhMlY1Y3lCMGJ5Qm5jbTkxY0NCdmJpQXFMMXh1SUNBdkx5QlVUMFJQSUhKbGRtbGxkeUIwYUdseklIUjVjR1VnWVc1a0lHNWhiV1VnS0c1aGJXbHVaeUJwY3lCb1lYSmtLVnh1SUNCa1pXWmhkV3gwVDNCMGFXOXVjejg2SUUxbGRISnBZMFpwYm1SV1lXeDFaVnRkTzF4dUlDQXZLaW9nUW1GelpTQm1hV3gwWlhKeklIUnZJR0ZzZDJGNWN5QmhjSEJzZVNCM2FHVnVJR3h2YjJ0cGJtY2dkWEFnYTJWNWN5QXFMMXh1SUNCaVlYTmxSbWxzZEdWeWN6ODZJRUZrU0c5alZtRnlhV0ZpYkdWR2FXeDBaWEpiWFR0Y2JpQWdMeW9xSUVSaGRHRnpiM1Z5WTJVZ2RHOGdkWE5sSUdadmNpQm5aWFJVWVdkTFpYbHpJR0Z1WkNCaGJITnZJR052Ym5SeWIyeHpJSGRvYVdOb0lITmpaVzVsSUhGMVpYSnBaWE1nZEdobElHZHliM1Z3SUdKNUlITm9iM1ZzWkNCaGNIQnNlU0IwYnlBcUwxeHVJQ0JrWVhSaGMyOTFjbU5sT2lCRVlYUmhVMjkxY21ObFVtVm1JSHdnYm5Wc2JEdGNiaUFnTHlvcUlFTnZiblJ5YjJ4eklHbG1JSFJvWlNCbmNtOTFjQ0JpZVNCallXNGdZbVVnWTJoaGJtZGxaQ0FxTDF4dUlDQnlaV0ZrVDI1c2VUODZJR0p2YjJ4bFlXNDdYRzRnSUM4cUtseHVJQ0FnS2lCQVpYaHdaWEpwYldWdWRHRnNYRzRnSUNBcUlFTnZiblJ5YjJ4eklIUm9aU0JzWVhsdmRYUWdZVzVrSUdSbGMybG5iaUJ2WmlCMGFHVWdiR0ZpWld3dVhHNGdJQ0FxSUZabGNuUnBZMkZzSUd4aGVXOTFkQ0JrYjJWeklHNXZkQ0I1WlhRZ2MzVndjRzl5ZENCdmNHVnlZWFJ2Y2lCelpXeGxZM1J2Y2k1Y2JpQWdJQ292WEc0Z0lHeGhlVzkxZEQ4NklFTnZiblJ5YjJ4elRHRjViM1YwTzF4dUlDQXZLaXBjYmlBZ0lDb2dSR1ZtWVhWc2RITWdkRzhnYzJGdFpTMWtZWFJoYzI5MWNtTmxJSGRvYVdOb0lHMWxZVzV6SUdkeWIzVndJR0o1SUhkcGJHd2dZWFYwYjIxaGRHbGpZV3hzZVNCaVpTQmhjSEJzYVdWa0lIUnZJR0ZzYkNCeGRXVnlhV1Z6SUhkcGRHZ2dkR2hsSUhOaGJXVWdaR0YwWVNCemIzVnlZMlVnWVhNZ2RHaHBjeUJIY205MWNFSjVVMlYwTGx4dUlDQWdLaUJKYmlCdFlXNTFZV3dnYlc5a1pTQnVieUJ4ZFdWeWFXVnpJR0Z5WlNCeVpTMXlkVzRnYjI0Z1kyaGhibWRsY3l3Z1lXNWtJSGx2ZFNCb1lYWmxJSFJ2SUcxaGJuVmhiR3g1SUdGd2NHeDVJSFJvWlNCbWFXeDBaWElnZEc4Z2QyaGhkR1YyWlhJZ2NYVmxjbWxsY3lCNWIzVWdkMkZ1ZEM1Y2JpQWdJQ292WEc0Z0lHRndjR3g1VFc5a1pUODZJQ2RoZFhSdkp5QjhJQ2R0WVc1MVlXd25PMXh1SUNBdktpcGNiaUFnSUNvZ1JtbHNkR1Z5SUc5MWRDQjBhR1VnYTJWNWN5QjBhR0YwSUdSdklHNXZkQ0J0WVhSamFDQjBhR1VnY21WblpYZ3VYRzRnSUNBcUwxeHVJQ0IwWVdkTFpYbFNaV2RsZUVacGJIUmxjajg2SUZKbFowVjRjRHRjYmlBZ0x5b3FYRzRnSUNBcUlFVjRkR1Z1YzJsdmJpQm9iMjlySUdadmNpQmpkWE4wYjIxcGVtbHVaeUIwYUdVZ2EyVjVJR3h2YjJ0MWNDNWNiaUFnSUNvZ1VtVjBkWEp1SUhKbGNHeGhZMlU2SUhSeWRXVWdhV1lnZVc5MUlIZGhiblFnZEc4Z2IzWmxjbkpwWkdVZ2RHaGxJR1JsWm1GMWJIUWdiRzl2YTNWd1hHNGdJQ0FxSUZKbGRIVnliaUJ5WlhCc1lXTmxPaUJtWVd4elpTQnBaaUI1YjNVZ2QyRnVkQ0IwYnlCamIyMWlhVzVsSUhSb1pTQnlaWE4xYkhSeklIZHBkR2dnZEdobElHUmxabUYxYkhRZ2JHOXZhM1Z3WEc0Z0lDQXFMMXh1SUNCblpYUlVZV2RMWlhselVISnZkbWxrWlhJL09pQm5aWFJVWVdkTFpYbHpVSEp2ZG1sa1pYSTdYRzU5WEc1Y2JtVjRjRzl5ZENCMGVYQmxJR2RsZEZSaFowdGxlWE5RY205MmFXUmxjaUE5SUNoY2JpQWdjMlYwT2lCSGNtOTFjRUo1Vm1GeWFXRmliR1VzWEc0Z0lHTjFjbkpsYm5STFpYazZJSE4wY21sdVp5QjhJRzUxYkd4Y2Jpa2dQVDRnVUhKdmJXbHpaVHg3SUhKbGNHeGhZMlUvT2lCaWIyOXNaV0Z1T3lCMllXeDFaWE02SUUxbGRISnBZMFpwYm1SV1lXeDFaVnRkSUh3Z1IyVjBWR0ZuVW1WemNHOXVjMlVnZlQ0N1hHNWNibVY0Y0c5eWRDQmpiR0Z6Y3lCSGNtOTFjRUo1Vm1GeWFXRmliR1VnWlhoMFpXNWtjeUJOZFd4MGFWWmhiSFZsVm1GeWFXRmliR1U4UjNKdmRYQkNlVlpoY21saFlteGxVM1JoZEdVK0lIdGNiaUFnYzNSaGRHbGpJRU52YlhCdmJtVnVkQ0E5SUVkeWIzVndRbmxXWVhKcFlXSnNaVkpsYm1SbGNtVnlPMXh1SUNCcGMweGhlbmtnUFNCMGNuVmxPMXh1WEc0Z0lIQnliM1JsWTNSbFpDQmZkWEpzVTNsdVl6b2dVMk5sYm1WUFltcGxZM1JWY214VGVXNWpTR0Z1Wkd4bGNpQTlJRzVsZHlCSGNtOTFjRUo1Vm1GeWFXRmliR1ZWY214VGVXNWpTR0Z1Wkd4bGNpaDBhR2x6S1R0Y2JseHVJQ0J3ZFdKc2FXTWdkbUZzYVdSaGRHVkJibVJWY0dSaGRHVW9LVG9nVDJKelpYSjJZV0pzWlR4V1lXeHBaR0YwWlVGdVpGVndaR0YwWlZKbGMzVnNkRDRnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1kbGRGWmhiSFZsVDNCMGFXOXVjeWg3ZlNrdWNHbHdaU2hjYmlBZ0lDQWdJRzFoY0Nnb2IzQjBhVzl1Y3lrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOTFjR1JoZEdWV1lXeDFaVWRwZG1WdVRtVjNUM0IwYVc5dWN5aHZjSFJwYjI1ektUdGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlIdDlPMXh1SUNBZ0lDQWdmU2xjYmlBZ0lDQXBPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0JmZFhCa1lYUmxWbUZzZFdWSGFYWmxiazVsZDA5d2RHbHZibk1vYjNCMGFXOXVjem9nVm1GeWFXRmliR1ZXWVd4MVpVOXdkR2x2Ymx0ZEtTQjdYRzRnSUNBZ1kyOXVjM1FnZXlCMllXeDFaVG9nWTNWeWNtVnVkRlpoYkhWbExDQjBaWGgwT2lCamRYSnlaVzUwVkdWNGRDQjlJRDBnZEdocGN5NXpkR0YwWlR0Y2JseHVJQ0FnSUdOdmJuTjBJSE4wWVhSbFZYQmtZWFJsT2lCUVlYSjBhV0ZzUEUxMWJIUnBWbUZzZFdWV1lYSnBZV0pzWlZOMFlYUmxQaUE5SUh0Y2JpQWdJQ0FnSUc5d2RHbHZibk1zWEc0Z0lDQWdJQ0JzYjJGa2FXNW5PaUJtWVd4elpTeGNiaUFnSUNBZ0lIWmhiSFZsT2lCamRYSnlaVzUwVm1Gc2RXVWdQejhnVzEwc1hHNGdJQ0FnSUNCMFpYaDBPaUJqZFhKeVpXNTBWR1Y0ZENBL1B5QmJYU3hjYmlBZ0lDQjlPMXh1WEc0Z0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoemRHRjBaVlZ3WkdGMFpTazdYRzRnSUgxY2JseHVJQ0J3ZFdKc2FXTWdaMlYwVm1Gc2RXVlBjSFJwYjI1ektHRnlaM002SUZaaGNtbGhZbXhsUjJWMFQzQjBhVzl1YzBGeVozTXBPaUJQWW5ObGNuWmhZbXhsUEZaaGNtbGhZbXhsVm1Gc2RXVlBjSFJwYjI1YlhUNGdlMXh1SUNBZ0lDOHZJRmRvWlc0Z1pHVm1ZWFZzZENCa2FXMWxibk5wYjI1eklHRnlaU0J3Y205MmFXUmxaQ3dnY21WMGRYSnVJSFJvWlNCemRHRjBhV01nYkdsemRGeHVJQ0FnSUdsbUlDaDBhR2x6TG5OMFlYUmxMbVJsWm1GMWJIUlBjSFJwYjI1ektTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2IyWW9YRzRnSUNBZ0lDQWdJSFJvYVhNdWMzUmhkR1V1WkdWbVlYVnNkRTl3ZEdsdmJuTXViV0Z3S0NodktTQTlQaUFvZTF4dUlDQWdJQ0FnSUNBZ0lHeGhZbVZzT2lCdkxuUmxlSFFzWEc0Z0lDQWdJQ0FnSUNBZ2RtRnNkV1U2SUZOMGNtbHVaeWh2TG5aaGJIVmxLU3hjYmlBZ0lDQWdJQ0FnSUNCbmNtOTFjRG9nYnk1bmNtOTFjQ3hjYmlBZ0lDQWdJQ0FnZlNrcFhHNGdJQ0FnSUNBcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMlYwVTNSaGRHVW9leUJzYjJGa2FXNW5PaUIwY25WbExDQmxjbkp2Y2pvZ2JuVnNiQ0I5S1R0Y2JseHVJQ0FnSUhKbGRIVnliaUJtY205dEtGeHVJQ0FnSUNBZ1oyVjBSR0YwWVZOdmRYSmpaU2gwYUdsekxuTjBZWFJsTG1SaGRHRnpiM1Z5WTJVc0lIdGNiaUFnSUNBZ0lDQWdYMTl6WTJWdVpVOWlhbVZqZERvZ2QzSmhjRWx1VTJGbVpWTmxjbWxoYkdsNllXSnNaVk5qWlc1bFQySnFaV04wS0hSb2FYTXBMRnh1SUNBZ0lDQWdmU2xjYmlBZ0lDQXBMbkJwY0dVb1hHNGdJQ0FnSUNCdFpYSm5aVTFoY0Nnb1pITXBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaeWIyMG9kR2hwY3k1ZloyVjBTMlY1Y3loa2N5a3BMbkJwY0dVb1hHNGdJQ0FnSUNBZ0lDQWdkR0Z3S0NoeVpYTndiMjV6WlNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSEpsYzNCdmJuTmxTR0Z6UlhKeWIzSW9jbVZ6Y0c5dWMyVXBLU0I3WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJSFJvYVhNdWMyVjBVM1JoZEdVb2V5Qmxjbkp2Y2pvZ2NtVnpjRzl1YzJVdVpYSnliM0l1YldWemMyRm5aU0I5S1R0Y2JpQWdJQ0FnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJQ0FnSUNCOUtTeGNiaUFnSUNBZ0lDQWdJQ0J0WVhBb0tISmxjM0J2Ym5ObEtTQTlQaUJrWVhSaFJuSnZiVkpsYzNCdmJuTmxLSEpsYzNCdmJuTmxLU2tzWEc0Z0lDQWdJQ0FnSUNBZ2RHRnJaU2d4S1N4Y2JpQWdJQ0FnSUNBZ0lDQnRaWEpuWlUxaGNDZ29aR0YwWVNrZ1BUNGdlMXh1SUNBZ0lDQWdJQ0FnSUNBZ1kyOXVjM1FnWVRvZ1ZtRnlhV0ZpYkdWV1lXeDFaVTl3ZEdsdmJsdGRJRDBnWkdGMFlTNXRZWEFvS0drcElEMCtJSHRjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlIdGNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnNZV0psYkRvZ2FTNTBaWGgwTEZ4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhaaGJIVmxPaUJwTG5aaGJIVmxJRDhnVTNSeWFXNW5LR2t1ZG1Gc2RXVXBJRG9nYVM1MFpYaDBMRnh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR2R5YjNWd09pQnBMbWR5YjNWd0xGeHVJQ0FnSUNBZ0lDQWdJQ0FnSUNCOU8xeHVJQ0FnSUNBZ0lDQWdJQ0FnZlNrN1hHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdiMllvWVNrN1hHNGdJQ0FnSUNBZ0lDQWdmU2xjYmlBZ0lDQWdJQ0FnS1R0Y2JpQWdJQ0FnSUgwcFhHNGdJQ0FnS1R0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHBibWwwYVdGc1UzUmhkR1U2SUZCaGNuUnBZV3c4UjNKdmRYQkNlVlpoY21saFlteGxVM1JoZEdVK0tTQjdYRzRnSUNBZ2MzVndaWElvZTF4dUlDQWdJQ0FnYVhOTmRXeDBhVG9nZEhKMVpTeGNiaUFnSUNBZ0lHNWhiV1U2SUNjbkxGeHVJQ0FnSUNBZ2RtRnNkV1U2SUZ0ZExGeHVJQ0FnSUNBZ2RHVjRkRG9nVzEwc1hHNGdJQ0FnSUNCdmNIUnBiMjV6T2lCYlhTeGNiaUFnSUNBZ0lHUmhkR0Z6YjNWeVkyVTZJRzUxYkd3c1hHNGdJQ0FnSUNCaVlYTmxSbWxzZEdWeWN6b2dXMTBzWEc0Z0lDQWdJQ0JoY0hCc2VVMXZaR1U2SUNkaGRYUnZKeXhjYmlBZ0lDQWdJR3hoZVc5MWREb2dKMmh2Y21sNmIyNTBZV3duTEZ4dUlDQWdJQ0FnZEhsd1pUb2dKMmR5YjNWd1lua25JR0Z6SUZaaGNtbGhZbXhsVkhsd1pTeGNiaUFnSUNBZ0lDNHVMbWx1YVhScFlXeFRkR0YwWlN4Y2JpQWdJQ0FnSUc1dlZtRnNkV1ZQYmtOc1pXRnlPaUIwY25WbExGeHVJQ0FnSUgwcE8xeHVYRzRnSUNBZ2RHaHBjeTVoWkdSQlkzUnBkbUYwYVc5dVNHRnVaR3hsY2lnb0tTQTlQaUI3WEc0Z0lDQWdJQ0JoYkd4QlkzUnBkbVZIY205MWNFSjVWbUZ5YVdGaWJHVnpMbUZrWkNoMGFHbHpLVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJQ2dwSUQwK0lHRnNiRUZqZEdsMlpVZHliM1Z3UW5sV1lYSnBZV0pzWlhNdVpHVnNaWFJsS0hSb2FYTXBPMXh1SUNBZ0lIMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVkbGRDQndiM056YVdKc1pTQnJaWGx6SUdkcGRtVnVJR04xY25KbGJuUWdabWxzZEdWeWN5NGdSRzhnYm05MElHTmhiR3dnWm5KdmJTQndiSFZuYVc1eklHUnBjbVZqZEd4NVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ1gyZGxkRXRsZVhNZ1BTQmhjM2x1WXlBb1pITTZJRVJoZEdGVGIzVnlZMlZCY0drcElEMCtJSHRjYmlBZ0lDQXZMeUJVVDBSUE9pQWdjSEp2ZG1sa1pTQmpkWEp5Wlc1MElHUnBiV1Z1YzJsdmJuTS9YRzRnSUNBZ1kyOXVjM1FnYjNabGNuSnBaR1VnUFNCaGQyRnBkQ0IwYUdsekxuTjBZWFJsTG1kbGRGUmhaMHRsZVhOUWNtOTJhV1JsY2o4dUtIUm9hWE1zSUc1MWJHd3BPMXh1WEc0Z0lDQWdhV1lnS0c5MlpYSnlhV1JsSUNZbUlHOTJaWEp5YVdSbExuSmxjR3hoWTJVcElIdGNiaUFnSUNBZ0lISmxkSFZ5YmlCdmRtVnljbWxrWlM1MllXeDFaWE03WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hSb2FYTXVjM1JoZEdVdVpHVm1ZWFZzZEU5d2RHbHZibk1wSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxuTjBZWFJsTG1SbFptRjFiSFJQY0hScGIyNXpMbU52Ym1OaGRDaGtZWFJoUm5KdmJWSmxjM0J2Ym5ObEtHOTJaWEp5YVdSbFB5NTJZV3gxWlhNZ1B6OGdXMTBwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lXUnpMbWRsZEZSaFowdGxlWE1wSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJiWFR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQnhkV1Z5YVdWeklEMGdaMlYwVVhWbGNtbGxjMFp2Y2xaaGNtbGhZbXhsY3loMGFHbHpLVHRjYmx4dUlDQWdJR052Ym5OMElHOTBhR1Z5Um1sc2RHVnljeUE5SUhSb2FYTXVjM1JoZEdVdVltRnpaVVpwYkhSbGNuTWdmSHdnVzEwN1hHNGdJQ0FnWTI5dWMzUWdkR2x0WlZKaGJtZGxJRDBnYzJObGJtVkhjbUZ3YUM1blpYUlVhVzFsVW1GdVoyVW9kR2hwY3lrdWMzUmhkR1V1ZG1Gc2RXVTdYRzRnSUNBZ1kyOXVjM1FnY21WemNHOXVjMlVnUFNCaGQyRnBkQ0JrY3k1blpYUlVZV2RMWlhsektIdGNiaUFnSUNBZ0lHWnBiSFJsY25NNklHOTBhR1Z5Um1sc2RHVnljeXhjYmlBZ0lDQWdJSEYxWlhKcFpYTXNYRzRnSUNBZ0lDQjBhVzFsVW1GdVoyVXNYRzRnSUNBZ0lDQXVMaTVuWlhSRmJuSnBZMmhsWkVacGJIUmxjbk5TWlhGMVpYTjBLSFJvYVhNcExGeHVJQ0FnSUgwcE8xeHVJQ0FnSUdsbUlDaHlaWE53YjI1elpVaGhjMFZ5Y205eUtISmxjM0J2Ym5ObEtTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1elpYUlRkR0YwWlNoN0lHVnljbTl5T2lCeVpYTndiMjV6WlM1bGNuSnZjaTV0WlhOellXZGxJSDBwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR3hsZENCclpYbHpJRDBnWkdGMFlVWnliMjFTWlhOd2IyNXpaU2h5WlhOd2IyNXpaU2s3WEc0Z0lDQWdhV1lnS0c5MlpYSnlhV1JsS1NCN1hHNGdJQ0FnSUNCclpYbHpJRDBnYTJWNWN5NWpiMjVqWVhRb1pHRjBZVVp5YjIxU1pYTndiMjV6WlNodmRtVnljbWxrWlM1MllXeDFaWE1wS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JqYjI1emRDQjBZV2RMWlhsU1pXZGxlRVpwYkhSbGNpQTlJSFJvYVhNdWMzUmhkR1V1ZEdGblMyVjVVbVZuWlhoR2FXeDBaWEk3WEc0Z0lDQWdhV1lnS0hSaFowdGxlVkpsWjJWNFJtbHNkR1Z5S1NCN1hHNGdJQ0FnSUNCclpYbHpJRDBnYTJWNWN5NW1hV3gwWlhJb0tHWXBJRDArSUdZdWRHVjRkQzV0WVhSamFDaDBZV2RMWlhsU1pXZGxlRVpwYkhSbGNpa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCclpYbHpPMXh1SUNCOU8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCQmJHeHZkM01nWTJ4bFlYSnBibWNnZEdobElIWmhiSFZsSUc5bUlIUm9aU0IyWVhKcFlXSnNaU0IwYnlCaGJpQmxiWEIwZVNCMllXeDFaUzRnVDNabGNuSnBaR1Z6SUdSbFptRjFiSFFnWW1Wb1lYWnBiM0lnYjJZZ1lTQk5kV3gwYVZaaGJIVmxWbUZ5YVdGaWJHVmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJFWldaaGRXeDBUWFZzZEdsVGRHRjBaU2h2Y0hScGIyNXpPaUJXWVhKcFlXSnNaVlpoYkhWbFQzQjBhVzl1VzEwcE9pQjdJSFpoYkhWbE9pQldZWEpwWVdKc1pWWmhiSFZsVTJsdVoyeGxXMTA3SUhSbGVIUTZJSE4wY21sdVoxdGRJSDBnZTF4dUlDQWdJSEpsZEhWeWJpQjdJSFpoYkhWbE9pQmJYU3dnZEdWNGREb2dXMTBnZlR0Y2JpQWdmVnh1ZlZ4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUVkeWIzVndRbmxXWVhKcFlXSnNaVkpsYm1SbGNtVnlLSHNnYlc5a1pXd2dmVG9nVTJObGJtVkRiMjF3YjI1bGJuUlFjbTl3Y3p4TmRXeDBhVlpoYkhWbFZtRnlhV0ZpYkdVK0tTQjdYRzRnSUdOdmJuTjBJSHRjYmlBZ0lDQjJZV3gxWlN4Y2JpQWdJQ0IwWlhoMExGeHVJQ0FnSUd0bGVTeGNiaUFnSUNCdFlYaFdhWE5wWW14bFZtRnNkV1Z6TEZ4dUlDQWdJRzV2Vm1Gc2RXVlBia05zWldGeUxGeHVJQ0FnSUc5d2RHbHZibk1zWEc0Z0lDQWdhVzVqYkhWa1pVRnNiQ3hjYmlBZ0lDQmhiR3h2ZDBOMWMzUnZiVlpoYkhWbElEMGdkSEoxWlN4Y2JpQWdmU0E5SUcxdlpHVnNMblZ6WlZOMFlYUmxLQ2s3WEc1Y2JpQWdZMjl1YzNRZ2RtRnNkV1Z6SUQwZ2RYTmxUV1Z0Ynp4QmNuSmhlVHhUWld4bFkzUmhZbXhsVm1Gc2RXVThWbUZ5YVdGaWJHVldZV3gxWlZOcGJtZHNaVDQrUGlnb0tTQTlQaUI3WEc0Z0lDQWdZMjl1YzNRZ1lYSnlZWGxXWVd4MVpTQTlJR2x6UVhKeVlYa29kbUZzZFdVcElEOGdkbUZzZFdVZ09pQmJkbUZzZFdWZE8xeHVJQ0FnSUdOdmJuTjBJR0Z5Y21GNVZHVjRkQ0E5SUdselFYSnlZWGtvZEdWNGRDa2dQeUIwWlhoMElEb2dXM1JsZUhSZE8xeHVYRzRnSUNBZ2NtVjBkWEp1SUdGeWNtRjVWbUZzZFdVdWJXRndLQ2gyWVd4MVpTd2dhV1I0S1NBOVBpQW9lMXh1SUNBZ0lDQWdkbUZzZFdVc1hHNGdJQ0FnSUNCc1lXSmxiRG9nVTNSeWFXNW5LR0Z5Y21GNVZHVjRkRnRwWkhoZElEOC9JSFpoYkhWbEtTeGNiaUFnSUNCOUtTazdYRzRnSUgwc0lGdDJZV3gxWlN3Z2RHVjRkRjBwTzF4dVhHNGdJR052Ym5OMElGdHBjMFpsZEdOb2FXNW5UM0IwYVc5dWN5d2djMlYwU1hOR1pYUmphR2x1WjA5d2RHbHZibk5kSUQwZ2RYTmxVM1JoZEdVb1ptRnNjMlVwTzF4dUlDQmpiMjV6ZENCYmFYTlBjSFJwYjI1elQzQmxiaXdnYzJWMFNYTlBjSFJwYjI1elQzQmxibDBnUFNCMWMyVlRkR0YwWlNobVlXeHpaU2s3WEc0Z0lHTnZibk4wSUZ0cGJuQjFkRlpoYkhWbExDQnpaWFJKYm5CMWRGWmhiSFZsWFNBOUlIVnpaVk4wWVhSbEtDY25LVHRjYmx4dUlDQXZMeUJVYnlCdWIzUWdkSEpwWjJkbGNpQnhkV1Z5YVdWeklHOXVJR1YyWlhKNUlITmxiR1ZqZEdsdmJpQjNaU0J6ZEc5eVpTQjBhR2x6SUhOMFlYUmxJR3h2WTJGc2JIa2dhR1Z5WlNCaGJtUWdiMjVzZVNCMWNHUmhkR1VnZEdobElIWmhjbWxoWW14bElHOXVRbXgxY2x4dUlDQmpiMjV6ZENCYmRXNWpiMjF0YVhSMFpXUldZV3gxWlN3Z2MyVjBWVzVqYjIxdGFYUjBaV1JXWVd4MVpWMGdQU0IxYzJWVGRHRjBaU2gyWVd4MVpYTXBPMXh1WEc0Z0lHTnZibk4wSUc5d2RHbHZibE5sWVhKamFHVnlJRDBnZFhObFRXVnRieWdvS1NBOVBpQm5aWFJQY0hScGIyNVRaV0Z5WTJobGNpaHZjSFJwYjI1ekxDQnBibU5zZFdSbFFXeHNLU3dnVzI5d2RHbHZibk1zSUdsdVkyeDFaR1ZCYkd4ZEtUdGNibHh1SUNBdkx5QkVaWFJsWTNRZ2RtRnNkV1VnWTJoaGJtZGxjeUJ2ZFhSemFXUmxYRzRnSUhWelpVVm1abVZqZENnb0tTQTlQaUI3WEc0Z0lDQWdjMlYwVlc1amIyMXRhWFIwWldSV1lXeDFaU2gyWVd4MVpYTXBPMXh1SUNCOUxDQmJkbUZzZFdWelhTazdYRzVjYmlBZ1kyOXVjM1FnYjI1SmJuQjFkRU5vWVc1blpTQTlJQ2gyWVd4MVpUb2djM1J5YVc1bkxDQjdJR0ZqZEdsdmJpQjlPaUJKYm5CMWRFRmpkR2x2YmsxbGRHRXBJRDArSUh0Y2JpQWdJQ0JwWmlBb1lXTjBhVzl1SUQwOVBTQW5hVzV3ZFhRdFkyaGhibWRsSnlrZ2UxeHVJQ0FnSUNBZ2MyVjBTVzV3ZFhSV1lXeDFaU2gyWVd4MVpTazdYRzRnSUNBZ0lDQnBaaUFvYlc5a1pXd3ViMjVUWldGeVkyaERhR0Z1WjJVcElIdGNiaUFnSUNBZ0lDQWdiVzlrWld3dWIyNVRaV0Z5WTJoRGFHRnVaMlVoS0haaGJIVmxLVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJSEpsZEhWeWJpQjJZV3gxWlR0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb1lXTjBhVzl1SUQwOVBTQW5hVzV3ZFhRdFlteDFjaWNwSUh0Y2JpQWdJQ0FnSUhObGRFbHVjSFYwVm1Gc2RXVW9KeWNwTzF4dUlDQWdJQ0FnY21WMGRYSnVJQ2NuTzF4dUlDQWdJSDFjYmx4dUlDQWdJSEpsZEhWeWJpQnBibkIxZEZaaGJIVmxPMXh1SUNCOU8xeHVYRzRnSUdOdmJuTjBJR1pwYkhSbGNtVmtUM0IwYVc5dWN5QTlJSFZ6WlUxbGJXOG9YRzRnSUNBZ0tDa2dQVDRnYUdGdVpHeGxUM0IwYVc5dVIzSnZkWEJ6S0c5d2RHbHZibE5sWVhKamFHVnlLR2x1Y0hWMFZtRnNkV1VwTG0xaGNDaDBiMU5sYkdWamRHRmliR1ZXWVd4MVpTa3BMRnh1SUNBZ0lGdHZjSFJwYjI1VFpXRnlZMmhsY2l3Z2FXNXdkWFJXWVd4MVpWMWNiaUFnS1R0Y2JseHVJQ0J5WlhSMWNtNGdLRnh1SUNBZ0lEeE5kV3gwYVZObGJHVmpkRHhXWVhKcFlXSnNaVlpoYkhWbFUybHVaMnhsUGx4dUlDQWdJQ0FnWkdGMFlTMTBaWE4wYVdROWUyQkhjbTkxY0VKNVUyVnNaV04wTFNSN2EyVjVmV0I5WEc0Z0lDQWdJQ0JwWkQxN2EyVjVmVnh1SUNBZ0lDQWdjR3hoWTJWb2IyeGtaWEk5ZXlkVFpXeGxZM1FnZG1Gc2RXVW5mVnh1SUNBZ0lDQWdkMmxrZEdnOVhDSmhkWFJ2WENKY2JpQWdJQ0FnSUdGc2JHOTNRM1Z6ZEc5dFZtRnNkV1U5ZTJGc2JHOTNRM1Z6ZEc5dFZtRnNkV1Y5WEc0Z0lDQWdJQ0JwYm5CMWRGWmhiSFZsUFh0cGJuQjFkRlpoYkhWbGZWeHVJQ0FnSUNBZ2RtRnNkV1U5ZTNWdVkyOXRiV2wwZEdWa1ZtRnNkV1Y5WEc0Z0lDQWdJQ0J1YjAxMWJIUnBWbUZzZFdWWGNtRndQWHQwY25WbGZWeHVJQ0FnSUNBZ2JXRjRWbWx6YVdKc1pWWmhiSFZsY3oxN2JXRjRWbWx6YVdKc1pWWmhiSFZsY3lBL1B5QTFmVnh1SUNBZ0lDQWdkR0ZpVTJWc1pXTjBjMVpoYkhWbFBYdG1ZV3h6WlgxY2JpQWdJQ0FnSUhacGNuUjFZV3hwZW1Wa1hHNGdJQ0FnSUNCdmNIUnBiMjV6UFh0bWFXeDBaWEpsWkU5d2RHbHZibk45WEc0Z0lDQWdJQ0JtYVd4MFpYSlBjSFJwYjI0OWUyWnBiSFJsY2s1dlQzQjlYRzRnSUNBZ0lDQmpiRzl6WlUxbGJuVlBibE5sYkdWamREMTdabUZzYzJWOVhHNGdJQ0FnSUNCcGMwOXdaVzQ5ZTJselQzQjBhVzl1YzA5d1pXNTlYRzRnSUNBZ0lDQnBjME5zWldGeVlXSnNaVDE3ZEhKMVpYMWNiaUFnSUNBZ0lHaHBaR1ZUWld4bFkzUmxaRTl3ZEdsdmJuTTllMlpoYkhObGZWeHVJQ0FnSUNBZ2FYTk1iMkZrYVc1blBYdHBjMFpsZEdOb2FXNW5UM0IwYVc5dWMzMWNiaUFnSUNBZ0lHTnZiWEJ2Ym1WdWRITTllM3NnVDNCMGFXOXVPaUJQY0hScGIyNVhhWFJvUTJobFkydGliM2dnZlgxY2JpQWdJQ0FnSUc5dVNXNXdkWFJEYUdGdVoyVTllMjl1U1c1d2RYUkRhR0Z1WjJWOVhHNGdJQ0FnSUNCdmJrSnNkWEk5ZXlncElEMCtJSHRjYmlBZ0lDQWdJQ0FnYlc5a1pXd3VZMmhoYm1kbFZtRnNkV1ZVYnloY2JpQWdJQ0FnSUNBZ0lDQjFibU52YlcxcGRIUmxaRlpoYkhWbExtMWhjQ2dvZUNrZ1BUNGdlQzUyWVd4MVpTRXBMRnh1SUNBZ0lDQWdJQ0FnSUhWdVkyOXRiV2wwZEdWa1ZtRnNkV1V1YldGd0tDaDRLU0E5UGlCNExteGhZbVZzSVNsY2JpQWdJQ0FnSUNBZ0tUdGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0lDQnZia05vWVc1blpUMTdLRzVsZDFaaGJIVmxMQ0JoWTNScGIyNHBJRDArSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR0ZqZEdsdmJpNWhZM1JwYjI0Z1BUMDlJQ2RqYkdWaGNpY2dKaVlnYm05V1lXeDFaVTl1UTJ4bFlYSXBJSHRjYmlBZ0lDQWdJQ0FnSUNCdGIyUmxiQzVqYUdGdVoyVldZV3gxWlZSdktGdGRLVHRjYmlBZ0lDQWdJQ0FnZlZ4dUlDQWdJQ0FnSUNCelpYUlZibU52YlcxcGRIUmxaRlpoYkhWbEtHNWxkMVpoYkhWbEtUdGNiaUFnSUNBZ0lIMTlYRzRnSUNBZ0lDQnZiazl3Wlc1TlpXNTFQWHRoYzNsdVl5QW9LU0E5UGlCN1hHNGdJQ0FnSUNBZ0lITmxkRWx6Um1WMFkyaHBibWRQY0hScGIyNXpLSFJ5ZFdVcE8xeHVJQ0FnSUNBZ0lDQmhkMkZwZENCc1lYTjBWbUZzZFdWR2NtOXRLRzF2WkdWc0xuWmhiR2xrWVhSbFFXNWtWWEJrWVhSbEtDa3BPMXh1SUNBZ0lDQWdJQ0J6WlhSSmMwWmxkR05vYVc1blQzQjBhVzl1Y3lobVlXeHpaU2s3WEc0Z0lDQWdJQ0FnSUhObGRFbHpUM0IwYVc5dWMwOXdaVzRvZEhKMVpTazdYRzRnSUNBZ0lDQjlmVnh1SUNBZ0lDQWdiMjVEYkc5elpVMWxiblU5ZXlncElEMCtJSHRjYmlBZ0lDQWdJQ0FnYzJWMFNYTlBjSFJwYjI1elQzQmxiaWhtWVd4elpTazdYRzRnSUNBZ0lDQjlmVnh1SUNBZ0lDOCtYRzRnSUNrN1hHNTlYRzVjYm1OdmJuTjBJR1pwYkhSbGNrNXZUM0FnUFNBb0tTQTlQaUIwY25WbE8xeHVYRzVtZFc1amRHbHZiaUIwYjFObGJHVmpkR0ZpYkdWV1lXeDFaU2hwYm5CMWREb2dWbUZ5YVdGaWJHVldZV3gxWlU5d2RHbHZiaWs2SUZObGJHVmpkR0ZpYkdWV1lXeDFaVHhXWVhKcFlXSnNaVlpoYkhWbFUybHVaMnhsUGlCN1hHNGdJR052Ym5OMElIc2diR0ZpWld3c0lIWmhiSFZsTENCbmNtOTFjQ0I5SUQwZ2FXNXdkWFE3WEc0Z0lHTnZibk4wSUhKbGMzVnNkRG9nVTJWc1pXTjBZV0pzWlZaaGJIVmxQRlpoY21saFlteGxWbUZzZFdWVGFXNW5iR1UrSUQwZ2UxeHVJQ0FnSUd4aFltVnNMRnh1SUNBZ0lIWmhiSFZsTEZ4dUlDQjlPMXh1WEc0Z0lHbG1JQ2huY205MWNDa2dlMXh1SUNBZ0lISmxjM1ZzZEM1bmNtOTFjQ0E5SUdkeWIzVndPMXh1SUNCOVhHNWNiaUFnY21WMGRYSnVJSEpsYzNWc2REdGNibjFjYmlKZExDSnVZVzFsY3lJNld5SjJZV3gxWlNKZExDSnRZWEJ3YVc1bmN5STZJanM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096czdPenM3T3pzN096dEJRVEpFVHl4TlFVRk5MSGRDUVVGM1FpeHJRa0ZCZVVNc1EwRkJRVHRCUVVGQkxFVkJkVVZ5UlN4WlFVRlpMRmxCUVRaRExFVkJRVUU3UVVGRE9VUXNTVUZCVFN4TFFVRkJMRU5CUVVFc1lVRkJRU3hEUVVGQkxHTkJRVUVzUTBGQlFUdEJRVUZCTEUxQlEwb3NUMEZCVXl4RlFVRkJMRWxCUVVFN1FVRkJRU3hOUVVOVUxFbEJRVTBzUlVGQlFTeEZRVUZCTzBGQlFVRXNUVUZEVGl4UFFVRlBMRVZCUVVNN1FVRkJRU3hOUVVOU0xFMUJRVTBzUlVGQlF6dEJRVUZCTEUxQlExQXNVMEZCVXl4RlFVRkRPMEZCUVVFc1RVRkRWaXhWUVVGWkxFVkJRVUVzU1VGQlFUdEJRVUZCTEUxQlExb3NZVUZCWVN4RlFVRkRPMEZCUVVFc1RVRkRaQ3hUUVVGWExFVkJRVUVzVFVGQlFUdEJRVUZCTEUxQlExZ3NUVUZCVVN4RlFVRkJMRmxCUVVFN1FVRkJRU3hOUVVOU0xFbEJRVTBzUlVGQlFTeFRRVUZCTzBGQlFVRXNTMEZCUVN4RlFVTklMRmxCV0VNc1EwRkJRU3hGUVVGQk8wRkJRVUVzVFVGWlNpeGpRVUZuUWl4RlFVRkJMRWxCUVVFN1FVRkJRU3hMUVVOcVFpeERRVUZCTEVOQlFVRXNRMEZCUVR0QlFXNUdTQ3hKUVVGVExFbEJRVUVzUTBGQlFTeE5RVUZCTEVkQlFVRXNTVUZCUVN4RFFVRkJPMEZCUlZRc1NVRkJWU3hKUVVGQkxFTkJRVUVzVVVGQlFTeEhRVUZ6UXl4SlFVRkpMRFpDUVVGQkxFTkJRVGhDTEVsQlFVa3NRMEZCUVN4RFFVRkJPMEZCTmtaMFJpeEpRVUZQTEVsQlFVRXNRMEZCUVN4UlFVRkJMRWRCUVZjc1QwRkJUeXhGUVVGelFpeExRVUZCTzBGQk5VcHFSQ3hOUVVGQkxFbEJRVUVzUlVGQlFTeEZRVUZCTEVWQlFVRXNSVUZCUVN4RlFVRkJMRU5CUVVFN1FVRTRTa2tzVFVGQlFTeE5RVUZOTEZkQlFWY3NUMEZCVFN4RFFVRkJMRVZCUVVFc1IwRkJRU3hEUVVGQkxFVkJRVUVzUjBGQlFTeEpRVUZCTEVOQlFVc3NTMEZCVFN4RlFVRkJMR3RDUVVGQkxFdEJRVmdzTkVKQlFXZERMRWxCUVUwc1JVRkJRU3hKUVVGQkxFTkJRVUVzUTBGQlFTeERRVUZCTzBGQlJUZEVMRTFCUVVrc1NVRkJRU3hSUVVGQkxFbEJRVmtzVTBGQlV5eFBRVUZUTEVWQlFVRTdRVUZEYUVNc1VVRkJRU3hQUVVGUExGRkJRVk1zUTBGQlFTeE5RVUZCTEVOQlFVRTdRVUZCUVN4UFFVTnNRanRCUVVWQkxFMUJRVWtzU1VGQlFTeEpRVUZCTEVOQlFVc3NUVUZCVFN4alFVRm5RaXhGUVVGQk8wRkJRemRDTEZGQlFVOHNUMEZCUVN4SlFVRkJMRU5CUVVzc1MwRkJUU3hEUVVGQkxHTkJRVUVzUTBGQlpTeE5RVUZQTEVOQlFVRXNaMEpCUVVFc1EwRkJRU3hEUVVGcFFpd3dRMEZCVlN4TlFVRldMRXRCUVVFc1NVRkJRU3hIUVVGQkxFVkJRVUVzUjBGQmIwSXNSVUZCUlN4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVGQkxFOUJRMnhHTzBGQlJVRXNUVUZCU1N4SlFVRkJMRU5CUVVNc1IwRkJSeXhWUVVGWkxFVkJRVUU3UVVGRGJFSXNVVUZCUVN4UFFVRlBMRVZCUVVNc1EwRkJRVHRCUVVGQkxFOUJRMVk3UVVGRlFTeE5RVUZOTEUxQlFVRXNUMEZCUVN4SFFVRlZMSFZDUVVGMVFpeEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVVXpReXhOUVVGQkxFMUJRVTBzV1VGQlpTeEhRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRk5MRU5CUVVFc1YwRkJRU3hKUVVGbExFVkJRVU1zUTBGQlFUdEJRVU5vUkN4TlFVRkJMRTFCUVUwc1UwRkJXU3hIUVVGQkxGVkJRVUVzUTBGQlZ5eFpRVUZoTEVOQlFVRXNTVUZCU1N4RlFVRkZMRXRCUVUwc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRGRFUXNUVUZCVFN4TlFVRkJMRkZCUVVFc1IwRkJWeXhOUVVGTkxFVkJRVUVzUTBGQlJ5eFZRVUZYTEVOQlFVRXNZMEZCUVN4RFFVRkJPMEZCUVVFc1VVRkRia01zVDBGQlV5eEZRVUZCTEZsQlFVRTdRVUZCUVN4UlFVTlVMRTlCUVVFN1FVRkJRU3hSUVVOQkxGTkJRVUU3UVVGQlFTeFBRVU5ITEVWQlFVRXNlVUpCUVVFc1EwRkJNRUlzU1VGQlNTeERRVU5zUXl4RFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVORUxFMUJRVWtzU1VGQlFTeG5Ra0ZCUVN4RFFVRnBRaXhSUVVGUkxFTkJRVWNzUlVGQlFUdEJRVU01UWl4UlFVRkJMRWxCUVVFc1EwRkJTeXhUUVVGVExFVkJRVVVzUzBGQlFTeEZRVUZQTEZGQlFWTXNRMEZCUVN4TFFVRkJMRU5CUVUwc1UwRkJVeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU5xUkR0QlFVVkJMRTFCUVVrc1NVRkJRU3hKUVVGQkxFZEJRVThzYVVKQlFXbENMRkZCUVZFc1EwRkJRU3hEUVVGQk8wRkJRM0JETEUxQlFVRXNTVUZCU1N4UlFVRlZMRVZCUVVFN1FVRkRXaXhSUVVGQkxFbEJRVUVzUjBGQlR5eEpRVUZMTEVOQlFVRXNUVUZCUVN4RFFVRlBMR2RDUVVGcFFpeERRVUZCTEZGQlFVRXNRMEZCVXl4TlFVRk5MRU5CUVVNc1EwRkJRU3hEUVVGQk8wRkJRVUVzVDBGRGRFUTdRVUZGUVN4TlFVRk5MRTFCUVVFc2FVSkJRVUVzUjBGQmIwSXNTMEZCU3l4TFFVRk5MRU5CUVVFc2FVSkJRVUVzUTBGQlFUdEJRVU55UXl4TlFVRkJMRWxCUVVrc2FVSkJRVzFDTEVWQlFVRTdRVUZEY2tJc1VVRkJUeXhKUVVGQkxFZEJRVUVzU1VGQlFTeERRVUZMTEU5QlFVOHNRMEZCUXl4RFFVRkJMRXRCUVUwc1JVRkJSU3hKUVVGTExFTkJRVUVzUzBGQlFTeERRVUZOTEdsQ1FVRnBRaXhEUVVGRExFTkJRVUVzUTBGQlFUdEJRVUZCTEU5QlF6TkVPMEZCUlVFc1RVRkJUeXhQUVVGQkxFbEJRVUVzUTBGQlFUdEJRVUZCTEV0QlExUXNRMEZCUVR0QlFXNUVSU3hKUVVGQkxFbEJRVUVzUTBGQlN5eHhRa0ZCY1VJc1RVRkJUVHRCUVVNNVFpeE5RVUZCTEhsQ1FVRkJMRU5CUVRCQ0xFbEJRVWtzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZGYkVNc1RVRkJUeXhQUVVGQkxFMUJRVTBzZVVKQlFUQkNMRU5CUVVFc1RVRkJRU3hEUVVGUExFbEJRVWtzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZEYmtRc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFNEdEJRVUZCTEVWQmRFWlBMR2xDUVVGNVJDeEhRVUZCTzBGQlF6bEVMRWxCUVVFc1QwRkJUeXhKUVVGTExFTkJRVUVzWlVGQlFTeERRVUZuUWl4RlFVRkZMRU5CUVVVc1EwRkJRU3hKUVVGQk8wRkJRVUVzVFVGRE9VSXNSMEZCUVN4RFFVRkpMRU5CUVVNc1QwRkJXU3hMUVVGQk8wRkJRMllzVVVGQlFTeEpRVUZCTEVOQlFVc3NORUpCUVRSQ0xFOUJRVThzUTBGQlFTeERRVUZCTzBGQlEzaERMRkZCUVVFc1QwRkJUeXhGUVVGRExFTkJRVUU3UVVGQlFTeFBRVU5VTEVOQlFVRTdRVUZCUVN4TFFVTklMRU5CUVVFN1FVRkJRU3hIUVVOR08wRkJRVUVzUlVGRlVTdzBRa0ZCTkVJc1QwRkJaME1zUlVGQlFUdEJRVU5zUlN4SlFVRkJMRTFCUVUwc1JVRkJSU3hMUVVGUExFVkJRVUVzV1VGQlFTeEZRVUZqTEVsQlFVMHNSVUZCUVN4WFFVRkJMRXRCUVdkQ0xFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZGZUVRc1NVRkJRU3hOUVVGTkxGZEJRV2RFTEVkQlFVRTdRVUZCUVN4TlFVTndSQ3hQUVVGQk8wRkJRVUVzVFVGRFFTeFBRVUZUTEVWQlFVRXNTMEZCUVR0QlFVRkJMRTFCUTFRc1MwRkJRU3hGUVVGUExITkRRVUZuUWl4RlFVRkRPMEZCUVVFc1RVRkRlRUlzU1VGQlFTeEZRVUZOTEc5RFFVRmxMRVZCUVVNN1FVRkJRU3hMUVVONFFpeERRVUZCTzBGQlJVRXNTVUZCUVN4SlFVRkJMRU5CUVVzc1UwRkJVeXhYUVVGWExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlF6TkNPMEZCUVVFc1JVRkZUeXhuUWtGQlowSXNTVUZCYVVVc1JVRkJRVHRCUVVWMFJpeEpRVUZKTEVsQlFVRXNTVUZCUVN4RFFVRkxMRTFCUVUwc1kwRkJaMElzUlVGQlFUdEJRVU0zUWl4TlFVRlBMRTlCUVVFc1JVRkJRVHRCUVVGQkxGRkJRMHdzU1VGQlN5eERRVUZCTEV0QlFVRXNRMEZCVFN4alFVRmxMRU5CUVVFc1IwRkJRU3hEUVVGSkxFTkJRVU1zUTBGQlR5eE5RVUZCTzBGQlFVRXNWVUZEY0VNc1QwRkJUeXhEUVVGRkxFTkJRVUVzU1VGQlFUdEJRVUZCTEZWQlExUXNTMEZCUVN4RlFVRlBMRTFCUVU4c1EwRkJRU3hEUVVGQkxFTkJRVVVzUzBGQlN5eERRVUZCTzBGQlFVRXNWVUZEY2tJc1QwRkJUeXhEUVVGRkxFTkJRVUVzUzBGQlFUdEJRVUZCTEZOQlExUXNRMEZCUVN4RFFVRkJPMEZCUVVFc1QwRkRTaXhEUVVGQk8wRkJRVUVzUzBGRFJqdEJRVVZCTEVsQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZNc1JVRkJSU3hQUVVGQkxFVkJRVk1zU1VGQlRTeEZRVUZCTEV0QlFVRXNSVUZCVHl4TlFVRk5MRU5CUVVFc1EwRkJRVHRCUVVVMVF5eEpRVUZQTEU5QlFVRXNTVUZCUVR0QlFVRkJMRTFCUTB3c1lVRkJRU3hEUVVGakxFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVMHNWVUZCV1N4RlFVRkJPMEZCUVVFc1VVRkRia01zWVVGQlFTeEZRVUZsTEd0RFFVRnJReXhKUVVGSkxFTkJRVUU3UVVGQlFTeFBRVU4wUkN4RFFVRkJPMEZCUVVFc1MwRkRSQ3hEUVVGQkxFbEJRVUU3UVVGQlFTeE5RVU5CTEZGQlFVRXNRMEZCVXl4RFFVRkRMRVZCUVU4c1MwRkJRVHRCUVVObUxGRkJRVUVzVDBGQlR5eEpRVUZMTEVOQlFVRXNTVUZCUVN4RFFVRkxMRkZCUVZNc1EwRkJRU3hGUVVGRkxFTkJRVU1zUTBGQlJTeERRVUZCTEVsQlFVRTdRVUZCUVN4VlFVTTNRaXhIUVVGQkxFTkJRVWtzUTBGQlF5eFJRVUZoTEV0QlFVRTdRVUZEYUVJc1dVRkJTU3hKUVVGQkxHZENRVUZCTEVOQlFXbENMRkZCUVZFc1EwRkJSeXhGUVVGQk8wRkJRemxDTEdOQlFVRXNTVUZCUVN4RFFVRkxMRk5CUVZNc1JVRkJSU3hMUVVGQkxFVkJRVThzVVVGQlV5eERRVUZCTEV0QlFVRXNRMEZCVFN4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVGQkxHRkJRMnBFTzBGQlFVRXNWMEZEUkN4RFFVRkJPMEZCUVVFc1ZVRkRSQ3hIUVVGSkxFTkJRVUVzUTBGQlF5eFJRVUZoTEV0QlFVRXNaMEpCUVVFc1EwRkJhVUlzVVVGQlVTeERRVUZETEVOQlFVRTdRVUZCUVN4VlFVTTFReXhMUVVGTExFTkJRVU1zUTBGQlFUdEJRVUZCTEZWQlEwNHNVVUZCUVN4RFFVRlRMRU5CUVVNc1NVRkJVeXhMUVVGQk8wRkJRMnBDTEZsQlFVRXNUVUZCVFN4RFFVRXlRaXhIUVVGQkxFbEJRVUVzUTBGQlN5eEhRVUZKTEVOQlFVRXNRMEZCUXl4RFFVRk5MRXRCUVVFN1FVRkRMME1zWTBGQlR5eFBRVUZCTzBGQlFVRXNaMEpCUTB3c1QwRkJUeXhEUVVGRkxFTkJRVUVzU1VGQlFUdEJRVUZCTEdkQ1FVTlVMRTlCUVU4c1EwRkJSU3hEUVVGQkxFdEJRVUVzUjBGQlVTeFBRVUZQTEVOQlFVVXNRMEZCUVN4TFFVRkxMRWxCUVVrc1EwRkJSU3hEUVVGQkxFbEJRVUU3UVVGQlFTeG5Ra0ZEY2tNc1QwRkJUeXhEUVVGRkxFTkJRVUVzUzBGQlFUdEJRVUZCTEdWQlExZ3NRMEZCUVR0QlFVRkJMR0ZCUTBRc1EwRkJRU3hEUVVGQk8wRkJRMFFzV1VGQlFTeFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkJMRU5CUVVFN1FVRkJRU3hYUVVOYUxFTkJRVUU3UVVGQlFTeFRRVU5JTEVOQlFVRTdRVUZCUVN4UFFVTkVMRU5CUVVFN1FVRkJRU3hMUVVOSUxFTkJRVUU3UVVGQlFTeEhRVU5HTzBGQlFVRXNSVUV3UlU4c2NVSkJRWEZDTEU5QlFXdEdMRVZCUVVFN1FVRkROVWNzU1VGQlFTeFBRVUZQTEVWQlFVVXNTMEZCVHl4RlFVRkJMRVZCUVVrc1JVRkJRU3hKUVVGQkxFVkJRVTBzUlVGQlJ5eEZRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTXZRanRCUVVOR0xFTkJRVUU3UVVGc1NtRXNaVUZCUVN4RFFVTktMRk5CUVZrc1IwRkJRU3gxUWtGQlFTeERRVUZCTzBGQmEwcE1MRk5CUVVFc2RVSkJRVUVzUTBGQmQwSXNSVUZCUlN4TFFVRkJMRVZCUVd0RUxFVkJRVUU3UVVGRE1VWXNSVUZCVFN4TlFVRkJPMEZCUVVFc1NVRkRTaXhMUVVGQk8wRkJRVUVzU1VGRFFTeEpRVUZCTzBGQlFVRXNTVUZEUVN4SFFVRkJPMEZCUVVFc1NVRkRRU3huUWtGQlFUdEJRVUZCTEVsQlEwRXNZMEZCUVR0QlFVRkJMRWxCUTBFc1QwRkJRVHRCUVVGQkxFbEJRMEVzVlVGQlFUdEJRVUZCTEVsQlEwRXNaMEpCUVcxQ0xFZEJRVUVzU1VGQlFUdEJRVUZCTEVkQlEzSkNMRWRCUVVrc1RVRkJUU3hSUVVGVExFVkJRVUVzUTBGQlFUdEJRVVZ1UWl4RlFVRk5MRTFCUVVFc1RVRkJRU3hIUVVGVExGRkJRWEZFTEUxQlFVMDdRVUZEZUVVc1NVRkJRU3hOUVVGTkxHRkJRV0VzVDBGQlVTeERRVUZCTEV0QlFVc3NRMEZCU1N4SFFVRkJMRXRCUVVFc1IwRkJVU3hEUVVGRExFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlEyeEVMRWxCUVVFc1RVRkJUU3haUVVGWkxFOUJRVkVzUTBGQlFTeEpRVUZKTEVOQlFVa3NSMEZCUVN4SlFVRkJMRWRCUVU4c1EwRkJReXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVVU1UXl4SlFVRkJMRTlCUVU4c1ZVRkJWeXhEUVVGQkxFZEJRVUVzUTBGQlNTeERRVUZEUVN4TlFVRkJRU3hGUVVGUExFZEJRVXNzUzBGQlFUdEJRVGxPZGtNc1RVRkJRU3hKUVVGQkxFVkJRVUVzUTBGQlFUdEJRVGhPTWtNc1RVRkJRU3hQUVVGQk8wRkJRVUVzVVVGRGNrTXNTMEZCUVVFc1JVRkJRVUVzVFVGQlFVRTdRVUZCUVN4UlFVTkJMRXRCUVU4c1JVRkJRU3hOUVVGQkxFTkJRVUVzUTBGQlR5eEZRVUZWTEVkQlFVRXNVMEZCUVN4RFFVRkJMRWRCUVVFc1EwRkJRU3hMUVVGV0xGbEJRV3RDUVN4TlFVRkxMRU5CUVVFN1FVRkJRU3hQUVVOMlF5eERRVUZCTzBGQlFVRXNTMEZCUlN4RFFVRkJMRU5CUVVFN1FVRkJRU3hIUVVORUxFVkJRVUVzUTBGQlF5eExRVUZQTEVWQlFVRXNTVUZCU1N4RFFVRkRMRU5CUVVFc1EwRkJRVHRCUVVWb1FpeEZRVUZCTEUxQlFVMHNRMEZCUXl4cFFrRkJRU3hGUVVGdFFpeHZRa0ZCYjBJc1EwRkJRU3hIUVVGSkxGTkJRVk1zUzBGQlN5eERRVUZCTEVOQlFVRTdRVUZEYUVVc1JVRkJRU3hOUVVGTkxFTkJRVU1zWVVGQlFTeEZRVUZsTEdkQ1FVRm5RaXhEUVVGQkxFZEJRVWtzVTBGQlV5eExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVTjRSQ3hGUVVGQkxFMUJRVTBzUTBGQlF5eFZRVUZCTEVWQlFWa3NZVUZCWVN4RFFVRkJMRWRCUVVrc1UwRkJVeXhGUVVGRkxFTkJRVUVzUTBGQlFUdEJRVWN2UXl4RlFVRkJMRTFCUVUwc1EwRkJReXhuUWtGQlFTeEZRVUZyUWl4dFFrRkJiVUlzUTBGQlFTeEhRVUZKTEZOQlFWTXNUVUZCVFN4RFFVRkJMRU5CUVVFN1FVRkZMMFFzUlVGQlRTeE5RVUZCTEdOQlFVRXNSMEZCYVVJc1QwRkJVU3hEUVVGQkxFMUJRVTBzYVVKQlFXdENMRU5CUVVFc1QwRkJRU3hGUVVGVExGVkJRVlVzUTBGQlJ5eEZRVUZCTEVOQlFVTXNUMEZCVXl4RlFVRkJMRlZCUVZVc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGSGJFY3NSVUZCUVN4VFFVRkJMRU5CUVZVc1RVRkJUVHRCUVVOa0xFbEJRVUVzYlVKQlFVRXNRMEZCYjBJc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU0xUWl4RlFVRkhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVUVzUTBGQlFUdEJRVVZZTEVWQlFVRXNUVUZCVFN4aFFVRm5RaXhIUVVGQkxFTkJRVU5CTEUxQlFXVXNSVUZCUVN4RlFVRkZMRkZCUVRoQ0xFdEJRVUU3UVVGRGNFVXNTVUZCUVN4SlFVRkpMRmRCUVZjc1kwRkJaMElzUlVGQlFUdEJRVU0zUWl4TlFVRkJMR0ZCUVVFc1EwRkJZMEVzVFVGQlN5eERRVUZCTEVOQlFVRTdRVUZEYmtJc1RVRkJRU3hKUVVGSkxFMUJRVTBzWTBGQlowSXNSVUZCUVR0QlFVTjRRaXhSUVVGQkxFdEJRVUVzUTBGQlRTeGxRVUZuUWtFc1RVRkJTeXhEUVVGQkxFTkJRVUU3UVVGQlFTeFBRVU0zUWp0QlFVTkJMRTFCUVU5QkxFOUJRVUZCTEUxQlFVRkJMRU5CUVVGQk8wRkJRVUVzUzBGRFZEdEJRVVZCTEVsQlFVRXNTVUZCU1N4WFFVRlhMRmxCUVdNc1JVRkJRVHRCUVVNelFpeE5RVUZCTEdGQlFVRXNRMEZCWXl4RlFVRkZMRU5CUVVFc1EwRkJRVHRCUVVOb1FpeE5RVUZQTEU5QlFVRXNSVUZCUVN4RFFVRkJPMEZCUVVFc1MwRkRWRHRCUVVWQkxFbEJRVThzVDBGQlFTeFZRVUZCTEVOQlFVRTdRVUZCUVN4SFFVTlVMRU5CUVVFN1FVRkZRU3hGUVVGQkxFMUJRVTBzWlVGQmEwSXNSMEZCUVN4UFFVRkJPMEZCUVVFc1NVRkRkRUlzVFVGQlRTeHJRa0ZCYlVJc1EwRkJRU3hqUVVGQkxFTkJRV1VzVlVGQlZTeERRVUZGTEVOQlFVRXNSMEZCUVN4RFFVRkpMR2xDUVVGcFFpeERRVUZETEVOQlFVRTdRVUZCUVN4SlFVTXhSU3hEUVVGRExHZENRVUZuUWl4VlFVRlZMRU5CUVVFN1FVRkJRU3hIUVVNM1FpeERRVUZCTzBGQlJVRXNSVUZCUVN4MVFrRkRSeXhMUVVGQkxFTkJRVUVzWVVGQlFTeERRVUZCTEZkQlFVRXNSVUZCUVR0QlFVRkJMRWxCUTBNc1pVRkJZU3hEUVVGcFFpeGpRVUZCTEVWQlFVRXNSMEZCUVN4RFFVRkJMRU5CUVVFN1FVRkJRU3hKUVVNNVFpeEZRVUZKTEVWQlFVRXNSMEZCUVR0QlFVRkJMRWxCUTBvc1YwRkJZU3hGUVVGQkxHTkJRVUU3UVVGQlFTeEpRVU5pTEV0QlFVMHNSVUZCUVN4TlFVRkJPMEZCUVVFc1NVRkRUaXhuUWtGQlFUdEJRVUZCTEVsQlEwRXNWVUZCUVR0QlFVRkJMRWxCUTBFc1MwRkJUeXhGUVVGQkxHZENRVUZCTzBGQlFVRXNTVUZEVUN4blFrRkJhMElzUlVGQlFTeEpRVUZCTzBGQlFVRXNTVUZEYkVJc2EwSkJRV3RDTEdkQ1FVRnZRaXhKUVVGQkxFbEJRVUVzUjBGQlFTeG5Ra0ZCUVN4SFFVRkJMRU5CUVVFN1FVRkJRU3hKUVVOMFF5eGxRVUZwUWl4RlFVRkJMRXRCUVVFN1FVRkJRU3hKUVVOcVFpeFhRVUZYTEVWQlFVRXNTVUZCUVR0QlFVRkJMRWxCUTFnc1QwRkJVeXhGUVVGQkxHVkJRVUU3UVVGQlFTeEpRVU5VTEZsQlFXTXNSVUZCUVN4VlFVRkJPMEZCUVVFc1NVRkRaQ3hwUWtGQmJVSXNSVUZCUVN4TFFVRkJPMEZCUVVFc1NVRkRia0lzVFVGQlVTeEZRVUZCTEdGQlFVRTdRVUZCUVN4SlFVTlNMRmRCUVdFc1JVRkJRU3hKUVVGQk8wRkJRVUVzU1VGRFlpeHRRa0ZCY1VJc1JVRkJRU3hMUVVGQk8wRkJRVUVzU1VGRGNrSXNVMEZCVnl4RlFVRkJMR2xDUVVGQk8wRkJRVUVzU1VGRFdDeFZRVUZCTEVWQlFWa3NSVUZCUlN4TlFVRkJMRVZCUVZFc2EwSkJRVzFDTEVWQlFVRTdRVUZCUVN4SlFVTjZReXhoUVVGQk8wRkJRVUVzU1VGRFFTeFJRVUZSTEUxQlFVMDdRVUZEV2l4TlFVRk5MRXRCUVVFc1EwRkJRU3hoUVVGQk8wRkJRVUVzVVVGRFNpeG5Ra0ZCYVVJc1EwRkJRU3hIUVVGQkxFTkJRVWtzUTBGQlF5eERRVUZCTEV0QlFVMHNSVUZCUlN4TFFVRk5MRU5CUVVFN1FVRkJRU3hSUVVOd1F5eG5Ra0ZCYVVJc1EwRkJRU3hIUVVGQkxFTkJRVWtzUTBGQlF5eERRVUZCTEV0QlFVMHNSVUZCUlN4TFFVRk5MRU5CUVVFN1FVRkJRU3hQUVVOMFF5eERRVUZCTzBGQlFVRXNTMEZEUmp0QlFVRkJMRWxCUTBFc1VVRkJRU3hGUVVGVkxFTkJRVU1zVVVGQlFTeEZRVUZWTEUxQlFWY3NTMEZCUVR0QlFVTTVRaXhOUVVGSkxFbEJRVUVzVFVGQlFTeERRVUZQTEUxQlFWY3NTMEZCUVN4UFFVRkJMRWxCUVZjc1kwRkJaMElzUlVGQlFUdEJRVU12UXl4UlFVRk5MRXRCUVVFc1EwRkJRU3hoUVVGQkxFTkJRV01zUlVGQlJTeERRVUZCTEVOQlFVRTdRVUZCUVN4UFFVTjRRanRCUVVOQkxFMUJRVUVzYlVKQlFVRXNRMEZCYjBJc1VVRkJVU3hEUVVGQkxFTkJRVUU3UVVGQlFTeExRVU01UWp0QlFVRkJMRWxCUTBFc1dVRkJXU3haUVVGWk8wRkJRM1JDTEUxQlFVRXNiMEpCUVVFc1EwRkJjVUlzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZEZWtJc1RVRkJUU3hOUVVGQkxHRkJRVUVzUTBGQll5eExRVUZOTEVOQlFVRXNhVUpCUVVFc1JVRkJiVUlzUTBGQlFTeERRVUZCTzBGQlF6ZERMRTFCUVVFc2IwSkJRVUVzUTBGQmNVSXNTMEZCU3l4RFFVRkJMRU5CUVVFN1FVRkRNVUlzVFVGQlFTeG5Ra0ZCUVN4RFFVRnBRaXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVUZCTEV0QlEzWkNPMEZCUVVFc1NVRkRRU3hoUVVGaExFMUJRVTA3UVVGRGFrSXNUVUZCUVN4blFrRkJRU3hEUVVGcFFpeExRVUZMTEVOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTNoQ08wRkJRVUVzUjBGRFJpeERRVUZCTEVOQlFVRTdRVUZGU2l4RFFVRkJPMEZCUlVFc1RVRkJUU3hoUVVGaExFMUJRVTBzU1VGQlFTeERRVUZCTzBGQlJYcENMRk5CUVZNc2EwSkJRV3RDTEV0QlFXdEZMRVZCUVVFN1FVRkRNMFlzUlVGQlFTeE5RVUZOTEVWQlFVVXNTMEZCUVN4RlFVRlBMRXRCUVU4c1JVRkJRU3hMUVVGQkxFVkJRVlVzUjBGQlFTeExRVUZCTEVOQlFVRTdRVUZEYUVNc1JVRkJRU3hOUVVGTkxFMUJRU3RETEVkQlFVRTdRVUZCUVN4SlFVTnVSQ3hMUVVGQk8wRkJRVUVzU1VGRFFTeExRVUZCTzBGQlFVRXNSMEZEUml4RFFVRkJPMEZCUlVFc1JVRkJRU3hKUVVGSkxFdEJRVThzUlVGQlFUdEJRVU5VTEVsQlFVRXNUVUZCUVN4RFFVRlBMRXRCUVZFc1IwRkJRU3hMUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU5xUWp0QlFVVkJMRVZCUVU4c1QwRkJRU3hOUVVGQkxFTkJRVUU3UVVGRFZEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbInZhbHVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkRPLE1BQU0sd0JBQXdCLGtCQUF5QyxDQUFBO0FBdUVyRSxFQUFBLFdBQUEsQ0FBWSxZQUE2QyxFQUFBO0FBQ3hELElBQUEsS0FBQSxDQUFBLGNBQUEsY0FBQSxDQUFBO01BQ0osT0FBUyxFQUFBLElBQUE7TUFDVCxJQUFNLEVBQUEsRUFBQTtBQUNOLE1BQUEsS0FBQSxFQUFPLEVBQUE7QUFDUCxNQUFBLElBQUEsRUFBTSxFQUFBO0FBQ04sTUFBQSxPQUFBLEVBQVMsRUFBQTtNQUNULFVBQVksRUFBQSxJQUFBO0FBQ1osTUFBQSxXQUFBLEVBQWEsRUFBQTtNQUNiLFNBQVcsRUFBQSxNQUFBO01BQ1gsTUFBUSxFQUFBLFlBQUE7TUFDUixJQUFNLEVBQUEsU0FBQTtBQUFBLEtBQUEsRUFDSCxZQVhDLENBQUEsRUFBQTtNQVlKLGNBQWdCLEVBQUEsSUFBQTtBQUFBLEtBQ2pCLENBQUEsQ0FBQSxDQUFBO0FBbkZNLElBQUEsSUFBQSxDQUFBLE1BQUEsR0FBQSxJQUFBLENBQUE7QUFFQyxJQUFBLElBQUEsQ0FBQSxRQUFBLEdBQXNDLElBQUksNkJBQUEsQ0FBOEIsSUFBSSxDQUFBLENBQUE7QUE2Ri9FLElBQUEsSUFBQSxDQUFBLFFBQUEsR0FBVyxPQUFPLEVBQXNCLEtBQUE7QUE1SmpELE1BQUEsSUFBQSxJQUFBLEVBQUEs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
@@ -0,0 +1,63 @@
1
+ import { toUrlCommaDelimitedString, unescapeUrlDelimiters } from '../utils.js';
2
+
3
+ class GroupByVariableUrlSyncHandler {
4
+ constructor(_sceneObject) {
5
+ this._sceneObject = _sceneObject;
6
+ }
7
+ getKey() {
8
+ return `var-${this._sceneObject.state.name}`;
9
+ }
10
+ getKeys() {
11
+ if (this._sceneObject.state.skipUrlSync) {
12
+ return [];
13
+ }
14
+ return [this.getKey()];
15
+ }
16
+ getUrlState() {
17
+ if (this._sceneObject.state.skipUrlSync) {
18
+ return {};
19
+ }
20
+ return { [this.getKey()]: toUrlValues(this._sceneObject.state.value, this._sceneObject.state.text) };
21
+ }
22
+ updateFromUrl(values) {
23
+ let urlValue = values[this.getKey()];
24
+ if (urlValue != null) {
25
+ if (!this._sceneObject.isActive) {
26
+ this._sceneObject.skipNextValidation = true;
27
+ }
28
+ const { values: values2, texts } = fromUrlValues(urlValue);
29
+ this._sceneObject.changeValueTo(values2, texts);
30
+ }
31
+ }
32
+ }
33
+ function toUrlValues(values, texts) {
34
+ values = Array.isArray(values) ? values : [values];
35
+ texts = Array.isArray(texts) ? texts : [texts];
36
+ return values.map((value, idx) => {
37
+ if (value === void 0 || value === null) {
38
+ return "";
39
+ }
40
+ value = String(value);
41
+ let text = texts[idx];
42
+ text = text === void 0 || text === null ? value : String(text);
43
+ return toUrlCommaDelimitedString(value, text);
44
+ });
45
+ }
46
+ function fromUrlValues(urlValues) {
47
+ urlValues = Array.isArray(urlValues) ? urlValues : [urlValues];
48
+ return urlValues.reduce(
49
+ (acc, urlValue) => {
50
+ const [value, label] = (urlValue != null ? urlValue : "").split(",");
51
+ acc.values.push(unescapeUrlDelimiters(value));
52
+ acc.texts.push(unescapeUrlDelimiters(label != null ? label : value));
53
+ return acc;
54
+ },
55
+ {
56
+ values: [],
57
+ texts: []
58
+ }
59
+ );
60
+ }
61
+
62
+ export { GroupByVariableUrlSyncHandler };
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXIuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9ncm91cGJ5L0dyb3VwQnlWYXJpYWJsZVVybFN5bmNIYW5kbGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvVXJsQ29tbWFEZWxpbWl0ZWRTdHJpbmcsIHVuZXNjYXBlVXJsRGVsaW1pdGVycyB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuY2xhc3MgR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXIge1xuICBjb25zdHJ1Y3Rvcihfc2NlbmVPYmplY3QpIHtcbiAgICB0aGlzLl9zY2VuZU9iamVjdCA9IF9zY2VuZU9iamVjdDtcbiAgfVxuICBnZXRLZXkoKSB7XG4gICAgcmV0dXJuIGB2YXItJHt0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS5uYW1lfWA7XG4gIH1cbiAgZ2V0S2V5cygpIHtcbiAgICBpZiAodGhpcy5fc2NlbmVPYmplY3Quc3RhdGUuc2tpcFVybFN5bmMpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIFt0aGlzLmdldEtleSgpXTtcbiAgfVxuICBnZXRVcmxTdGF0ZSgpIHtcbiAgICBpZiAodGhpcy5fc2NlbmVPYmplY3Quc3RhdGUuc2tpcFVybFN5bmMpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHsgW3RoaXMuZ2V0S2V5KCldOiB0b1VybFZhbHVlcyh0aGlzLl9zY2VuZU9iamVjdC5zdGF0ZS52YWx1ZSwgdGhpcy5fc2NlbmVPYmplY3Quc3RhdGUudGV4dCkgfTtcbiAgfVxuICB1cGRhdGVGcm9tVXJsKHZhbHVlcykge1xuICAgIGxldCB1cmxWYWx1ZSA9IHZhbHVlc1t0aGlzLmdldEtleSgpXTtcbiAgICBpZiAodXJsVmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKCF0aGlzLl9zY2VuZU9iamVjdC5pc0FjdGl2ZSkge1xuICAgICAgICB0aGlzLl9zY2VuZU9iamVjdC5za2lwTmV4dFZhbGlkYXRpb24gPSB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgeyB2YWx1ZXM6IHZhbHVlczIsIHRleHRzIH0gPSBmcm9tVXJsVmFsdWVzKHVybFZhbHVlKTtcbiAgICAgIHRoaXMuX3NjZW5lT2JqZWN0LmNoYW5nZVZhbHVlVG8odmFsdWVzMiwgdGV4dHMpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gdG9VcmxWYWx1ZXModmFsdWVzLCB0ZXh0cykge1xuICB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHZhbHVlcykgPyB2YWx1ZXMgOiBbdmFsdWVzXTtcbiAgdGV4dHMgPSBBcnJheS5pc0FycmF5KHRleHRzKSA/IHRleHRzIDogW3RleHRzXTtcbiAgcmV0dXJuIHZhbHVlcy5tYXAoKHZhbHVlLCBpZHgpID0+IHtcbiAgICBpZiAodmFsdWUgPT09IHZvaWQgMCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICBsZXQgdGV4dCA9IHRleHRzW2lkeF07XG4gICAgdGV4dCA9IHRleHQgPT09IHZvaWQgMCB8fCB0ZXh0ID09PSBudWxsID8gdmFsdWUgOiBTdHJpbmcodGV4dCk7XG4gICAgcmV0dXJuIHRvVXJsQ29tbWFEZWxpbWl0ZWRTdHJpbmcodmFsdWUsIHRleHQpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGZyb21VcmxWYWx1ZXModXJsVmFsdWVzKSB7XG4gIHVybFZhbHVlcyA9IEFycmF5LmlzQXJyYXkodXJsVmFsdWVzKSA/IHVybFZhbHVlcyA6IFt1cmxWYWx1ZXNdO1xuICByZXR1cm4gdXJsVmFsdWVzLnJlZHVjZShcbiAgICAoYWNjLCB1cmxWYWx1ZSkgPT4ge1xuICAgICAgY29uc3QgW3ZhbHVlLCBsYWJlbF0gPSAodXJsVmFsdWUgIT0gbnVsbCA/IHVybFZhbHVlIDogXCJcIikuc3BsaXQoXCIsXCIpO1xuICAgICAgYWNjLnZhbHVlcy5wdXNoKHVuZXNjYXBlVXJsRGVsaW1pdGVycyh2YWx1ZSkpO1xuICAgICAgYWNjLnRleHRzLnB1c2godW5lc2NhcGVVcmxEZWxpbWl0ZXJzKGxhYmVsICE9IG51bGwgPyBsYWJlbCA6IHZhbHVlKSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWVzOiBbXSxcbiAgICAgIHRleHRzOiBbXVxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IHsgR3JvdXBCeVZhcmlhYmxlVXJsU3luY0hhbmRsZXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pUjNKdmRYQkNlVlpoY21saFlteGxWWEpzVTNsdVkwaGhibVJzWlhJdWFuTWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMeTR1THk0dUwzTnlZeTkyWVhKcFlXSnNaWE12WjNKdmRYQmllUzlIY205MWNFSjVWbUZ5YVdGaWJHVlZjbXhUZVc1alNHRnVaR3hsY2k1MGN5SmRMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdleUJUWTJWdVpVOWlhbVZqZEZWeWJGTjVibU5JWVc1a2JHVnlMQ0JUWTJWdVpVOWlhbVZqZEZWeWJGWmhiSFZsY3lCOUlHWnliMjBnSnk0dUx5NHVMMk52Y21VdmRIbHdaWE1uTzF4dWFXMXdiM0owSUhzZ1IzSnZkWEJDZVZaaGNtbGhZbXhsSUgwZ1puSnZiU0FuTGk5SGNtOTFjRUo1Vm1GeWFXRmliR1VuTzF4dWFXMXdiM0owSUhzZ2RHOVZjbXhEYjIxdFlVUmxiR2x0YVhSbFpGTjBjbWx1Wnl3Z2RXNWxjMk5oY0dWVmNteEVaV3hwYldsMFpYSnpJSDBnWm5KdmJTQW5MaTR2ZFhScGJITW5PMXh1YVcxd2IzSjBJSHNnVm1GeWFXRmliR1ZXWVd4MVpTQjlJR1p5YjIwZ0p5NHVMM1I1Y0dWekp6dGNibHh1Wlhod2IzSjBJR05zWVhOeklFZHliM1Z3UW5sV1lYSnBZV0pzWlZWeWJGTjVibU5JWVc1a2JHVnlJR2x0Y0d4bGJXVnVkSE1nVTJObGJtVlBZbXBsWTNSVmNteFRlVzVqU0dGdVpHeGxjaUI3WEc0Z0lIQjFZbXhwWXlCamIyNXpkSEoxWTNSdmNpaHdjbWwyWVhSbElGOXpZMlZ1WlU5aWFtVmpkRG9nUjNKdmRYQkNlVlpoY21saFlteGxLU0I3ZlZ4dVhHNGdJSEJ5YVhaaGRHVWdaMlYwUzJWNUtDazZJSE4wY21sdVp5QjdYRzRnSUNBZ2NtVjBkWEp1SUdCMllYSXRKSHQwYUdsekxsOXpZMlZ1WlU5aWFtVmpkQzV6ZEdGMFpTNXVZVzFsZldBN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1oyVjBTMlY1Y3lncE9pQnpkSEpwYm1kYlhTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgzTmpaVzVsVDJKcVpXTjBMbk4wWVhSbExuTnJhWEJWY214VGVXNWpLU0I3WEc0Z0lDQWdJQ0J5WlhSMWNtNGdXMTA3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGdDBhR2x6TG1kbGRFdGxlU2dwWFR0Y2JpQWdmVnh1WEc0Z0lIQjFZbXhwWXlCblpYUlZjbXhUZEdGMFpTZ3BPaUJUWTJWdVpVOWlhbVZqZEZWeWJGWmhiSFZsY3lCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDNOalpXNWxUMkpxWldOMExuTjBZWFJsTG5OcmFYQlZjbXhUZVc1aktTQjdYRzRnSUNBZ0lDQnlaWFIxY200Z2UzMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ2NtVjBkWEp1SUhzZ1czUm9hWE11WjJWMFMyVjVLQ2xkT2lCMGIxVnliRlpoYkhWbGN5aDBhR2x6TGw5elkyVnVaVTlpYW1WamRDNXpkR0YwWlM1MllXeDFaU3dnZEdocGN5NWZjMk5sYm1WUFltcGxZM1F1YzNSaGRHVXVkR1Y0ZENrZ2ZUdGNiaUFnZlZ4dVhHNGdJSEIxWW14cFl5QjFjR1JoZEdWR2NtOXRWWEpzS0haaGJIVmxjem9nVTJObGJtVlBZbXBsWTNSVmNteFdZV3gxWlhNcE9pQjJiMmxrSUh0Y2JpQWdJQ0JzWlhRZ2RYSnNWbUZzZFdVZ1BTQjJZV3gxWlhOYmRHaHBjeTVuWlhSTFpYa29LVjA3WEc1Y2JpQWdJQ0JwWmlBb2RYSnNWbUZzZFdVZ0lUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ0x5b3FYRzRnSUNBZ0lDQWdLaUJKYm1sMGFXRnNJRlZTVENCVGVXNWpJR2hoY0hCbGJuTWdZbVZtYjNKbElITmpaVzVsSUc5aWFtVmpkSE1nWVhKbElHRmpkR2wyWVhSbFpDNWNiaUFnSUNBZ0lDQXFJRmRsSUc1bFpXUWdkRzhnYzJ0cGNDQjJZV3hwWkdGMGFXOXVJR2x1SUhSb2FYTWdZMkZ6WlNCMGJ5QnRZV3RsSUhOMWNtVWdkbUZzZFdWeklITmxkQ0IyYVdFZ1ZWSk1JR0Z5WlNCdFlXbHVkR0ZwYm1Wa0xseHVJQ0FnSUNBZ0lDb3ZYRzRnSUNBZ0lDQnBaaUFvSVhSb2FYTXVYM05qWlc1bFQySnFaV04wTG1selFXTjBhWFpsS1NCN1hHNGdJQ0FnSUNBZ0lIUm9hWE11WDNOalpXNWxUMkpxWldOMExuTnJhWEJPWlhoMFZtRnNhV1JoZEdsdmJpQTlJSFJ5ZFdVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHTnZibk4wSUhzZ2RtRnNkV1Z6TENCMFpYaDBjeUI5SUQwZ1puSnZiVlZ5YkZaaGJIVmxjeWgxY214V1lXeDFaU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYM05qWlc1bFQySnFaV04wTG1Ob1lXNW5aVlpoYkhWbFZHOG9kbUZzZFdWekxDQjBaWGgwY3lrN1hHNGdJQ0FnZlZ4dUlDQjlYRzU5WEc1Y2JtWjFibU4wYVc5dUlIUnZWWEpzVm1Gc2RXVnpLSFpoYkhWbGN6b2dWbUZ5YVdGaWJHVldZV3gxWlN3Z2RHVjRkSE02SUZaaGNtbGhZbXhsVm1Gc2RXVXBPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lIWmhiSFZsY3lBOUlFRnljbUY1TG1selFYSnlZWGtvZG1Gc2RXVnpLU0EvSUhaaGJIVmxjeUE2SUZ0MllXeDFaWE5kTzF4dUlDQjBaWGgwY3lBOUlFRnljbUY1TG1selFYSnlZWGtvZEdWNGRITXBJRDhnZEdWNGRITWdPaUJiZEdWNGRITmRPMXh1WEc0Z0lISmxkSFZ5YmlCMllXeDFaWE11YldGd0tDaDJZV3gxWlN3Z2FXUjRLU0E5UGlCN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUQwOVBTQjFibVJsWm1sdVpXUWdmSHdnZG1Gc2RXVWdQVDA5SUc1MWJHd3BJSHRjYmlBZ0lDQWdJSEpsZEhWeWJpQW5KenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjJZV3gxWlNBOUlGTjBjbWx1WnloMllXeDFaU2s3WEc1Y2JpQWdJQ0JzWlhRZ2RHVjRkQ0E5SUhSbGVIUnpXMmxrZUYwN1hHNGdJQ0FnZEdWNGRDQTlJSFJsZUhRZ1BUMDlJSFZ1WkdWbWFXNWxaQ0I4ZkNCMFpYaDBJRDA5UFNCdWRXeHNJRDhnZG1Gc2RXVWdPaUJUZEhKcGJtY29kR1Y0ZENrN1hHNWNiaUFnSUNCeVpYUjFjbTRnZEc5VmNteERiMjF0WVVSbGJHbHRhWFJsWkZOMGNtbHVaeWgyWVd4MVpTd2dkR1Y0ZENrN1hHNGdJSDBwTzF4dWZWeHVYRzVtZFc1amRHbHZiaUJtY205dFZYSnNWbUZzZFdWektIVnliRlpoYkhWbGN6b2djM1J5YVc1bklId2djM1J5YVc1blcxMHBPaUI3SUhaaGJIVmxjem9nYzNSeWFXNW5XMTA3SUhSbGVIUnpPaUJ6ZEhKcGJtZGJYU0I5SUh0Y2JpQWdkWEpzVm1Gc2RXVnpJRDBnUVhKeVlYa3VhWE5CY25KaGVTaDFjbXhXWVd4MVpYTXBJRDhnZFhKc1ZtRnNkV1Z6SURvZ1czVnliRlpoYkhWbGMxMDdYRzVjYmlBZ2NtVjBkWEp1SUhWeWJGWmhiSFZsY3k1eVpXUjFZMlU4ZXlCMllXeDFaWE02SUhOMGNtbHVaMXRkT3lCMFpYaDBjem9nYzNSeWFXNW5XMTBnZlQ0b1hHNGdJQ0FnS0dGall5d2dkWEpzVm1Gc2RXVXBJRDArSUh0Y2JpQWdJQ0FnSUdOdmJuTjBJRnQyWVd4MVpTd2diR0ZpWld4ZElEMGdLSFZ5YkZaaGJIVmxJRDgvSUNjbktTNXpjR3hwZENnbkxDY3BPMXh1WEc0Z0lDQWdJQ0JoWTJNdWRtRnNkV1Z6TG5CMWMyZ29kVzVsYzJOaGNHVlZjbXhFWld4cGJXbDBaWEp6S0haaGJIVmxLU2s3WEc0Z0lDQWdJQ0JoWTJNdWRHVjRkSE11Y0hWemFDaDFibVZ6WTJGd1pWVnliRVJsYkdsdGFYUmxjbk1vYkdGaVpXd2dQejhnZG1Gc2RXVXBLVHRjYmx4dUlDQWdJQ0FnY21WMGRYSnVJR0ZqWXp0Y2JpQWdJQ0I5TEZ4dUlDQWdJSHRjYmlBZ0lDQWdJSFpoYkhWbGN6b2dXMTBzWEc0Z0lDQWdJQ0IwWlhoMGN6b2dXMTBzWEc0Z0lDQWdmVnh1SUNBcE8xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYkluWmhiSFZsY3lKZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGTFR5eE5RVUZOTERaQ1FVRnRSU3hEUVVGQk8wRkJRVUVzUlVGRGRrVXNXVUZCYjBJc1dVRkJLMElzUlVGQlFUdEJRVUV2UWl4SlFVRkJMRWxCUVVFc1EwRkJRU3haUVVGQkxFZEJRVUVzV1VGQlFTeERRVUZCTzBGQlFVRXNSMEZCWjBNN1FVRkJRU3hGUVVWdVJDeE5RVUZwUWl4SFFVRkJPMEZCUTNaQ0xFbEJRVThzVDBGQlFTeERRVUZCTEVsQlFVRXNSVUZCVHl4SlFVRkxMRU5CUVVFc1dVRkJRU3hEUVVGaExFdEJRVTBzUTBGQlFTeEpRVUZCTEVOQlFVRXNRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRlRU03UVVGQlFTeEZRVVZQTEU5QlFXOUNMRWRCUVVFN1FVRkRla0lzU1VGQlNTeEpRVUZCTEVsQlFVRXNRMEZCU3l4WlFVRmhMRU5CUVVFc1MwRkJRU3hEUVVGTkxGZEJRV0VzUlVGQlFUdEJRVU4yUXl4TlFVRkJMRTlCUVU4c1JVRkJReXhEUVVGQk8wRkJRVUVzUzBGRFZqdEJRVVZCTEVsQlFVOHNUMEZCUVN4RFFVRkRMRWxCUVVzc1EwRkJRU3hOUVVGQkxFVkJRVkVzUTBGQlFTeERRVUZCTzBGQlFVRXNSMEZEZGtJN1FVRkJRU3hGUVVWUExGZEJRVzlETEVkQlFVRTdRVUZEZWtNc1NVRkJTU3hKUVVGQkxFbEJRVUVzUTBGQlN5eFpRVUZoTEVOQlFVRXNTMEZCUVN4RFFVRk5MRmRCUVdFc1JVRkJRVHRCUVVOMlF5eE5RVUZCTEU5QlFVOHNSVUZCUXl4RFFVRkJPMEZCUVVFc1MwRkRWanRCUVVWQkxFbEJRVUVzVDBGQlR5eEZRVUZGTEVOQlFVTXNTVUZCU3l4RFFVRkJMRTFCUVVFc1MwRkJWeXhYUVVGWkxFTkJRVUVzU1VGQlFTeERRVUZMTEZsQlFXRXNRMEZCUVN4TFFVRkJMRU5CUVUwc1MwRkJUeXhGUVVGQkxFbEJRVUVzUTBGQlN5eFpRVUZoTEVOQlFVRXNTMEZCUVN4RFFVRk5MRWxCUVVrc1EwRkJSU3hGUVVGQkxFTkJRVUU3UVVGQlFTeEhRVU55Unp0QlFVRkJMRVZCUlU4c1kwRkJZeXhOUVVGdlF5eEZRVUZCTzBGQlEzWkVMRWxCUVVrc1NVRkJRU3hSUVVGQkxFZEJRVmNzVFVGQlR5eERRVUZCTEVsQlFVRXNRMEZCU3l4TlFVRlBMRVZCUVVFc1EwRkJRU3hEUVVGQk8wRkJSV3hETEVsQlFVRXNTVUZCU1N4WlFVRlpMRWxCUVUwc1JVRkJRVHRCUVV0d1FpeE5RVUZKTEVsQlFVRXNRMEZCUXl4SlFVRkxMRU5CUVVFc1dVRkJRU3hEUVVGaExGRkJRVlVzUlVGQlFUdEJRVU12UWl4UlFVRkJMRWxCUVVFc1EwRkJTeXhoUVVGaExHdENRVUZ4UWl4SFFVRkJMRWxCUVVFc1EwRkJRVHRCUVVGQkxFOUJRM3BETzBGQlJVRXNUVUZCUVN4TlFVRk5MRVZCUVVVc1RVRkJRVUVzUlVGQlFVRXNUMEZCUVVFc1JVRkJVU3hMUVVGTkxFVkJRVUVzUjBGQlNTeGpRVUZqTEZGQlFWRXNRMEZCUVN4RFFVRkJPMEZCUldoRUxFMUJRVXNzU1VGQlFTeERRVUZCTEZsQlFVRXNRMEZCWVN4aFFVRmpRU3hEUVVGQlFTeFBRVUZCUVN4RlFVRlJMRXRCUVVzc1EwRkJRU3hEUVVGQk8wRkJRVUVzUzBGREwwTTdRVUZCUVN4SFFVTkdPMEZCUTBZc1EwRkJRVHRCUVVWQkxGTkJRVk1zVjBGQlFTeERRVUZaTEZGQlFYVkNMRXRCUVdkRExFVkJRVUU3UVVGRE1VVXNSVUZCUVN4TlFVRkJMRWRCUVZNc1RVRkJUU3hQUVVGUkxFTkJRVUVzVFVGQlRTeERRVUZKTEVkQlFVRXNUVUZCUVN4SFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGQkxFTkJRVUU3UVVGRGFrUXNSVUZCUVN4TFFVRkJMRWRCUVZFc1RVRkJUU3hQUVVGUkxFTkJRVUVzUzBGQlN5eERRVUZKTEVkQlFVRXNTMEZCUVN4SFFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRk4wTXNSVUZCUVN4UFFVRlBMRTFCUVU4c1EwRkJRU3hIUVVGQkxFTkJRVWtzUTBGQlF5eExRVUZCTEVWQlFVOHNSMEZCVVN4TFFVRkJPMEZCUTJoRExFbEJRVWtzU1VGQlFTeExRVUZCTEV0QlFWVXNTMEZCWVN4RFFVRkJMRWxCUVVFc1MwRkJRU3hMUVVGVkxFbEJRVTBzUlVGQlFUdEJRVU42UXl4TlFVRlBMRTlCUVVFc1JVRkJRU3hEUVVGQk8wRkJRVUVzUzBGRFZEdEJRVVZCTEVsQlFVRXNTMEZCUVN4SFFVRlJMRTlCUVU4c1MwRkJTeXhEUVVGQkxFTkJRVUU3UVVGRmNFSXNTVUZCUVN4SlFVRkpMRTlCUVU4c1MwRkJUU3hEUVVGQkxFZEJRVUVzUTBGQlFTeERRVUZCTzBGQlEycENMRWxCUVVFc1NVRkJRU3hIUVVGUExGTkJRVk1zUzBGQllTeERRVUZCTEVsQlFVRXNTVUZCUVN4TFFVRlRMRWxCUVU4c1IwRkJRU3hMUVVGQkxFZEJRVkVzVDBGQlR5eEpRVUZKTEVOQlFVRXNRMEZCUVR0QlFVVm9SU3hKUVVGUExFOUJRVUVzZVVKQlFVRXNRMEZCTUVJc1QwRkJUeXhKUVVGSkxFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlF6ZERMRU5CUVVFc1EwRkJRVHRCUVVOSUxFTkJRVUU3UVVGRlFTeFRRVUZUTEdOQlFXTXNVMEZCY1VVc1JVRkJRVHRCUVVNeFJpeEZRVUZCTEZOQlFVRXNSMEZCV1N4TlFVRk5MRTlCUVZFc1EwRkJRU3hUUVVGVExFTkJRVWtzUjBGQlFTeFRRVUZCTEVkQlFWa3NRMEZCUXl4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVVM1JDeEZRVUZCTEU5QlFVOHNVMEZCVlN4RFFVRkJMRTFCUVVFN1FVRkJRU3hKUVVObUxFTkJRVU1zUzBGQlN5eFJRVUZoTEV0QlFVRTdRVUZEYWtJc1RVRkJRU3hOUVVGTkxFTkJRVU1zUzBGQlR5eEZRVUZCTEV0QlFVc3NTMEZCU3l4UlFVRlpMRWxCUVVFc1NVRkJRU3hIUVVGQkxGRkJRVUVzUjBGQlFTeEZRVUZCTEVWQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVFc1EwRkJRVHRCUVVWcVJDeE5RVUZCTEVkQlFVRXNRMEZCU1N4TlFVRlBMRU5CUVVFc1NVRkJRU3hEUVVGTExIRkNRVUZ6UWl4RFFVRkJMRXRCUVVzc1EwRkJReXhEUVVGQkxFTkJRVUU3UVVGRE5VTXNUVUZCUVN4SFFVRkJMRU5CUVVrc1MwRkJUU3hEUVVGQkxFbEJRVUVzUTBGQlN5eHhRa0ZCYzBJc1EwRkJRU3hMUVVGQkxFbEJRVUVzU1VGQlFTeEhRVUZCTEV0QlFVRXNSMEZCVXl4TFFVRkxMRU5CUVVNc1EwRkJRU3hEUVVGQk8wRkJSWEJFTEUxQlFVOHNUMEZCUVN4SFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOVU8wRkJRVUVzU1VGRFFUdEJRVUZCTEUxQlEwVXNVVUZCVVN4RlFVRkRPMEZCUVVFc1RVRkRWQ3hQUVVGUExFVkJRVU03UVVGQlFTeExRVU5XTzBGQlFVRXNSMEZEUml4RFFVRkJPMEZCUTBZN096czdJbjA9XG4iXSwibmFtZXMiOlsidmFsdWVzIl0sIm1hcHBpbmdzIjoiOztBQUtPLE1BQU0sNkJBQW1FLENBQUE7QUFDdkUsRUFBQSxXQUFBLENBQW9CLFlBQStCLEVBQUE7QUFBL0IsSUFBQSxJQUFBLENBQUEsWUFBQSxHQUFBLFlBQUEsQ0FBQTtBQUFBLEdBQUE7RUFFbkIsTUFBaUIsR0FBQTtBQUNoQixJQUFBLE9BQUEsQ0FBQSxJQUFBLEVBQU8sSUFBSyxDQUFBLFlBQUEsQ0FBYSxLQUFNLENBQUEsSUFBQSxDQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUE7RUFHakMsT0FBb0IsR0FBQTtBQUNyQixJQUFBLElBQUEsSUFBQSxDQUFLLFlBQWEsQ0FBQSxLQUFBLENBQU0sV0FBYSxFQUFBO0FBQ3ZDLE1BQUEsT0FBTyxFQUFBLENBQUE7QUFBQyxLQUFBO0FBR0gsSUFBQSxPQUFBLENBQUMsSUFBSyxDQUFBLE1BQUEsRUFBUSxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR2hCLFdBQW9DLEdBQUE7QUFDckMsSUFBQSxJQUFBLElBQUEsQ0FBSyxZQUFhLENBQUEsS0FBQSxDQUFNLFdBQWEsRUFBQTtBQUN2QyxNQUFBLE9BQU8sRUFBQSxDQUFBO0FBQUMsS0FBQTtBQUdWLElBQUEsT0FBTyxFQUFFLENBQUMsSUFBSyxDQUFBLE1BQUEsS0FBVyxXQUFZLENBQUEsSUFBQSxDQUFLLFlBQWEsQ0FBQSxLQUFBLENBQU0sS0FBTyxFQUFBLElBQUEsQ0FBSyxZQUFhLENBQUEsS0FBQSxDQUFNLElBQUksQ0FBRSxFQUFBLENBQUE7QUFBQSxHQUFBO0FBRzlGLEVBQUEsYUFBQSxDQUFjLE1BQW9DLEVBQUE7QUFDbkQsSUFBQSxJQUFBLFFBQUEsR0FBVyxNQUFPLENBQUEsSUFBQSxDQUFLLE1BQU8sRUFBQSxDQUFBLENBQUE7QUFFbEMsSUFBQSxJQUFJLFlBQVksSUFBTSxFQUFBO0FBS2hCLE1BQUEsSUFBQSxDQUFDLElBQUssQ0FBQSxZQUFBLENBQWEsUUFBVSxFQUFBO0FBQy9CLFFBQUEsSUFBQSxDQUFLLGFBQWEsa0JBQXFCLEdBQUEsSUFBQSxDQUFBO0FBQUEsT0FBQTtBQUd6QyxNQUFBLE1BQU0sRUFBRSxNQUFBQSxFQUFBQSxPQUFBQSxFQUFRLEtBQU0sRUFBQSxHQUFJLGNBQWMsUUFBUSxDQUFBLENBQUE7QUFFM0MsTUFBQSxJQUFBLENBQUEsWUFBQSxDQUFhLGFBQWNBLENBQUFBLE9BQUFBLEVBQVEsS0FBSyxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQy9DLEdBQUE7QUFFSixDQUFBO0FBRUEsU0FBUyxXQUFBLENBQVksUUFBdUIsS0FBZ0MsRUFBQTtBQUMxRSxFQUFBLE1BQUEsR0FBUyxNQUFNLE9BQVEsQ0FBQSxNQUFNLENBQUksR0FBQSxNQUFBLEdBQVMsQ0FBQyxNQUFNLENBQUEsQ0FBQTtBQUNqRCxFQUFBLEtBQUEsR0FBUSxNQUFNLE9BQVEsQ0FBQSxLQUFLLENBQUksR0FBQSxLQUFBLEdBQVEsQ0FBQyxLQUFLLENBQUEsQ0FBQTtBQUU3QyxFQUFBLE9BQU8sTUFBTyxDQUFBLEdBQUEsQ0FBSSxDQUFDLEtBQUEsRUFBTyxHQUFRLEtBQUE7QUFDNUIsSUFBQSxJQUFBLEtBQUEsS0FBVSxLQUFhLENBQUEsSUFBQSxLQUFBLEtBQVUsSUFBTSxFQUFBO0FBQ2xDLE1BQUEsT0FBQSxFQUFBLENBQUE7QUFBQSxLQUFBO0FBR1QsSUFBQSxLQUFBLEdBQVEsT0FBTyxLQUFLLENBQUEsQ0FBQTtBQUVwQixJQUFBLElBQUksT0FBTyxLQUFNLENBQUEsR0FBQSxDQUFBLENBQUE7QUFDakIsSUFBQSxJQUFBLEdBQU8sU0FBUyxLQUFhLENBQUEsSUFBQSxJQUFBLEtBQVMsSUFBTyxHQUFBLEtBQUEsR0FBUSxPQUFPLElBQUksQ0FBQSxDQUFBO0FBRXpELElBQUEsT0FBQSx5QkFBQSxDQUEwQixPQUFPLElBQUksQ0FBQSxDQUFBO0dBQzdDLENBQUEsQ0FBQTtBQUNILENBQUE7QUFFQSxTQUFTLGNBQWMsU0FBcUUsRUFBQTtBQUMxRixFQUFBLFNBQUEsR0FBWSxNQUFNLE9BQVEsQ0FBQSxTQUFTLENBQUksR0FBQSxTQUFBLEdBQVksQ0FBQyxTQUFTLENBQUEsQ0FBQTtBQUU3RCxFQUFBLE9BQU8sU0FBVSxDQUFBLE1BQUE7QUFDZixJQUFBLENBQUMsS0FBSyxRQUFhLEtBQUE7QUFDakIsTUFBTSxNQUFBLENBQUMsT0FBTyxLQUFLLENBQUEsR0FBQSxDQUFLLFlBQVksSUFBQSxHQUFBLFFBQUEsR0FBQSxFQUFJLEVBQUEsS0FBQSxDQUFNLEdBQUcsQ0FBQSxDQUFBO0FBRWpELE1BQUEsR0FBQSxDQUFJLE1BQU8sQ0FBQSxJQUFBLENBQUsscUJBQXNCLENBQUEsS0FBSyxDQUFDLENBQUEsQ0FBQTtBQUM1QyxNQUFBLEdBQUEsQ0FBSSxNQUFNLElBQUssQ0FBQSxxQkFBQSxDQUFzQixTQUFBLElBQUEsR0FBQSxLQUFBLEdBQVMsS0FBSyxDQUFDLENBQUEsQ0FBQTtBQUU3QyxNQUFBLE9BQUEsR0FBQSxDQUFBO0FBQUEsS0FBQTtBQUVULElBQUE7QUFDRSxNQUFBLE1BQUEsRUFBUSxFQUFBO0FBQ1IsTUFBQSxLQUFBLEVBQU8sRUFBQTtBQUFDLEtBQUE7QUFDVixHQUFBLENBQUE7QUFFSjs7OzsifQ==
@@ -0,0 +1,13 @@
1
+ const allActiveGroupByVariables = /* @__PURE__ */ new Set();
2
+ function findActiveGroupByVariablesByUid(dsUid) {
3
+ var _a;
4
+ for (const groupByVariable of allActiveGroupByVariables.values()) {
5
+ if (((_a = groupByVariable.state.datasource) == null ? void 0 : _a.uid) === dsUid) {
6
+ return groupByVariable;
7
+ }
8
+ }
9
+ return void 0;
10
+ }
11
+
12
+ export { allActiveGroupByVariables, findActiveGroupByVariablesByUid };
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXNCeVVpZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdmFyaWFibGVzL2dyb3VwYnkvZmluZEFjdGl2ZUdyb3VwQnlWYXJpYWJsZXNCeVVpZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBhbGxBY3RpdmVHcm91cEJ5VmFyaWFibGVzID0gLyogQF9fUFVSRV9fICovIG5ldyBTZXQoKTtcbmZ1bmN0aW9uIGZpbmRBY3RpdmVHcm91cEJ5VmFyaWFibGVzQnlVaWQoZHNVaWQpIHtcbiAgdmFyIF9hO1xuICBmb3IgKGNvbnN0IGdyb3VwQnlWYXJpYWJsZSBvZiBhbGxBY3RpdmVHcm91cEJ5VmFyaWFibGVzLnZhbHVlcygpKSB7XG4gICAgaWYgKCgoX2EgPSBncm91cEJ5VmFyaWFibGUuc3RhdGUuZGF0YXNvdXJjZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hLnVpZCkgPT09IGRzVWlkKSB7XG4gICAgICByZXR1cm4gZ3JvdXBCeVZhcmlhYmxlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdm9pZCAwO1xufVxuXG5leHBvcnQgeyBhbGxBY3RpdmVHcm91cEJ5VmFyaWFibGVzLCBmaW5kQWN0aXZlR3JvdXBCeVZhcmlhYmxlc0J5VWlkIH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVptbHVaRUZqZEdsMlpVZHliM1Z3UW5sV1lYSnBZV0pzWlhOQ2VWVnBaQzVxY3lJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dkxpNHZMaTR2YzNKakwzWmhjbWxoWW14bGN5OW5jbTkxY0dKNUwyWnBibVJCWTNScGRtVkhjbTkxY0VKNVZtRnlhV0ZpYkdWelFubFZhV1F1ZEhNaVhTd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dSM0p2ZFhCQ2VWWmhjbWxoWW14bElIMGdabkp2YlNBbkxpOUhjbTkxY0VKNVZtRnlhV0ZpYkdVbk8xeHVYRzVsZUhCdmNuUWdZMjl1YzNRZ1lXeHNRV04wYVhabFIzSnZkWEJDZVZaaGNtbGhZbXhsY3lBOUlHNWxkeUJUWlhROFIzSnZkWEJDZVZaaGNtbGhZbXhsUGlncE8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdabWx1WkVGamRHbDJaVWR5YjNWd1FubFdZWEpwWVdKc1pYTkNlVlZwWkNoa2MxVnBaRG9nYzNSeWFXNW5JSHdnZFc1a1pXWnBibVZrS1RvZ1IzSnZkWEJDZVZaaGNtbGhZbXhsSUh3Z2RXNWtaV1pwYm1Wa0lIdGNiaUFnWm05eUlDaGpiMjV6ZENCbmNtOTFjRUo1Vm1GeWFXRmliR1VnYjJZZ1lXeHNRV04wYVhabFIzSnZkWEJDZVZaaGNtbGhZbXhsY3k1MllXeDFaWE1vS1NrZ2UxeHVJQ0FnSUdsbUlDaG5jbTkxY0VKNVZtRnlhV0ZpYkdVdWMzUmhkR1V1WkdGMFlYTnZkWEpqWlQ4dWRXbGtJRDA5UFNCa2MxVnBaQ2tnZTF4dUlDQWdJQ0FnY21WMGRYSnVJR2R5YjNWd1FubFdZWEpwWVdKc1pUdGNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQnlaWFIxY200Z2RXNWtaV1pwYm1Wa08xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVWaExFMUJRVUVzZVVKQlFVRXNkVUpCUVdkRExFZEJRWEZDTEVkQlFVRTdRVUZGTTBRc1UwRkJVeXhuUTBGQlowTXNTMEZCZDBRc1JVRkJRVHRCUVVwNFJ5eEZRVUZCTEVsQlFVRXNSVUZCUVN4RFFVRkJPMEZCUzBVc1JVRkJWeXhMUVVGQkxFMUJRVUVzWlVGQlFTeEpRVUZ0UWl4NVFrRkJNRUlzUTBGQlFTeE5RVUZCTEVWQlFWVXNSVUZCUVR0QlFVTm9SU3hKUVVGQkxFbEJRVUVzUTBGQlFTeERRVUZKTEVWQlFXZENMRWRCUVVFc1pVRkJRU3hEUVVGQkxFdEJRVUVzUTBGQlRTeFZRVUYwUWl4TFFVRkJMRWxCUVVFc1IwRkJRU3hMUVVGQkxFTkJRVUVzUjBGQlFTeEZRVUZCTEVOQlFXdERMRk5CUVZFc1MwRkJUeXhGUVVGQk8wRkJRMjVFTEUxQlFVOHNUMEZCUVN4bFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOVU8wRkJRVUVzUjBGRFJqdEJRVVZCTEVWQlFVOHNUMEZCUVN4TFFVRkJMRU5CUVVFc1EwRkJRVHRCUVVOVU96czdPeUo5XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRWEsTUFBQSx5QkFBQSx1QkFBZ0MsR0FBcUIsR0FBQTtBQUUzRCxTQUFTLGdDQUFnQyxLQUF3RCxFQUFBO0FBSnhHLEVBQUEsSUFBQSxFQUFBLENBQUE7QUFLYSxFQUFBLEtBQUEsTUFBQSxlQUFBLElBQW1CLHlCQUEwQixDQUFBLE1BQUEsRUFBVSxFQUFBO0FBQ2hFLElBQUksSUFBQSxDQUFBLENBQUEsRUFBQSxHQUFnQixnQkFBQSxLQUFNLENBQUEsVUFBQSxLQUF0QixPQUFBLEtBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBa0MsU0FBUSxLQUFPLEVBQUE7QUFDNUMsTUFBQSxPQUFBLGVBQUEsQ0FBQTtBQUFBLEtBQUE7QUFDVCxHQUFBO0FBR0ssRUFBQSxPQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQ1Q7Ozs7In0=
@@ -0,0 +1,40 @@
1
+ import { getFieldAccessor } from './fieldAccessorCache.js';
2
+
3
+ class ScopedVarsVariable {
4
+ constructor(name, value) {
5
+ this.state = { name, value, type: "scopedvar" };
6
+ }
7
+ getValue(fieldPath) {
8
+ let { value } = this.state;
9
+ let realValue = value.value;
10
+ if (fieldPath) {
11
+ realValue = getFieldAccessor(fieldPath)(value.value);
12
+ } else {
13
+ realValue = value.value;
14
+ }
15
+ if (realValue === "string" || realValue === "number" || realValue === "boolean") {
16
+ return realValue;
17
+ }
18
+ return String(realValue);
19
+ }
20
+ getValueText() {
21
+ const { value } = this.state;
22
+ if (value.text != null) {
23
+ return String(value.text);
24
+ }
25
+ return String(value);
26
+ }
27
+ }
28
+ let scopedVarsVariable;
29
+ function getSceneVariableForScopedVar(name, value) {
30
+ if (!scopedVarsVariable) {
31
+ scopedVarsVariable = new ScopedVarsVariable(name, value);
32
+ } else {
33
+ scopedVarsVariable.state.name = name;
34
+ scopedVarsVariable.state.value = value;
35
+ }
36
+ return scopedVarsVariable;
37
+ }
38
+
39
+ export { ScopedVarsVariable, getSceneVariableForScopedVar };
40
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NvcGVkVmFyc1ZhcmlhYmxlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvaW50ZXJwb2xhdGlvbi9TY29wZWRWYXJzVmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0RmllbGRBY2Nlc3NvciB9IGZyb20gJy4vZmllbGRBY2Nlc3NvckNhY2hlLmpzJztcblxuY2xhc3MgU2NvcGVkVmFyc1ZhcmlhYmxlIHtcbiAgY29uc3RydWN0b3IobmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLnN0YXRlID0geyBuYW1lLCB2YWx1ZSwgdHlwZTogXCJzY29wZWR2YXJcIiB9O1xuICB9XG4gIGdldFZhbHVlKGZpZWxkUGF0aCkge1xuICAgIGxldCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGxldCByZWFsVmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgICBpZiAoZmllbGRQYXRoKSB7XG4gICAgICByZWFsVmFsdWUgPSBnZXRGaWVsZEFjY2Vzc29yKGZpZWxkUGF0aCkodmFsdWUudmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZWFsVmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgICB9XG4gICAgaWYgKHJlYWxWYWx1ZSA9PT0gXCJzdHJpbmdcIiB8fCByZWFsVmFsdWUgPT09IFwibnVtYmVyXCIgfHwgcmVhbFZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIHJlYWxWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIFN0cmluZyhyZWFsVmFsdWUpO1xuICB9XG4gIGdldFZhbHVlVGV4dCgpIHtcbiAgICBjb25zdCB7IHZhbHVlIH0gPSB0aGlzLnN0YXRlO1xuICAgIGlmICh2YWx1ZS50ZXh0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUudGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICB9XG59XG5sZXQgc2NvcGVkVmFyc1ZhcmlhYmxlO1xuZnVuY3Rpb24gZ2V0U2NlbmVWYXJpYWJsZUZvclNjb3BlZFZhcihuYW1lLCB2YWx1ZSkge1xuICBpZiAoIXNjb3BlZFZhcnNWYXJpYWJsZSkge1xuICAgIHNjb3BlZFZhcnNWYXJpYWJsZSA9IG5ldyBTY29wZWRWYXJzVmFyaWFibGUobmFtZSwgdmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHNjb3BlZFZhcnNWYXJpYWJsZS5zdGF0ZS5uYW1lID0gbmFtZTtcbiAgICBzY29wZWRWYXJzVmFyaWFibGUuc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gc2NvcGVkVmFyc1ZhcmlhYmxlO1xufVxuXG5leHBvcnQgeyBTY29wZWRWYXJzVmFyaWFibGUsIGdldFNjZW5lVmFyaWFibGVGb3JTY29wZWRWYXIgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pVTJOdmNHVmtWbUZ5YzFaaGNtbGhZbXhsTG1weklpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOHVMaTh1TGk5emNtTXZkbUZ5YVdGaWJHVnpMMmx1ZEdWeWNHOXNZWFJwYjI0dlUyTnZjR1ZrVm1GeWMxWmhjbWxoWW14bExuUnpJbDBzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3SUZOamIzQmxaRlpoY2lCOUlHWnliMjBnSjBCbmNtRm1ZVzVoTDJSaGRHRW5PMXh1WEc1cGJYQnZjblFnZXlCV1lYSnBZV0pzWlZaaGJIVmxJSDBnWm5KdmJTQW5MaTR2ZEhsd1pYTW5PMXh1WEc1cGJYQnZjblFnZXlCR2IzSnRZWFJXWVhKcFlXSnNaU0I5SUdaeWIyMGdKeTR2Wm05eWJXRjBVbVZuYVhOMGNua25PMXh1YVcxd2IzSjBJSHNnWjJWMFJtbGxiR1JCWTJObGMzTnZjaUI5SUdaeWIyMGdKeTR2Wm1sbGJHUkJZMk5sYzNOdmNrTmhZMmhsSnp0Y2JseHVaWGh3YjNKMElHTnNZWE56SUZOamIzQmxaRlpoY25OV1lYSnBZV0pzWlNCcGJYQnNaVzFsYm5SeklFWnZjbTFoZEZaaGNtbGhZbXhsSUh0Y2JpQWdjSFZpYkdsaklITjBZWFJsT2lCN0lHNWhiV1U2SUhOMGNtbHVaenNnZG1Gc2RXVTZJRk5qYjNCbFpGWmhjanNnZEhsd1pUb2djM1J5YVc1bklIMDdYRzVjYmlBZ2NIVmliR2xqSUdOdmJuTjBjblZqZEc5eUtHNWhiV1U2SUhOMGNtbHVaeXdnZG1Gc2RXVTZJRk5qYjNCbFpGWmhjaWtnZTF4dUlDQWdJSFJvYVhNdWMzUmhkR1VnUFNCN0lHNWhiV1VzSUhaaGJIVmxMQ0IwZVhCbE9pQW5jMk52Y0dWa2RtRnlKeUI5TzF4dUlDQjlYRzVjYmlBZ2NIVmliR2xqSUdkbGRGWmhiSFZsS0dacFpXeGtVR0YwYURvZ2MzUnlhVzVuS1RvZ1ZtRnlhV0ZpYkdWV1lXeDFaU0I3WEc0Z0lDQWdiR1YwSUhzZ2RtRnNkV1VnZlNBOUlIUm9hWE11YzNSaGRHVTdYRzRnSUNBZ2JHVjBJSEpsWVd4V1lXeDFaU0E5SUhaaGJIVmxMblpoYkhWbE8xeHVYRzRnSUNBZ2FXWWdLR1pwWld4a1VHRjBhQ2tnZTF4dUlDQWdJQ0FnY21WaGJGWmhiSFZsSUQwZ1oyVjBSbWxsYkdSQlkyTmxjM052Y2lobWFXVnNaRkJoZEdncEtIWmhiSFZsTG5aaGJIVmxLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2NtVmhiRlpoYkhWbElEMGdkbUZzZFdVdWRtRnNkV1U3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdhV1lnS0hKbFlXeFdZV3gxWlNBOVBUMGdKM04wY21sdVp5Y2dmSHdnY21WaGJGWmhiSFZsSUQwOVBTQW5iblZ0WW1WeUp5QjhmQ0J5WldGc1ZtRnNkV1VnUFQwOUlDZGliMjlzWldGdUp5a2dlMXh1SUNBZ0lDQWdjbVYwZFhKdUlISmxZV3hXWVd4MVpUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnVTNSeWFXNW5LSEpsWVd4V1lXeDFaU2s3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWjJWMFZtRnNkV1ZVWlhoMEtDazZJSE4wY21sdVp5QjdYRzRnSUNBZ1kyOXVjM1FnZXlCMllXeDFaU0I5SUQwZ2RHaHBjeTV6ZEdGMFpUdGNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTNTBaWGgwSUNFOUlHNTFiR3dwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJUZEhKcGJtY29kbUZzZFdVdWRHVjRkQ2s3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlGTjBjbWx1WnloMllXeDFaU2s3WEc0Z0lIMWNibjFjYmx4dWJHVjBJSE5qYjNCbFpGWmhjbk5XWVhKcFlXSnNaVG9nVTJOdmNHVmtWbUZ5YzFaaGNtbGhZbXhsSUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzR2S2lwY2JpQXFJRkpsZFhObGN5QmhJSE5wYm1kc1pTQnBibk4wWVc1alpTQjBieUJoZG05cFpDQjFibTVsWTJWemMyRnllU0J0WlcxdmNua2dZV3hzYjJOaGRHbHZibk5jYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRk5qWlc1bFZtRnlhV0ZpYkdWR2IzSlRZMjl3WldSV1lYSW9ibUZ0WlRvZ2MzUnlhVzVuTENCMllXeDFaVG9nVTJOdmNHVmtWbUZ5S1RvZ1JtOXliV0YwVm1GeWFXRmliR1VnZTF4dUlDQnBaaUFvSVhOamIzQmxaRlpoY25OV1lYSnBZV0pzWlNrZ2UxeHVJQ0FnSUhOamIzQmxaRlpoY25OV1lYSnBZV0pzWlNBOUlHNWxkeUJUWTI5d1pXUldZWEp6Vm1GeWFXRmliR1VvYm1GdFpTd2dkbUZzZFdVcE8xeHVJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lITmpiM0JsWkZaaGNuTldZWEpwWVdKc1pTNXpkR0YwWlM1dVlXMWxJRDBnYm1GdFpUdGNiaUFnSUNCelkyOXdaV1JXWVhKelZtRnlhV0ZpYkdVdWMzUmhkR1V1ZG1Gc2RXVWdQU0IyWVd4MVpUdGNiaUFnZlZ4dVhHNGdJSEpsZEhWeWJpQnpZMjl3WldSV1lYSnpWbUZ5YVdGaWJHVTdYRzU5WEc0aVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRlBUeXhOUVVGTkxHdENRVUUyUXl4RFFVRkJPMEZCUVVFc1JVRkhha1FzVjBGQlFTeERRVUZaTEUxQlFXTXNTMEZCYTBJc1JVRkJRVHRCUVVOcVJDeEpRVUZCTEVsQlFVRXNRMEZCU3l4TFFVRlJMRWRCUVVFc1JVRkJSU3hKUVVGTkxFVkJRVUVzUzBGQlFTeEZRVUZQTEUxQlFVMHNWMEZCV1N4RlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOb1JEdEJRVUZCTEVWQlJVOHNVMEZCVXl4VFFVRnJReXhGUVVGQk8wRkJRMmhFTEVsQlFVa3NTVUZCUVN4RlFVRkZMRXRCUVUwc1JVRkJRU3hIUVVGSkxFbEJRVXNzUTBGQlFTeExRVUZCTEVOQlFVRTdRVUZEY2tJc1NVRkJRU3hKUVVGSkxGbEJRVmtzUzBGQlRTeERRVUZCTEV0QlFVRXNRMEZCUVR0QlFVVjBRaXhKUVVGQkxFbEJRVWtzVTBGQlZ5eEZRVUZCTzBGQlEySXNUVUZCUVN4VFFVRkJMRWRCUVZrc1owSkJRV2xDTEVOQlFVRXNVMEZCVXl4RFFVRkZMRU5CUVVFc1MwRkJRU3hEUVVGTkxFdEJRVXNzUTBGQlFTeERRVUZCTzBGQlFVRXNTMEZET1VNc1RVRkJRVHRCUVVOTUxFMUJRVUVzVTBGQlFTeEhRVUZaTEV0QlFVMHNRMEZCUVN4TFFVRkJMRU5CUVVFN1FVRkJRU3hMUVVOd1FqdEJRVVZCTEVsQlFVRXNTVUZCU1N4VFFVRmpMRXRCUVVFc1VVRkJRU3hKUVVGWkxGTkJRV01zUzBGQlFTeFJRVUZCTEVsQlFWa3NZMEZCWXl4VFFVRlhMRVZCUVVFN1FVRkRMMFVzVFVGQlR5eFBRVUZCTEZOQlFVRXNRMEZCUVR0QlFVRkJMRXRCUTFRN1FVRkZRU3hKUVVGQkxFOUJRVThzVDBGQlR5eFRRVUZUTEVOQlFVRXNRMEZCUVR0QlFVRkJMRWRCUTNwQ08wRkJRVUVzUlVGRlR5eFpRVUYxUWl4SFFVRkJPMEZCUXpWQ0xFbEJRVTBzVFVGQlFTeEZRVUZGTEV0QlFVMHNSVUZCUVN4SFFVRkpMRWxCUVVzc1EwRkJRU3hMUVVGQkxFTkJRVUU3UVVGRmRrSXNTVUZCU1N4SlFVRkJMRXRCUVVFc1EwRkJUU3hSUVVGUkxFbEJRVTBzUlVGQlFUdEJRVU4wUWl4TlFVRlBMRTlCUVVFc1RVRkJRU3hEUVVGUExFMUJRVTBzU1VGQlNTeERRVUZCTEVOQlFVRTdRVUZCUVN4TFFVTXhRanRCUVVWQkxFbEJRVUVzVDBGQlR5eFBRVUZQTEV0QlFVc3NRMEZCUVN4RFFVRkJPMEZCUVVFc1IwRkRja0k3UVVGRFJpeERRVUZCTzBGQlJVRXNTVUZCU1N4clFrRkJRU3hEUVVGQk8wRkJTMWtzVTBGQlFTdzBRa0ZCUVN4RFFVRTJRaXhOUVVGakxFdEJRV3RETEVWQlFVRTdRVUZETTBZc1JVRkJRU3hKUVVGSkxFTkJRVU1zYTBKQlFXOUNMRVZCUVVFN1FVRkRka0lzU1VGQmNVSXNhMEpCUVVFc1IwRkJRU3hKUVVGSkxHdENRVUZ0UWl4RFFVRkJMRWxCUVVFc1JVRkJUU3hMUVVGTExFTkJRVUVzUTBGQlFUdEJRVUZCTEVkQlEyeEVMRTFCUVVFN1FVRkRUQ3hKUVVGQkxHdENRVUZCTEVOQlFXMUNMRTFCUVUwc1NVRkJUeXhIUVVGQkxFbEJRVUVzUTBGQlFUdEJRVU5vUXl4SlFVRkJMR3RDUVVGQkxFTkJRVzFDTEUxQlFVMHNTMEZCVVN4SFFVRkJMRXRCUVVFc1EwRkJRVHRCUVVGQkxFZEJRMjVETzBGQlJVRXNSVUZCVHl4UFFVRkJMR3RDUVVGQkxFTkJRVUU3UVVGRFZEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT08sTUFBTSxrQkFBNkMsQ0FBQTtBQUdqRCxFQUFBLFdBQUEsQ0FBWSxNQUFjLEtBQWtCLEVBQUE7QUFDakQsSUFBQSxJQUFBLENBQUssS0FBUSxHQUFBLEVBQUUsSUFBTSxFQUFBLEtBQUEsRUFBTyxNQUFNLFdBQVksRUFBQSxDQUFBO0FBQUEsR0FBQTtBQUd6QyxFQUFBLFFBQUEsQ0FBUyxTQUFrQyxFQUFBO0FBQzVDLElBQUEsSUFBQSxFQUFFLEtBQU0sRUFBQSxHQUFJLElBQUssQ0FBQSxLQUFBLENBQUE7QUFDckIsSUFBQSxJQUFJLFlBQVksS0FBTSxDQUFBLEtBQUEsQ0FBQTtBQUV0QixJQUFBLElBQUksU0FBVyxFQUFBO0FBQ2IsTUFBQSxTQUFBLEdBQVksZ0JBQWlCLENBQUEsU0FBUyxDQUFFLENBQUEsS0FBQSxDQUFNLEtBQUssQ0FBQSxDQUFBO0tBQzlDLE1BQUE7QUFDTCxNQUFBLFNBQUEsR0FBWSxLQUFNLENBQUEsS0FBQSxDQUFBO0FBQUEsS0FBQTtBQUdwQixJQUFBLElBQUksU0FBYyxLQUFBLFFBQUEsSUFBWSxTQUFjLEtBQUEsUUFBQSxJQUFZLGNBQWMsU0FBVyxFQUFBO0FBQ3hFLE1BQUEsT0FBQSxTQUFBLENBQUE7QUFBQSxLQUFBO0FBR1QsSUFBQSxPQUFPLE9BQU8sU0FBUyxDQUFBLENBQUE7QUFBQSxHQUFBO0VBR2xCLFlBQXVCLEdBQUE7QUFDdEIsSUFBQSxNQUFBLEVBQUUsS0FBTSxFQUFBLEdBQUksSUFBSyxDQUFBLEtBQUEsQ0FBQTtBQUVuQixJQUFBLElBQUEsS0FBQSxDQUFNLFFBQVEsSUFBTSxFQUFBO0FBQ2YsTUFBQSxPQUFBLE1BQUEsQ0FBTyxNQUFNLElBQUksQ0FBQSxDQUFBO0FBQUEsS0FBQTtBQUcxQixJQUFBLE9BQU8sT0FBTyxLQUFLLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFdkIsQ0FBQTtBQUVBLElBQUksa0JBQUEsQ0FBQTtBQUtZLFNBQUEsNEJBQUEsQ0FBNkIsTUFBYyxLQUFrQyxFQUFBO0FBQzNGLEVBQUEsSUFBSSxDQUFDLGtCQUFvQixFQUFBO0FBQ0YsSUFBQSxrQkFBQSxHQUFBLElBQUksa0JBQW1CLENBQUEsSUFBQSxFQUFNLEtBQUssQ0FBQSxDQUFBO0dBQ2xELE1BQUE7QUFDTCxJQUFBLGtCQUFBLENBQW1CLE1BQU0sSUFBTyxHQUFBLElBQUEsQ0FBQTtBQUNoQyxJQUFBLGtCQUFBLENBQW1CLE1BQU0sS0FBUSxHQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHNUIsRUFBQSxPQUFBLGtCQUFBLENBQUE7QUFDVDs7OzsifQ==
@@ -0,0 +1,21 @@
1
+ import { SceneDataNode } from '../../core/SceneDataNode.js';
2
+ import { SceneObjectBase } from '../../core/SceneObjectBase.js';
3
+ import { SceneTimeRange } from '../../core/SceneTimeRange.js';
4
+
5
+ const EmptyDataNode = new SceneDataNode();
6
+ const DefaultTimeRange = new SceneTimeRange();
7
+ class EmptyVariableSetImpl extends SceneObjectBase {
8
+ constructor() {
9
+ super({ variables: [] });
10
+ }
11
+ getByName(name) {
12
+ return void 0;
13
+ }
14
+ isVariableLoadingOrWaitingToUpdate(variable) {
15
+ return false;
16
+ }
17
+ }
18
+ const EmptyVariableSet = new EmptyVariableSetImpl();
19
+
20
+ export { DefaultTimeRange, EmptyDataNode, EmptyVariableSet, EmptyVariableSetImpl };
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3ZhcmlhYmxlcy9pbnRlcnBvbGF0aW9uL2RlZmF1bHRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjZW5lRGF0YU5vZGUgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lRGF0YU5vZGUuanMnO1xuaW1wb3J0IHsgU2NlbmVPYmplY3RCYXNlIH0gZnJvbSAnLi4vLi4vY29yZS9TY2VuZU9iamVjdEJhc2UuanMnO1xuaW1wb3J0IHsgU2NlbmVUaW1lUmFuZ2UgfSBmcm9tICcuLi8uLi9jb3JlL1NjZW5lVGltZVJhbmdlLmpzJztcblxuY29uc3QgRW1wdHlEYXRhTm9kZSA9IG5ldyBTY2VuZURhdGFOb2RlKCk7XG5jb25zdCBEZWZhdWx0VGltZVJhbmdlID0gbmV3IFNjZW5lVGltZVJhbmdlKCk7XG5jbGFzcyBFbXB0eVZhcmlhYmxlU2V0SW1wbCBleHRlbmRzIFNjZW5lT2JqZWN0QmFzZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKHsgdmFyaWFibGVzOiBbXSB9KTtcbiAgfVxuICBnZXRCeU5hbWUobmFtZSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgaXNWYXJpYWJsZUxvYWRpbmdPcldhaXRpbmdUb1VwZGF0ZSh2YXJpYWJsZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuY29uc3QgRW1wdHlWYXJpYWJsZVNldCA9IG5ldyBFbXB0eVZhcmlhYmxlU2V0SW1wbCgpO1xuXG5leHBvcnQgeyBEZWZhdWx0VGltZVJhbmdlLCBFbXB0eURhdGFOb2RlLCBFbXB0eVZhcmlhYmxlU2V0LCBFbXB0eVZhcmlhYmxlU2V0SW1wbCB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR1ZtWVhWc2RITXVhbk1pTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1THk0dUx5NHVMM055WXk5MllYSnBZV0pzWlhNdmFXNTBaWEp3YjJ4aGRHbHZiaTlrWldaaGRXeDBjeTUwY3lKZExDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ2V5QlRZMlZ1WlVSaGRHRk9iMlJsSUgwZ1puSnZiU0FuTGk0dkxpNHZZMjl5WlM5VFkyVnVaVVJoZEdGT2IyUmxKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxUMkpxWldOMFFtRnpaU0I5SUdaeWIyMGdKeTR1THk0dUwyTnZjbVV2VTJObGJtVlBZbXBsWTNSQ1lYTmxKenRjYm1sdGNHOXlkQ0I3SUZOalpXNWxWR2x0WlZKaGJtZGxJSDBnWm5KdmJTQW5MaTR2TGk0dlkyOXlaUzlUWTJWdVpWUnBiV1ZTWVc1blpTYzdYRzVwYlhCdmNuUWdleUJUWTJWdVpWWmhjbWxoWW14bExDQlRZMlZ1WlZaaGNtbGhZbXhsY3l3Z1UyTmxibVZXWVhKcFlXSnNaVk5sZEZOMFlYUmxMQ0JUWTJWdVpWWmhjbWxoWW14bFUzUmhkR1VnZlNCbWNtOXRJQ2N1TGk5MGVYQmxjeWM3WEc1Y2JtVjRjRzl5ZENCamIyNXpkQ0JGYlhCMGVVUmhkR0ZPYjJSbElEMGdibVYzSUZOalpXNWxSR0YwWVU1dlpHVW9LVHRjYm1WNGNHOXlkQ0JqYjI1emRDQkVaV1poZFd4MFZHbHRaVkpoYm1kbElEMGdibVYzSUZOalpXNWxWR2x0WlZKaGJtZGxLQ2s3WEc1Y2JpOHFLbHh1SUNvZ1UybHVZMlVnZEdocGN5QnBjeUIxYzJWa0lHWnliMjBnYzJObGJtVkhjbUZ3YUM1blpYUldZWEpwWVdKc1pYTWdkMlVnWTJGdWJtOTBJSEpsWm1WeVpXNWpaU0JUWTJWdVpWWmhjbWxoWW14bFUyVjBJR2hsY21VZ1lYTWdhWFFnZDI5MWJHUWdZM0psWVhSbElHRWdZMmx5WTNWc1lYSWdjbVZtWlhKbGJtTmxYRzRnS2k5Y2JtVjRjRzl5ZENCamJHRnpjeUJGYlhCMGVWWmhjbWxoWW14bFUyVjBTVzF3YkNCbGVIUmxibVJ6SUZOalpXNWxUMkpxWldOMFFtRnpaVHhUWTJWdVpWWmhjbWxoWW14bFUyVjBVM1JoZEdVK0lHbHRjR3hsYldWdWRITWdVMk5sYm1WV1lYSnBZV0pzWlhNZ2UxeHVJQ0J3ZFdKc2FXTWdZMjl1YzNSeWRXTjBiM0lvS1NCN1hHNGdJQ0FnYzNWd1pYSW9leUIyWVhKcFlXSnNaWE02SUZ0ZElIMHBPMXh1SUNCOVhHNWNiaUFnY0hWaWJHbGpJR2RsZEVKNVRtRnRaU2h1WVcxbE9pQnpkSEpwYm1jcE9pQlRZMlZ1WlZaaGNtbGhZbXhsUEZOalpXNWxWbUZ5YVdGaWJHVlRkR0YwWlQ0Z2ZDQjFibVJsWm1sdVpXUWdlMXh1SUNBZ0lISmxkSFZ5YmlCMWJtUmxabWx1WldRN1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ2FYTldZWEpwWVdKc1pVeHZZV1JwYm1kUGNsZGhhWFJwYm1kVWIxVndaR0YwWlNoMllYSnBZV0pzWlRvZ1UyTmxibVZXWVhKcFlXSnNaVHhUWTJWdVpWWmhjbWxoWW14bFUzUmhkR1UrS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCRmJYQjBlVlpoY21saFlteGxVMlYwSUQwZ2JtVjNJRVZ0Y0hSNVZtRnlhV0ZpYkdWVFpYUkpiWEJzS0NrN1hHNGlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenRCUVV0aExFMUJRVUVzWVVGQlFTeEhRVUZuUWl4SlFVRkpMR0ZCUVdNc1IwRkJRVHRCUVVOc1F5eE5RVUZCTEdkQ1FVRkJMRWRCUVcxQ0xFbEJRVWtzWTBGQlpTeEhRVUZCTzBGQlN6VkRMRTFCUVUwc05rSkJRVFpDTEdWQlFXbEZMRU5CUVVFN1FVRkJRU3hGUVVOc1J5eFhRVUZqTEVkQlFVRTdRVUZEYmtJc1NVRkJRU3hMUVVGQkxFTkJRVTBzUlVGQlJTeFRRVUZCTEVWQlFWY3NSVUZCUXl4RlFVRkhMRU5CUVVFc1EwRkJRVHRCUVVGQkxFZEJRM3BDTzBGQlFVRXNSVUZGVHl4VlFVRlZMRWxCUVRaRUxFVkJRVUU3UVVGRE5VVXNTVUZCVHl4UFFVRkJMRXRCUVVFc1EwRkJRU3hEUVVGQk8wRkJRVUVzUjBGRFZEdEJRVUZCTEVWQlJVOHNiVU5CUVcxRExGRkJRWE5FTEVWQlFVRTdRVUZET1VZc1NVRkJUeXhQUVVGQkxFdEJRVUVzUTBGQlFUdEJRVUZCTEVkQlExUTdRVUZEUml4RFFVRkJPMEZCUldFc1RVRkJRU3huUWtGQlFTeEhRVUZ0UWl4SlFVRkpMRzlDUVVGeFFqczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFLYSxNQUFBLGFBQUEsR0FBZ0IsSUFBSSxhQUFjLEdBQUE7QUFDbEMsTUFBQSxnQkFBQSxHQUFtQixJQUFJLGNBQWUsR0FBQTtBQUs1QyxNQUFNLDZCQUE2QixlQUFpRSxDQUFBO0VBQ2xHLFdBQWMsR0FBQTtBQUNuQixJQUFBLEtBQUEsQ0FBTSxFQUFFLFNBQUEsRUFBVyxFQUFBLEVBQUksQ0FBQSxDQUFBO0FBQUEsR0FBQTtBQUdsQixFQUFBLFNBQUEsQ0FBVSxJQUE2RCxFQUFBO0FBQ3JFLElBQUEsT0FBQSxLQUFBLENBQUEsQ0FBQTtBQUFBLEdBQUE7QUFHRixFQUFBLGtDQUFBLENBQW1DLFFBQXNELEVBQUE7QUFDdkYsSUFBQSxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQUE7QUFFWCxDQUFBO0FBRWEsTUFBQSxnQkFBQSxHQUFtQixJQUFJLG9CQUFxQjs7OzsifQ==
@@ -0,0 +1,13 @@
1
+ import { property } from 'lodash';
2
+
3
+ let fieldAccessorCache = {};
4
+ function getFieldAccessor(fieldPath) {
5
+ const accessor = fieldAccessorCache[fieldPath];
6
+ if (accessor) {
7
+ return accessor;
8
+ }
9
+ return fieldAccessorCache[fieldPath] = property(fieldPath);
10
+ }
11
+
12
+ export { getFieldAccessor };
13
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRBY2Nlc3NvckNhY2hlLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi92YXJpYWJsZXMvaW50ZXJwb2xhdGlvbi9maWVsZEFjY2Vzc29yQ2FjaGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvcGVydHkgfSBmcm9tICdsb2Rhc2gnO1xuXG5sZXQgZmllbGRBY2Nlc3NvckNhY2hlID0ge307XG5mdW5jdGlvbiBnZXRGaWVsZEFjY2Vzc29yKGZpZWxkUGF0aCkge1xuICBjb25zdCBhY2Nlc3NvciA9IGZpZWxkQWNjZXNzb3JDYWNoZVtmaWVsZFBhdGhdO1xuICBpZiAoYWNjZXNzb3IpIHtcbiAgICByZXR1cm4gYWNjZXNzb3I7XG4gIH1cbiAgcmV0dXJuIGZpZWxkQWNjZXNzb3JDYWNoZVtmaWVsZFBhdGhdID0gcHJvcGVydHkoZmllbGRQYXRoKTtcbn1cblxuZXhwb3J0IHsgZ2V0RmllbGRBY2Nlc3NvciB9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2labWxsYkdSQlkyTmxjM052Y2tOaFkyaGxMbXB6SWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk4dUxpOHVMaTl6Y21NdmRtRnlhV0ZpYkdWekwybHVkR1Z5Y0c5c1lYUnBiMjR2Wm1sbGJHUkJZMk5sYzNOdmNrTmhZMmhsTG5SeklsMHNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQjdJSEJ5YjNCbGNuUjVJSDBnWm5KdmJTQW5iRzlrWVhOb0p6dGNibHh1YVc1MFpYSm1ZV05sSUVacFpXeGtRV05qWlhOemIzSkRZV05vWlNCN1hHNGdJRnRyWlhrNklITjBjbWx1WjEwNklDaHZZbW82SUc5aWFtVmpkQ2tnUFQ0Z1lXNTVPMXh1ZlZ4dVhHNXNaWFFnWm1sbGJHUkJZMk5sYzNOdmNrTmhZMmhsT2lCR2FXVnNaRUZqWTJWemMyOXlRMkZqYUdVZ1BTQjdmVHRjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFWnBaV3hrUVdOalpYTnpiM0lvWm1sbGJHUlFZWFJvT2lCemRISnBibWNwSUh0Y2JpQWdZMjl1YzNRZ1lXTmpaWE56YjNJZ1BTQm1hV1ZzWkVGalkyVnpjMjl5UTJGamFHVmJabWxsYkdSUVlYUm9YVHRjYmlBZ2FXWWdLR0ZqWTJWemMyOXlLU0I3WEc0Z0lDQWdjbVYwZFhKdUlHRmpZMlZ6YzI5eU8xeHVJQ0I5WEc1Y2JpQWdjbVYwZFhKdUlDaG1hV1ZzWkVGalkyVnpjMjl5UTJGamFHVmJabWxsYkdSUVlYUm9YU0E5SUhCeWIzQmxjblI1S0dacFpXeGtVR0YwYUNrcE8xeHVmVnh1SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlRVRXNTVUZCU1N4eFFrRkJlVU1zUlVGQlF5eERRVUZCTzBGQlJYWkRMRk5CUVZNc2FVSkJRV2xDTEZOQlFXMUNMRVZCUVVFN1FVRkRiRVFzUlVGQlFTeE5RVUZOTEZkQlFWY3NhMEpCUVcxQ0xFTkJRVUVzVTBGQlFTeERRVUZCTEVOQlFVRTdRVUZEY0VNc1JVRkJRU3hKUVVGSkxGRkJRVlVzUlVGQlFUdEJRVU5hTEVsQlFVOHNUMEZCUVN4UlFVRkJMRU5CUVVFN1FVRkJRU3hIUVVOVU8wRkJSVUVzUlVGQlVTeFBRVUZCTEd0Q1FVRkJMRU5CUVcxQ0xGTkJRV0VzUTBGQlFTeEhRVUZCTEZGQlFVRXNRMEZCVXl4VFFVRlRMRU5CUVVFc1EwRkJRVHRCUVVNMVJEczdPenNpZlE9PVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsSUFBSSxxQkFBeUMsRUFBQSxDQUFBO0FBRXRDLFNBQVMsaUJBQWlCLFNBQW1CLEVBQUE7QUFDbEQsRUFBQSxNQUFNLFdBQVcsa0JBQW1CLENBQUEsU0FBQSxDQUFBLENBQUE7QUFDcEMsRUFBQSxJQUFJLFFBQVUsRUFBQTtBQUNMLElBQUEsT0FBQSxRQUFBLENBQUE7QUFBQSxHQUFBO0FBR0QsRUFBQSxPQUFBLGtCQUFBLENBQW1CLFNBQWEsQ0FBQSxHQUFBLFFBQUEsQ0FBUyxTQUFTLENBQUEsQ0FBQTtBQUM1RDs7OzsifQ==