Repository: splunk/addonfactory-ucc-generator (language: python)

Issue:
BUG: Automatic version numbering on release does not conform to semver and fails AppInspect
### Description

When UCC builds an app based on a GitHub release, the version it produces does not meet the requirements for a new AppInspect check "check_version_is_valid_semver" which requires a <major>.<minor>.<patch> numbering.
Instead UCC creates something like 1.0.1Ra1b2c3d4.
```
 ucc-gen build                                                                                                            
INFO: ucc-gen version 5.49.0 is used
INFO: Python binary name to use: python3
INFO: Python Version: Python 3.9.15
INFO: Output folder is /Users/livehybrid/projects/individual-splunk-apps/splunkbase_apps/TA-nextdns-api/output
INFO: Add-on will be built with version '1.0.0R3ad0537'
```

This looks to be added by https://github.com/splunk/addonfactory-ucc-generator/blob/main/splunk_add_on_ucc_framework/utils.py#L99
Is it possible to change "R" to "+" as this would then be a valid SemVer version?
["Build metadata MAY be denoted by appending a plus sign and a series of dot separated identifiers" ](https://semver.org/#:~:text=Build%20metadata%20MAY%20be%20denoted%20by%20appending%20a%20plus%20sign%20and%20a%20series%20of%20dot%20separated%20identifiers)


### What UCC version are you using?

5.49.0

### Additional System Info

Multi Envs


Discussion / hints:
Thank you for raising the issue, I have fixed this in PR #1351.
 

Fix patch:
diff --git a/.coveragerc b/.coveragerc
index 1736e29e4..3be3f434a 100644
--- a/.coveragerc
+++ b/.coveragerc
@@ -6,4 +6,4 @@ omit =
     splunk_add_on_ucc_framework/templates/input.module-template
 
 [report]
-fail_under = 78.5
+fail_under = 81
diff --git a/.github/workflows/automatic_doc_generation.yml b/.github/workflows/automatic_doc_generation.yml
index f8b5a8e77..c65561ce5 100644
--- a/.github/workflows/automatic_doc_generation.yml
+++ b/.github/workflows/automatic_doc_generation.yml
@@ -8,7 +8,7 @@ on:
 
 jobs:
   generate-docs:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     env:
       isPR: ${{ github.event.pull_request.base.ref == 'develop' || github.event.pull_request.base.ref == 'main' }}
     steps:
diff --git a/.github/workflows/build-ui.yml b/.github/workflows/build-ui.yml
index a8d6a9113..7b6ac2497 100644
--- a/.github/workflows/build-ui.yml
+++ b/.github/workflows/build-ui.yml
@@ -8,7 +8,7 @@ on:
 
 jobs:
   build-ui:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     defaults:
       run:
         working-directory: ui
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
index f8f763b75..a632eb28f 100644
--- a/.github/workflows/docs.yml
+++ b/.github/workflows/docs.yml
@@ -12,7 +12,7 @@ on:
       - "release/**"
 jobs:
   deploy:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     permissions:
       contents: write
       pages: write
diff --git a/.github/workflows/storybook-visual.yml b/.github/workflows/storybook-visual.yml
index eb650b3fb..1f2d123ef 100644
--- a/.github/workflows/storybook-visual.yml
+++ b/.github/workflows/storybook-visual.yml
@@ -12,7 +12,7 @@ jobs:
       run:
         working-directory: ui
         shell: bash
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     env:
       isPR: ${{ github.event.pull_request.base.ref == 'develop' || github.event.pull_request.base.ref == 'main' }}
     steps:
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 8b9d5f263..af521679b 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -21,7 +21,7 @@ repos:
     -   id: check-merge-conflict
     -   id: debug-statements
 -   repo: https://github.com/asottile/pyupgrade
-    rev: v3.3.1
+    rev: v3.3.2
     hooks:
     -   id: pyupgrade
         args:
@@ -31,17 +31,17 @@ repos:
     hooks:
     -   id: black
 -   repo: https://github.com/pre-commit/mirrors-mypy
-    rev: v1.2.0
+    rev: v1.4.1
     hooks:
     -   id: mypy
         exclude: (^docs/|^splunk_add_on_ucc_framework/commands/imports.py)
         additional_dependencies: ['types-PyYAML']
 -   repo: https://github.com/PyCQA/flake8
-    rev: 4.0.1
+    rev: 5.0.4
     hooks:
     -   id: flake8
         exclude: (^splunk_add_on_ucc_framework/commands/init_template/|^splunk_add_on_ucc_framework/commands/imports.py)
 -   repo: https://github.com/igorshubovych/markdownlint-cli
-    rev: v0.40.0
+    rev: v0.42.0
     hooks:
     -   id: markdownlint
diff --git a/docs/advanced/oauth_support.md b/docs/advanced/oauth_support.md
index ae43dd1a7..b4a2c06a7 100644
--- a/docs/advanced/oauth_support.md
+++ b/docs/advanced/oauth_support.md
@@ -36,6 +36,7 @@ Auth can be used inside the entity tag. Use `type: "oauth"` in the entity list a
         - `encrypted` should be true if the user wants that particular field encrypted, otherwise, there is no need to have this parameter.
         - `required` specifies whether the field is required or not. The default value is true.
         - `defaultValue` is the initial input value (string, number, or boolean).
+        - `validators` array that is used to validate the values of fields using various [validators](../entity/validators.md).
         - `options`:
             + `placeholder`: (RENOUNCED) The placeholder for the field.
             + `disableonEdit`: When the form is in edit mode, the field becomes unable to be edited. The default value is false.
diff --git a/docs/configurations/index.md b/docs/configurations/index.md
index 374dec99e..ffbf4687d 100644
--- a/docs/configurations/index.md
+++ b/docs/configurations/index.md
@@ -28,6 +28,7 @@ proxy configuration, and logging level configuration.
 | [restHandlerModule](../advanced/custom_rest_handler.md)               | string | It specify name of the REST handler script that implements the custom actions to be performed on CRUD operations for the given input. (Use with restHandlerClass)                                                                                                                   |
 | [restHandlerClass](../advanced/custom_rest_handler.md)                | string | It specify name of the class present in the restHandlerModule, which implements methods like handleCreate, handleEdit, handleList, handleDelete and is child class of splunktaucclib.rest_handler.admin_external.AdminExternalHandler. (Use with restHandlerModule)                 |
 | customTab                                                             | Object | This property allows you to enable the [custom tab](../custom_ui_extensions/custom_tab.md) feature.                                                                                                                                                                                 |
+| hideForPlatform                                                       | string | Defines for which platform element should be hidden from UI perspective. Currently only two platforms are supported `cloud` or `enterprise`.                                                                                                                                        |
 
 ### Tab components
 
diff --git a/docs/dashboard.md b/docs/dashboard.md
index efacf4d1a..6b44fbb81 100644
--- a/docs/dashboard.md
+++ b/docs/dashboard.md
@@ -435,3 +435,7 @@ e.g. of globalConfig.json:
 
 the above configuration will create the following filter query:
 `...source=*license_usage.log type=Usage (st IN ("*addon123*","my_custom_condition*"))...`
+
+> Note:
+
+> * In the Data Ingestion table, the first column displays the `View by` options list. When you click on any row in this column, a modal opens, showing detailed information such as `Data volume` and the `Number of events` over time, visualized in charts. The modal allows you to adjust the options via a dropdown to view data for different View by options. This enables dynamic exploration of data trends for various selected inputs.
diff --git a/docs/entity/components.md b/docs/entity/components.md
index 2dcbb1523..354489243 100644
--- a/docs/entity/components.md
+++ b/docs/entity/components.md
@@ -505,7 +505,7 @@ The Oauth type entity enables us to use Oauth2.0 for user authentication. Visit
 ## `Interval`
 
 A [Text](#text) field used to specify [interval](https://docs.splunk.com/Documentation/Splunk/latest/Admin/Inputsconf#Scripted_Input:)
-value, i.e. a number greater than or equal to 0, or -1.
+value, i.e. a number greater than or equal to 0, CRON interval or -1.
 
 <h3> Options </h3>
 
@@ -513,6 +513,17 @@ value, i.e. a number greater than or equal to 0, or -1.
 | -------- | ---------------------------- | ----------------------- |
 | range    | list of numbers (2 elements) | Range of allowed values |
 
+
+Supported CRON schedule:
+
+* "<minute> <hour> <day of month> <month> <day of week>"
+* Cron special characters are acceptable.  ("*", ",", "/", "-" )
+
+Names of months or days are not supported.
+
+Note: Range option is not supposed to be used with CRON interval.
+
+
 See the following example:
 
 ```json
@@ -526,6 +537,7 @@ See the following example:
 }
 ```
 
+
 ## `Index`
 
 A field used to specify [index](https://docs.splunk.com/Splexicon:Index).
diff --git a/docs/entity/index.md b/docs/entity/index.md
index 1759a6e8e..ed52f110c 100644
--- a/docs/entity/index.md
+++ b/docs/entity/index.md
@@ -5,7 +5,7 @@ title: Entity
 ## Entity Properties
 
 | Property                                                         | Type                      | Description                                                                                                                      | Default Value |
-|------------------------------------------------------------------|---------------------------|----------------------------------------------------------------------------------------------------------------------------------|---------------|
+| ---------------------------------------------------------------- | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | ------------- |
 | field<span class="required-asterisk">\*</span>                   | string                    | To define a particular entity field.                                                                                             | -             |
 | label<span class="required-asterisk">\*</span>                   | string                    | It represents a caption for a field in a user interface.                                                                         | -             |
 | [type](./components.md)<span class="required-asterisk">\*</span> | string                    | To specify the type of entity to be rendered in inputs or configuration form.                                                    | -             |
@@ -26,10 +26,11 @@ title: Entity
 
 This section describes common options that can be used within the `options` object in entity properties.
 
-| Property            | Type    | Description                                                                            | Default Value |
-|---------------------|---------|----------------------------------------------------------------------------------------|---------------|
-| display             | boolean | It chooses whether or not to display the field.                                        | true          |
-| disableonEdit       | boolean | When the form is in edit mode, the field becomes unable to be edited.                  | false         |
-| enable              | boolean | The enable property sets whether a field is enabled or not.                            | true          |
-| requiredWhenVisible | boolean | It makes the field required on the UI when it appears. It is used only for visibility. | false         |
-| placeholder         | string  | (`Renounced`) The grey text is shown when the input is empty.                          | -             |
+| Property            | Type    | Description                                                                                                                                  | Default Value |
+| ------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
+| display             | boolean | It chooses whether or not to display the field.                                                                                              | true          |
+| disableonEdit       | boolean | When the form is in edit mode, the field becomes unable to be edited.                                                                        | false         |
+| enable              | boolean | The enable property sets whether a field is enabled or not.                                                                                  | true          |
+| requiredWhenVisible | boolean | It makes the field required on the UI when it appears. It is used only for visibility.                                                       | false         |
+| hideForPlatform     | string  | Defines for which platform element should be hidden from UI perspective. Currently only two platforms are supported `cloud` or `enterprise`. | -             |
+| placeholder         | string  | (`Renounced`) The grey text is shown when the input is empty.                                                                                | -             |
diff --git a/docs/inputs/index.md b/docs/inputs/index.md
index 984de9318..3fd3f8bbe 100644
--- a/docs/inputs/index.md
+++ b/docs/inputs/index.md
@@ -10,7 +10,7 @@ provided, a dropdown field will appear on the Inputs page. In contrast, a button
 ### Properties
 
 | Property                                                                  | Type   | Description                                                                                                                                                                                                                                                                                                                                          |
-|---------------------------------------------------------------------------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| ------------------------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | title<span class="required-asterisk">\*</span>                            | string | -                                                                                                                                                                                                                                                                                                                                                    |
 | description                                                               | string | It provides a brief summary of an inputs page.                                                                                                                                                                                                                                                                                                       |
 | [subDescription](../advanced/sub_description.md)                          | object | It provides broader description of an inputs page.                                                                                                                                                                                                                                                                                                   |
@@ -24,7 +24,7 @@ provided, a dropdown field will appear on the Inputs page. In contrast, a button
 ### Services Properties
 
 | Property                                                              | Type   | Description                                                                                                                                                                                                                                                                         |
-|-----------------------------------------------------------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| --------------------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
 | name<span class="required-asterisk">\*</span>                         | string | It defines the particular service name.                                                                                                                                                                                                                                             |
 | title<span class="required-asterisk">\*</span>                        | string | It shows the title of the service.                                                                                                                                                                                                                                                  |
 | subTitle                                                              | string | It shows the subtitle (or additional information) of the service.                                                                                                                                                                                                                   |
@@ -39,6 +39,7 @@ provided, a dropdown field will appear on the Inputs page. In contrast, a button
 | restHandlerName                                                       | string | It specify name of the REST handler script, that provides fields, models and validators for the fields supported under the specified input and any specific actions to be performed on CRUD operations for the given input. (Do NOT use with restHandlerModule or restHandlerClass) |
 | [restHandlerModule](../advanced/custom_rest_handler.md)               | string | It specify name of the REST handler script that implements the custom actions to be performed on CRUD operations for the given input. (Use with restHandlerClass)                                                                                                                   |
 | [restHandlerClass](../advanced/custom_rest_handler.md)                | string | It specify name of the class present in the restHandlerModule, which implements methods like handleCreate, handleEdit, handleList, handleDelete and is child class of splunktaucclib.rest_handler.admin_external.AdminExternalHandler. (Use with restHandlerModule)                 |
+| hideForPlatform                                                       | string | Defines for which platform element should be hidden from UI perspective. Currently only two platforms are supported `cloud` or `enterprise`.                                                                                                                                        |
 
 ### Usage
 
diff --git a/poetry.lock b/poetry.lock
index 23efb44e5..cec4a2cdf 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -13,25 +13,25 @@ files = [
 
 [[package]]
 name = "attrs"
-version = "23.2.0"
+version = "24.2.0"
 description = "Classes Without Boilerplate"
 optional = false
 python-versions = ">=3.7"
 files = [
-    {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"},
-    {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"},
+    {file = "attrs-24.2.0-py3-none-any.whl", hash = "sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"},
+    {file = "attrs-24.2.0.tar.gz", hash = "sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346"},
 ]
 
 [package.dependencies]
 importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
 
 [package.extras]
-cov = ["attrs[tests]", "coverage[toml] (>=5.3)"]
-dev = ["attrs[tests]", "pre-commit"]
-docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"]
-tests = ["attrs[tests-no-zope]", "zope-interface"]
-tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"]
-tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"]
+benchmark = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-codspeed", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+cov = ["cloudpickle", "coverage[toml] (>=5.3)", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+dev = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
+tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"]
+tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"]
 
 [[package]]
 name = "babel"
@@ -63,112 +63,127 @@ files = [
 
 [[package]]
 name = "certifi"
-version = "2024.7.4"
+version = "2024.8.30"
 description = "Python package for providing Mozilla's CA Bundle."
 optional = false
 python-versions = ">=3.6"
 files = [
-    {file = "certifi-2024.7.4-py3-none-any.whl", hash = "sha256:c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90"},
-    {file = "certifi-2024.7.4.tar.gz", hash = "sha256:5a1e7645bc0ec61a09e26c36f6106dd4cf40c6db3a1fb6352b0244e7fb057c7b"},
+    {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"},
+    {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"},
 ]
 
 [[package]]
 name = "charset-normalizer"
-version = "3.3.2"
+version = "3.4.0"
 description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
 optional = false
 python-versions = ">=3.7.0"
 files = [
-    {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"},
-    {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"},
-    {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"},
-    {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"},
-    {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"},
-    {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"},
-    {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"},
-    {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4f9fc98dad6c2eaa32fc3af1417d95b5e3d08aff968df0cd320066def971f9a6"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0de7b687289d3c1b3e8660d0741874abe7888100efe14bd0f9fd7141bcbda92b"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5ed2e36c3e9b4f21dd9422f6893dec0abf2cca553af509b10cd630f878d3eb99"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d3ff7fc90b98c637bda91c89d51264a3dcf210cade3a2c6f838c7268d7a4ca"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1110e22af8ca26b90bd6364fe4c763329b0ebf1ee213ba32b68c73de5752323d"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86f4e8cca779080f66ff4f191a685ced73d2f72d50216f7112185dc02b90b9b7"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f683ddc7eedd742e2889d2bfb96d69573fde1d92fcb811979cdb7165bb9c7d3"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:27623ba66c183eca01bf9ff833875b459cad267aeeb044477fedac35e19ba907"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f606a1881d2663630ea5b8ce2efe2111740df4b687bd78b34a8131baa007f79b"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0b309d1747110feb25d7ed6b01afdec269c647d382c857ef4663bbe6ad95a912"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:136815f06a3ae311fae551c3df1f998a1ebd01ddd424aa5603a4336997629e95"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:14215b71a762336254351b00ec720a8e85cada43b987da5a042e4ce3e82bd68e"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:79983512b108e4a164b9c8d34de3992f76d48cadc9554c9e60b43f308988aabe"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-win32.whl", hash = "sha256:c94057af19bc953643a33581844649a7fdab902624d2eb739738a30e2b3e60fc"},
+    {file = "charset_normalizer-3.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:55f56e2ebd4e3bc50442fbc0888c9d8c94e4e06a933804e2af3e89e2f9c1c749"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0d99dd8ff461990f12d6e42c7347fd9ab2532fb70e9621ba520f9e8637161d7c"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c57516e58fd17d03ebe67e181a4e4e2ccab1168f8c2976c6a334d4f819fe5944"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6dba5d19c4dfab08e58d5b36304b3f92f3bd5d42c1a3fa37b5ba5cdf6dfcbcee"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf4475b82be41b07cc5e5ff94810e6a01f276e37c2d55571e3fe175e467a1a1c"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce031db0408e487fd2775d745ce30a7cd2923667cf3b69d48d219f1d8f5ddeb6"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ff4e7cdfdb1ab5698e675ca622e72d58a6fa2a8aa58195de0c0061288e6e3ea"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3710a9751938947e6327ea9f3ea6332a09bf0ba0c09cae9cb1f250bd1f1549bc"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82357d85de703176b5587dbe6ade8ff67f9f69a41c0733cf2425378b49954de5"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:47334db71978b23ebcf3c0f9f5ee98b8d65992b65c9c4f2d34c2eaf5bcaf0594"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8ce7fd6767a1cc5a92a639b391891bf1c268b03ec7e021c7d6d902285259685c"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f1a2f519ae173b5b6a2c9d5fa3116ce16e48b3462c8b96dfdded11055e3d6365"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:63bc5c4ae26e4bc6be6469943b8253c0fd4e4186c43ad46e713ea61a0ba49129"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bcb4f8ea87d03bc51ad04add8ceaf9b0f085ac045ab4d74e73bbc2dc033f0236"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-win32.whl", hash = "sha256:9ae4ef0b3f6b41bad6366fb0ea4fc1d7ed051528e113a60fa2a65a9abb5b1d99"},
+    {file = "charset_normalizer-3.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cee4373f4d3ad28f1ab6290684d8e2ebdb9e7a1b74fdc39e4c211995f77bec27"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0713f3adb9d03d49d365b70b84775d0a0d18e4ab08d12bc46baa6132ba78aaf6"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:de7376c29d95d6719048c194a9cf1a1b0393fbe8488a22008610b0361d834ecf"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4a51b48f42d9358460b78725283f04bddaf44a9358197b889657deba38f329db"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b295729485b06c1a0683af02a9e42d2caa9db04a373dc38a6a58cdd1e8abddf1"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ee803480535c44e7f5ad00788526da7d85525cfefaf8acf8ab9a310000be4b03"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d59d125ffbd6d552765510e3f31ed75ebac2c7470c7274195b9161a32350284"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cda06946eac330cbe6598f77bb54e690b4ca93f593dee1568ad22b04f347c15"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07afec21bbbbf8a5cc3651aa96b980afe2526e7f048fdfb7f1014d84acc8b6d8"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6b40e8d38afe634559e398cc32b1472f376a4099c75fe6299ae607e404c033b2"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b8dcd239c743aa2f9c22ce674a145e0a25cb1566c495928440a181ca1ccf6719"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:84450ba661fb96e9fd67629b93d2941c871ca86fc38d835d19d4225ff946a631"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44aeb140295a2f0659e113b31cfe92c9061622cadbc9e2a2f7b8ef6b1e29ef4b"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1db4e7fefefd0f548d73e2e2e041f9df5c59e178b4c72fbac4cc6f535cfb1565"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-win32.whl", hash = "sha256:5726cf76c982532c1863fb64d8c6dd0e4c90b6ece9feb06c9f202417a31f7dd7"},
+    {file = "charset_normalizer-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b197e7094f232959f8f20541ead1d9862ac5ebea1d58e9849c1bf979255dfac9"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67"},
+    {file = "charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dbe03226baf438ac4fda9e2d0715022fd579cb641c4cf639fa40d53b2fe6f3e2"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd9a8bd8900e65504a305bf8ae6fa9fbc66de94178c420791d0293702fce2df7"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8831399554b92b72af5932cdbbd4ddc55c55f631bb13ff8fe4e6536a06c5c51"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a14969b8691f7998e74663b77b4c36c0337cb1df552da83d5c9004a93afdb574"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dcaf7c1524c0542ee2fc82cc8ec337f7a9f7edee2532421ab200d2b920fc97cf"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425c5f215d0eecee9a56cdb703203dda90423247421bf0d67125add85d0c4455"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:d5b054862739d276e09928de37c79ddeec42a6e1bfc55863be96a36ba22926f6"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:f3e73a4255342d4eb26ef6df01e3962e73aa29baa3124a8e824c5d3364a65748"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:2f6c34da58ea9c1a9515621f4d9ac379871a8f21168ba1b5e09d74250de5ad62"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f09cb5a7bbe1ecae6e87901a2eb23e0256bb524a79ccc53eb0b7629fbe7677c4"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:0099d79bdfcf5c1f0c2c72f91516702ebf8b0b8ddd8905f97a8aecf49712c621"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-win32.whl", hash = "sha256:9c98230f5042f4945f957d006edccc2af1e03ed5e37ce7c373f00a5a4daa6149"},
+    {file = "charset_normalizer-3.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:62f60aebecfc7f4b82e3f639a7d1433a20ec32824db2199a11ad4f5e146ef5ee"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:af73657b7a68211996527dbfeffbb0864e043d270580c5aef06dc4b659a4b578"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cab5d0b79d987c67f3b9e9c53f54a61360422a5a0bc075f43cab5621d530c3b6"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:9289fd5dddcf57bab41d044f1756550f9e7cf0c8e373b8cdf0ce8773dc4bd417"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b493a043635eb376e50eedf7818f2f322eabbaa974e948bd8bdd29eb7ef2a51"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fa2566ca27d67c86569e8c85297aaf413ffab85a8960500f12ea34ff98e4c41"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8e538f46104c815be19c975572d74afb53f29650ea2025bbfaef359d2de2f7f"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fd30dc99682dc2c603c2b315bded2799019cea829f8bf57dc6b61efde6611c8"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2006769bd1640bdf4d5641c69a3d63b71b81445473cac5ded39740a226fa88ab"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:dc15e99b2d8a656f8e666854404f1ba54765871104e50c8e9813af8a7db07f12"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:ab2e5bef076f5a235c3774b4f4028a680432cded7cad37bba0fd90d64b187d19"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:4ec9dd88a5b71abfc74e9df5ebe7921c35cbb3b641181a531ca65cdb5e8e4dea"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:43193c5cda5d612f247172016c4bb71251c784d7a4d9314677186a838ad34858"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:aa693779a8b50cd97570e5a0f343538a8dbd3e496fa5dcb87e29406ad0299654"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-win32.whl", hash = "sha256:7706f5850360ac01d80c89bcef1640683cc12ed87f42579dab6c5d3ed6888613"},
+    {file = "charset_normalizer-3.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:c3e446d253bd88f6377260d07c895816ebf33ffffd56c1c792b13bff9c3e1ade"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:980b4f289d1d90ca5efcf07958d3eb38ed9c0b7676bf2831a54d4f66f9c27dfa"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f28f891ccd15c514a0981f3b9db9aa23d62fe1a99997512b0491d2ed323d229a"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a8aacce6e2e1edcb6ac625fb0f8c3a9570ccc7bfba1f63419b3769ccf6a00ed0"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd7af3717683bea4c87acd8c0d3d5b44d56120b26fd3f8a692bdd2d5260c620a"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ff2ed8194587faf56555927b3aa10e6fb69d931e33953943bc4f837dfee2242"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e91f541a85298cf35433bf66f3fab2a4a2cff05c127eeca4af174f6d497f0d4b"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309a7de0a0ff3040acaebb35ec45d18db4b28232f21998851cfa709eeff49d62"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:285e96d9d53422efc0d7a17c60e59f37fbf3dfa942073f666db4ac71e8d726d0"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5d447056e2ca60382d460a604b6302d8db69476fd2015c81e7c35417cfabe4cd"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:20587d20f557fe189b7947d8e7ec5afa110ccf72a3128d61a2a387c3313f46be"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:130272c698667a982a5d0e626851ceff662565379baf0ff2cc58067b81d4f11d"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:ab22fbd9765e6954bc0bcff24c25ff71dcbfdb185fcdaca49e81bac68fe724d3"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7782afc9b6b42200f7362858f9e73b1f8316afb276d316336c0ec3bd73312742"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-win32.whl", hash = "sha256:2de62e8801ddfff069cd5c504ce3bc9672b23266597d4e4f50eda28846c322f2"},
+    {file = "charset_normalizer-3.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:95c3c157765b031331dd4db3c775e58deaee050a3042fcad72cbc4189d7c8dca"},
+    {file = "charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079"},
+    {file = "charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e"},
 ]
 
 [[package]]
@@ -324,13 +339,13 @@ packaging = "*"
 
 [[package]]
 name = "dunamai"
-version = "1.21.2"
+version = "1.22.0"
 description = "Dynamic version generation"
 optional = false
 python-versions = ">=3.5"
 files = [
-    {file = "dunamai-1.21.2-py3-none-any.whl", hash = "sha256:87db76405bf9366f9b4925ff5bb1db191a9a1bd9f9693f81c4d3abb8298be6f0"},
-    {file = "dunamai-1.21.2.tar.gz", hash = "sha256:05827fb5f032f5596bfc944b23f613c147e676de118681f3bb1559533d8a65c4"},
+    {file = "dunamai-1.22.0-py3-none-any.whl", hash = "sha256:eab3894b31e145bd028a74b13491c57db01986a7510482c9b5fff3b4e53d77b7"},
+    {file = "dunamai-1.22.0.tar.gz", hash = "sha256:375a0b21309336f0d8b6bbaea3e038c36f462318c68795166e31f9873fdad676"},
 ]
 
 [package.dependencies]
@@ -468,15 +483,18 @@ pyparsing = {version = ">=2.4.2,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.0.2 || >3.0
 
 [[package]]
 name = "idna"
-version = "3.7"
+version = "3.10"
 description = "Internationalized Domain Names in Applications (IDNA)"
 optional = false
-python-versions = ">=3.5"
+python-versions = ">=3.6"
 files = [
-    {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"},
-    {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"},
+    {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"},
+    {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"},
 ]
 
+[package.extras]
+all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"]
+
 [[package]]
 name = "importlib-metadata"
 version = "6.7.0"
@@ -937,14 +955,19 @@ files = [
 
 [[package]]
 name = "paginate"
-version = "0.5.6"
+version = "0.5.7"
 description = "Divides large result sets into pages for easier browsing"
 optional = false
 python-versions = "*"
 files = [
-    {file = "paginate-0.5.6.tar.gz", hash = "sha256:5e6007b6a9398177a7e1648d04fdd9f8c9766a1a945bceac82f1929e8c78af2d"},
+    {file = "paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591"},
+    {file = "paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945"},
 ]
 
+[package.extras]
+dev = ["pytest", "tox"]
+lint = ["black"]
+
 [[package]]
 name = "pathspec"
 version = "0.11.2"
@@ -1049,13 +1072,13 @@ extra = ["pygments (>=2.12)"]
 
 [[package]]
 name = "pyparsing"
-version = "3.1.2"
+version = "3.1.4"
 description = "pyparsing module - Classes and methods to define and execute parsing grammars"
 optional = false
 python-versions = ">=3.6.8"
 files = [
-    {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"},
-    {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"},
+    {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"},
+    {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"},
 ]
 
 [package.extras]
@@ -1204,13 +1227,13 @@ pytest = ">=5.3"
 
 [[package]]
 name = "pytest-splunk-addon"
-version = "5.2.6"
+version = "5.4.0"
 description = "A Dynamic test tool for Splunk Apps and Add-ons"
 optional = false
 python-versions = "<4.0,>=3.7"
 files = [
-    {file = "pytest_splunk_addon-5.2.6-py3-none-any.whl", hash = "sha256:eefa4b022009b4ec6cb88b6c28a128a4768114b999635e1eb225e40fec6c03e2"},
-    {file = "pytest_splunk_addon-5.2.6.tar.gz", hash = "sha256:521172594319bb1f879a2ec433c34c35c20125a84669a84c38529c3ff6879fb6"},
+    {file = "pytest_splunk_addon-5.4.0-py3-none-any.whl", hash = "sha256:b2c6482bbeb4ce9dc225e487e32299431bc94cd17c74574a7e7126a63612c1ca"},
+    {file = "pytest_splunk_addon-5.4.0.tar.gz", hash = "sha256:78212c0583a5c7c5101ee3690e5cf75dba1e7f4edb444255e2a3cc6eee0c6a5a"},
 ]
 
 [package.dependencies]
@@ -1232,13 +1255,13 @@ xmltodict = ">=0.13.0,<0.14.0"
 
 [[package]]
 name = "pytest-splunk-addon-ui-smartx"
-version = "5.0.0"
+version = "5.3.0"
 description = "Library to support testing Splunk Add-on UX"
 optional = false
 python-versions = "<4.0,>=3.7"
 files = [
-    {file = "pytest_splunk_addon_ui_smartx-5.0.0-py3-none-any.whl", hash = "sha256:8a67dfe6aa58b36f5a673863a29deaa04718e497fdfe9b13642dde319a238a32"},
-    {file = "pytest_splunk_addon_ui_smartx-5.0.0.tar.gz", hash = "sha256:1f330558dfd537d06507e375480615a84dd95964672af5c9cd4966585d8e0fa6"},
+    {file = "pytest_splunk_addon_ui_smartx-5.3.0-py3-none-any.whl", hash = "sha256:bd3b646469d869757d9fef4be9129fa373265121f027af21729828aa38726392"},
+    {file = "pytest_splunk_addon_ui_smartx-5.3.0.tar.gz", hash = "sha256:0b684382320aaf18b0047fd61a32fc9df232bd06d8b2b47b3716a65236390b26"},
 ]
 
 [package.dependencies]
@@ -1301,13 +1324,13 @@ cli = ["click (>=5.0)"]
 
 [[package]]
 name = "pytz"
-version = "2024.1"
+version = "2024.2"
 description = "World timezone definitions, modern and historical"
 optional = false
 python-versions = "*"
 files = [
-    {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"},
-    {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"},
+    {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"},
+    {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"},
 ]
 
 [[package]]
@@ -1596,13 +1619,13 @@ files = [
 
 [[package]]
 name = "urllib3"
-version = "1.26.19"
+version = "1.26.20"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
 optional = false
 python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
 files = [
-    {file = "urllib3-1.26.19-py2.py3-none-any.whl", hash = "sha256:37a0344459b199fce0e80b0d3569837ec6b6937435c5244e7fd73fa6006830f3"},
-    {file = "urllib3-1.26.19.tar.gz", hash = "sha256:3e3d753a8618b86d7de333b4223005f68720bcd6a7d2bcb9fbd2229ec7c1e429"},
+    {file = "urllib3-1.26.20-py2.py3-none-any.whl", hash = "sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e"},
+    {file = "urllib3-1.26.20.tar.gz", hash = "sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32"},
 ]
 
 [package.extras]
@@ -1731,4 +1754,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
 [metadata]
 lock-version = "2.0"
 python-versions = "^3.7"
-content-hash = "b8706782dcaed29f95cbd6f7bd241830bb5e21017480e91c6421501360804554"
+content-hash = "71a9dc95114ab50cc2a05784f48b443d2655789a68152093d8a89f8cffc42654"
diff --git a/pyproject.toml b/pyproject.toml
index 4d92d05e0..c5c8ced60 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -42,7 +42,7 @@ classifiers = [
 python = "^3.7"
 jinja2 = ">=2,<4"
 addonfactory-splunk-conf-parser-lib = "^0.4.3"
-dunamai = "^1.9.0"
+dunamai = "^1.22.0"
 jsonschema = "^4.4.0"
 PyYAML = "^6.0"
 defusedxml = "^0.7.1"
@@ -52,8 +52,8 @@ colorama = "^0.4.6"
 mkdocs = "^1.4.2"
 importlib-metadata = {version="*", python="<3.8"}
 pytest = "^7.2.1"
-pytest-splunk-addon = "^5.0.0"
-pytest-splunk-addon-ui-smartx = "^5.0.0"
+pytest-splunk-addon = "^5.4.0"
+pytest-splunk-addon-ui-smartx = "^5.3.0"
 pytest-rerunfailures = "^11.1.1"
 mkdocs-material = "^9.1.3"
 mkdocstrings = {version=">=0", extras=["python"]}
diff --git a/renovate.json b/renovate.json
index da6fd9e3e..1d5b90e11 100644
--- a/renovate.json
+++ b/renovate.json
@@ -19,6 +19,22 @@
       "matchPackagePatterns": ["*"],
       "groupName": "{{manager}}"
     },
+    {
+      "description": "Ignore python packages that cannot be updated thanks to 3.7 support",
+      "matchManagers": [
+        "poetry"
+      ],
+      "matchPackagePrefixes": [
+        "importlib-metadata",
+        "pytest",
+        "pytest-cov",
+        "pytest-rerunfailures"
+      ],
+      "matchUpdateTypes": [
+        "major"
+      ],
+      "enabled": false
+    },
     {
       "matchPackageNames": ["urllib3"],
       "allowedVersions": "<2.0.0"
@@ -30,8 +46,8 @@
       ],
       "matchPackageNames": [
         "@npmcli/git",
-        "@testing-library/react",
         "@testing-library/dom",
+        "@testing-library/react",
         "@types/react",
         "@typescript-eslint/eslint-plugin",
         "@typescript-eslint/parser",
@@ -42,11 +58,12 @@
         "eslint-config-airbnb",
         "eslint-config-prettier",
         "eslint-plugin-prettier",
+        "eslint-plugin-react-hooks",
         "glob-parent",
+        "prettier",
         "react",
         "react-dom",
         "react-is",
-        "prettier",
         "string-width",
         "strip-ansi",
         "styled-components",
diff --git a/scripts/quick_start_ui.sh b/scripts/quick_start_ui.sh
index 2c2390f03..6b8c06961 100755
--- a/scripts/quick_start_ui.sh
+++ b/scripts/quick_start_ui.sh
@@ -51,7 +51,8 @@ docker run \
   -e "SPLUNK_HEC_TOKEN=4a8a737d-5452-426c-a6f7-106dca4e813f" \
   -e "SPLUNK_DISABLE_POPUPS=true" \
   -d \
-  --name $CONTAINER_NAME splunk/splunk:9.1.2
+  --pull=always \
+  --name splunk splunk/splunk:${1:-"latest"}
 
 echo -n "Waiting Splunk for run"
 until curl -Lsk "https://localhost:8088/services/collector/health" &>/dev/null ; do echo -n "." && sleep 5 ; done
diff --git a/scripts/run_splunk.sh b/scripts/run_splunk.sh
index edd082e8b..52c06a34d 100755
--- a/scripts/run_splunk.sh
+++ b/scripts/run_splunk.sh
@@ -33,4 +33,5 @@ docker run \
   -e "SPLUNK_HEC_TOKEN=4a8a737d-5452-426c-a6f7-106dca4e813f" \
   -e "SPLUNK_DISABLE_POPUPS=true" \
   -d \
-  --name splunk splunk/splunk:${1:-"9.1.2"}
+  --pull=always \
+  --name splunk splunk/splunk:${1:-"latest"}
diff --git a/splunk_add_on_ucc_framework/commands/rest_builder/endpoint/base.py b/splunk_add_on_ucc_framework/commands/rest_builder/endpoint/base.py
index 17b624463..7ce48a318 100644
--- a/splunk_add_on_ucc_framework/commands/rest_builder/endpoint/base.py
+++ b/splunk_add_on_ucc_framework/commands/rest_builder/endpoint/base.py
@@ -36,7 +36,7 @@ class RestEntityBuilder:
 fields{name_rh} = [
 {fields}
 ]
-model{name_rh} = RestModel(fields{name_rh}, name={name})
+model{name_rh} = RestModel(fields{name_rh}, name={name}{special_fields_arg})
 """
     _disabled_field_template = """
 field.RestField(
@@ -44,13 +44,26 @@ class RestEntityBuilder:
     required=False,
     validator=None
 )
+"""
+    _rh_special_fields_template = """
+special_fields = [
+{special_fields}
+]
 """
 
     def __init__(
-        self, name: Optional[str], fields: List["RestFieldBuilder"], **kwargs: Any
+        self,
+        name: Optional[str],
+        fields: List["RestFieldBuilder"],
+        special_fields: Optional[List["RestFieldBuilder"]] = None,
+        **kwargs: Any,
     ) -> None:
         self._name = name
         self._fields = fields
+        self._special_fields = special_fields if special_fields else []
+        self._special_fields_arg = (
+            ", special_fields=special_fields" if special_fields else ""
+        )
         self._conf_name = kwargs.get("conf_name")
 
     @property
@@ -78,10 +91,10 @@ def generate_conf_with_default_values(self) -> str:
         return "\n".join(lines)
 
     def generate_rh(self) -> str:
-        fields = []
-        for field in self._fields:
-            field_line = field.generate_rh()
-            fields.append(field_line)
+        fields = [field.generate_rh() for field in self._fields]
+        special_fields = [
+            special_field.generate_rh() for special_field in self._special_fields
+        ]
         # add disabled field for data input
         entity_builder = self.__class__.__name__
         if (
@@ -91,10 +104,21 @@ def generate_rh(self) -> str:
         ):
             fields.append(self._disabled_field_template)
         fields_lines = ", \n".join(fields)
+        if special_fields:
+            special_fields_lines = ", \n".join(special_fields)
+            template = self._rh_special_fields_template + self._rh_template
+            return template.format(
+                special_fields=indent(special_fields_lines),
+                fields=indent(fields_lines),
+                name_rh=self.name_rh,
+                name=quote_string(self._name),
+                special_fields_arg=self._special_fields_arg,
+            )
         return self._rh_template.format(
             fields=indent(fields_lines),
             name_rh=self.name_rh,
             name=quote_string(self._name),
+            special_fields_arg=self._special_fields_arg,
         )
 
 
diff --git a/splunk_add_on_ucc_framework/commands/rest_builder/global_config_builder_schema.py b/splunk_add_on_ucc_framework/commands/rest_builder/global_config_builder_schema.py
index 657db66da..8f5d071b3 100644
--- a/splunk_add_on_ucc_framework/commands/rest_builder/global_config_builder_schema.py
+++ b/splunk_add_on_ucc_framework/commands/rest_builder/global_config_builder_schema.py
@@ -14,7 +14,7 @@
 # limitations under the License.
 #
 import json
-from typing import Dict, List, Any
+from typing import Dict, List, Any, Tuple
 
 from splunk_add_on_ucc_framework import global_config as global_config_lib
 
@@ -105,10 +105,11 @@ def _builder_configs(self) -> None:
             )
             self._endpoints[name] = endpoint
             content = self._get_oauth_enitities(config["entity"])
-            fields = self._parse_fields(content)
+            fields, special_fields = self._parse_fields(content)
             entity = SingleModelEntityBuilder(
                 None,
                 fields,
+                special_fields=special_fields,
                 conf_name=config.get("conf"),
             )
             endpoint.add_entity(entity)
@@ -143,10 +144,11 @@ def _builder_settings(self) -> None:
         self._endpoints["settings"] = endpoint
         for setting in self.global_config.settings:
             content = self._get_oauth_enitities(setting["entity"])
-            fields = self._parse_fields(content)
+            fields, special_fields = self._parse_fields(content)
             entity = MultipleModelEntityBuilder(
                 setting["name"],
                 fields,
+                special_fields=special_fields,
             )
             endpoint.add_entity(entity)
             if endpoint.conf_name not in self._settings_conf_file_names:
@@ -174,10 +176,11 @@ def _builder_inputs(self) -> None:
                 )
                 self._endpoints[name] = single_model_endpoint
                 content = self._get_oauth_enitities(input_item["entity"])
-                fields = self._parse_fields(content)
+                fields, special_fields = self._parse_fields(content)
                 single_model_entity = SingleModelEntityBuilder(
                     None,
                     fields,
+                    special_fields=special_fields,
                     conf_name=input_item["conf"],
                 )
                 single_model_endpoint.add_entity(single_model_entity)
@@ -193,28 +196,34 @@ def _builder_inputs(self) -> None:
                 )
                 self._endpoints[name] = data_input_endpoint
                 content = self._get_oauth_enitities(input_item["entity"])
-                fields = self._parse_fields(content)
+                fields, special_fields = self._parse_fields(content)
                 data_input_entity = DataInputEntityBuilder(
                     None,
                     fields,
+                    special_fields=special_fields,
                     input_type=input_item["name"],
                 )
                 data_input_endpoint.add_entity(data_input_entity)
 
     def _parse_fields(
         self, fields_content: List[Dict[str, Any]]
-    ) -> List[RestFieldBuilder]:
-        return [
-            RestFieldBuilder(
+    ) -> Tuple[List[RestFieldBuilder], List[RestFieldBuilder]]:
+        fields = []
+        special_fields = []
+        for field in fields_content:
+            rest_field = RestFieldBuilder(
                 field["field"],
                 _is_true(field.get("required")),
                 _is_true(field.get("encrypted")),
                 field.get("defaultValue"),
                 ValidatorBuilder().build(field.get("validators")),
             )
-            for field in fields_content
-            if field["field"] != "name"
-        ]
+
+            if field["field"] != "name":
+                fields.append(rest_field)
+            else:
+                special_fields.append(rest_field)
+        return fields, special_fields
 
     """
     If the entity contains type oauth then we need to alter the content to generate proper entities to generate
diff --git a/splunk_add_on_ucc_framework/dashboard.py b/splunk_add_on_ucc_framework/dashboard.py
index 30f7460ce..083b34063 100644
--- a/splunk_add_on_ucc_framework/dashboard.py
+++ b/splunk_add_on_ucc_framework/dashboard.py
@@ -47,6 +47,7 @@
     "data_ingestion_tab": "data_ingestion_tab_definition.json",
     "errors_tab": "errors_tab_definition.json",
     "resources_tab": "resources_tab_definition.json",
+    "data_ingestion_modal_definition": "data_ingestion_modal_definition.json",
 }
 
 data_ingestion = (
@@ -242,6 +243,21 @@ def generate_dashboard_content(
             )
         )
 
+    if (
+        definition_json_name
+        == default_definition_json_filename["data_ingestion_modal_definition"]
+    ):
+        content = (
+            utils.get_j2_env()
+            .get_template(definition_json_name)
+            .render(
+                data_ingestion=data_ingestion.format(
+                    lic_usg_condition=lic_usg_condition, determine_by=determine_by
+                ),
+                events_count=events_count.format(addon_name=addon_name.lower()),
+            )
+        )
+
     return content
 
 
diff --git a/splunk_add_on_ucc_framework/entity/interval_entity.py b/splunk_add_on_ucc_framework/entity/interval_entity.py
index c3999cd76..f4a77e1c8 100644
--- a/splunk_add_on_ucc_framework/entity/interval_entity.py
+++ b/splunk_add_on_ucc_framework/entity/interval_entity.py
@@ -17,6 +17,14 @@
 
 from splunk_add_on_ucc_framework.entity.entity import Entity
 
+CRON_REGEX = (
+    r"^("
+    r"(?:-1|\d+(?:\.\d+)?)"  # Non-negative number or -1
+    r"|"
+    r"(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+)"  # CRON interval
+    r")$"
+)
+
 
 class IntervalEntity(Entity):
     def short_form(self) -> Dict[str, Any]:
@@ -30,8 +38,8 @@ def long_form(self) -> Dict[str, Any]:
             "validators": [
                 {
                     "type": "regex",
-                    "errorMsg": f"{self['label']} must be either a non-negative number or -1.",
-                    "pattern": r"^(?:-1|\d+(?:\.\d+)?)$",
+                    "errorMsg": f"{self['label']} must be either a non-negative number, CRON interval or -1.",
+                    "pattern": CRON_REGEX,
                 }
             ],
         }
diff --git a/splunk_add_on_ucc_framework/generators/conf_files/create_account_conf.py b/splunk_add_on_ucc_framework/generators/conf_files/create_account_conf.py
index 05837ffd8..5f220dc58 100644
--- a/splunk_add_on_ucc_framework/generators/conf_files/create_account_conf.py
+++ b/splunk_add_on_ucc_framework/generators/conf_files/create_account_conf.py
@@ -36,7 +36,7 @@ def _set_attributes(self, **kwargs: Any) -> None:
                 if account["name"] == "oauth":
                     continue
                 content = self._gc_schema._get_oauth_enitities(account["entity"])
-                fields = self._gc_schema._parse_fields(content)
+                fields, special_fields = self._gc_schema._parse_fields(content)
                 self.account_fields.append(
                     ("<name>", [f"{f._name} = " for f in fields])
                 )
diff --git a/splunk_add_on_ucc_framework/generators/conf_files/create_settings_conf.py b/splunk_add_on_ucc_framework/generators/conf_files/create_settings_conf.py
index f1c13bb3b..01a09e98b 100644
--- a/splunk_add_on_ucc_framework/generators/conf_files/create_settings_conf.py
+++ b/splunk_add_on_ucc_framework/generators/conf_files/create_settings_conf.py
@@ -33,7 +33,7 @@ def _set_attributes(self, **kwargs: Any) -> None:
             self.conf_spec_file = f"{self.conf_file}.spec"
             for setting in self._global_config.settings:
                 content = self._gc_schema._get_oauth_enitities(setting["entity"])
-                fields = self._gc_schema._parse_fields(content)
+                fields, special_fields = self._gc_schema._parse_fields(content)
                 self.settings_stanzas.append(
                     (setting["name"], [f"{f._name} = " for f in fields])
                 )
diff --git a/splunk_add_on_ucc_framework/global_config_validator.py b/splunk_add_on_ucc_framework/global_config_validator.py
index 35a0bc88c..4aec537c2 100644
--- a/splunk_add_on_ucc_framework/global_config_validator.py
+++ b/splunk_add_on_ucc_framework/global_config_validator.py
@@ -434,39 +434,6 @@ def _validate_alerts(self) -> None:
                     )
                 else:
                     fields.append(entity.get("field"))
-                entity_type = entity.get("type")
-                if entity_type in ("radio", "singleSelect"):
-                    if not entity.get("options"):
-                        raise GlobalConfigValidatorException(
-                            f"{entity_type} type must have options parameter"
-                        )
-                elif (
-                    entity.get("options") and entity_type != "singleSelectSplunkSearch"
-                ):
-                    raise GlobalConfigValidatorException(
-                        f"{entity_type} type must not contain options parameter"
-                    )
-                if entity_type in ("singleSelectSplunkSearch",):
-                    if not all(
-                        [
-                            entity.get("search"),
-                            entity.get("valueField"),
-                            entity.get("labelField"),
-                        ]
-                    ):
-                        raise GlobalConfigValidatorException(
-                            f"{entity_type} type must have search, valueLabel and valueField parameters"
-                        )
-                elif any(
-                    [
-                        entity.get("search"),
-                        entity.get("valueField"),
-                        entity.get("labelField"),
-                    ]
-                ):
-                    raise GlobalConfigValidatorException(
-                        f"{entity_type} type must not contain search, valueField or labelField parameter"
-                    )
 
     def _validate_panels(self) -> None:
         """
diff --git a/splunk_add_on_ucc_framework/schema/schema.json b/splunk_add_on_ucc_framework/schema/schema.json
index 37a515ab4..c223ddd84 100644
--- a/splunk_add_on_ucc_framework/schema/schema.json
+++ b/splunk_add_on_ucc_framework/schema/schema.json
@@ -1,7 +1,7 @@
 {
   "$schema": "http://json-schema.org/draft-07/schema#",
   "definitions": {
-    "AlertEntity": {
+    "AlertSingleSelectSplunkSearchEntity": {
       "type": "object",
       "description": "Alerts configuration. The alert action can help a user to take action on the alerts that have been triggered. The knowledge from Splunk can be sent to an outside service or to pull additional or detailed information related to the trigger details.",
       "properties": {
@@ -16,16 +16,9 @@
           "description": "The text that would be shown in the alert action UI."
         },
         "type": {
+          "const": "singleSelectSplunkSearch",
           "type": "string",
-          "enum": [
-            "text",
-            "textarea",
-            "checkbox",
-            "singleSelect",
-            "radio",
-            "singleSelectSplunkSearch"
-          ],
-          "description": "The type of the user input in the alert. Available choices: “text”, “checkbox”, “singleSelect”, “radio”, “singleSelectSplunkSearch”."
+          "description": "Exactly: singleSelectSplunkSearch"
         },
         "help": {
           "type": "string",
@@ -81,6 +74,48 @@
           }
         }
       },
+      "required": [
+        "field",
+        "label",
+        "type",
+        "search",
+        "valueField",
+        "labelField"
+      ],
+      "additionalProperties": false
+    },
+    "AlertTextEntity": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "const": "text",
+          "type": "string",
+          "description": "Exactly: text"
+        },
+        "field": {
+          "$ref": "#/definitions/Field"
+        },
+        "label": {
+          "$ref": "#/definitions/entityLabel"
+        },
+        "help": {
+          "$ref": "#/definitions/help"
+        },
+        "defaultValue": {
+          "description": "The initial input value.",
+          "anyOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "number"
+            }
+          ]
+        },
+        "required": {
+          "$ref": "#/definitions/required"
+        }
+      },
       "required": [
         "field",
         "label",
@@ -88,6 +123,183 @@
       ],
       "additionalProperties": false
     },
+    "AlertTextareaEntity": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "const": "textarea",
+          "type": "string",
+          "description": "Exactly: textarea"
+        },
+        "field": {
+          "$ref": "#/definitions/Field"
+        },
+        "label": {
+          "$ref": "#/definitions/entityLabel"
+        },
+        "defaultValue": {
+          "type": "string",
+          "description": "The initial input value."
+        },
+        "help": {
+          "$ref": "#/definitions/help"
+        },
+        "required": {
+          "$ref": "#/definitions/required"
+        }
+      },
+      "required": [
+        "field",
+        "label",
+        "type"
+      ],
+      "additionalProperties": false
+    },
+    "AlertCheckboxEntity": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "const": "checkbox",
+          "type": "string",
+          "description": "Exactly: checkbox"
+        },
+        "field": {
+          "$ref": "#/definitions/Field"
+        },
+        "label": {
+          "$ref": "#/definitions/entityLabel"
+        },
+        "defaultValue": {
+          "anyOf": [
+            {
+              "type": "boolean"
+            },
+            {
+              "type": "number"
+            }
+          ],
+          "description": "The initial input value."
+        },
+        "help": {
+          "$ref": "#/definitions/help"
+        },
+        "required": {
+          "$ref": "#/definitions/required"
+        }
+      },
+      "required": [
+        "field",
+        "label",
+        "type"
+      ],
+      "additionalProperties": false
+    },
+    "AlertSingleSelectEntity": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "const": "singleSelect",
+          "type": "string",
+          "description": "Exactly: singleSelect"
+        },
+        "field": {
+          "$ref": "#/definitions/Field"
+        },
+        "label": {
+          "$ref": "#/definitions/entityLabel"
+        },
+        "defaultValue": {
+          "description": "The initial input value.",
+          "anyOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "number"
+            }
+          ]
+        },
+        "help": {
+          "$ref": "#/definitions/help"
+        },
+        "required": {
+          "$ref": "#/definitions/required"
+        },
+        "options": {
+          "type": "object",
+          "description": "Static choices that a user can select in the alert action UI.",
+          "properties": {
+            "items": {
+              "type": "array",
+              "description": "An array of options with a label and a value.",
+              "items": {
+                "$ref": "#/definitions/ValueLabelPair"
+              }
+            }
+          }
+        }
+      },
+      "required": [
+        "field",
+        "label",
+        "type",
+        "options"
+      ],
+      "additionalProperties": false
+    },
+    "AlertRadioEntity": {
+      "type": "object",
+      "properties": {
+        "type": {
+          "const": "radio",
+          "type": "string",
+          "description": "Exactly: radio"
+        },
+        "field": {
+          "$ref": "#/definitions/Field"
+        },
+        "label": {
+          "$ref": "#/definitions/entityLabel"
+        },
+        "defaultValue": {
+          "description": "The initial input value.",
+          "anyOf": [
+            {
+              "type": "string"
+            },
+            {
+              "type": "number"
+            }
+          ]
+        },
+        "help": {
+          "$ref": "#/definitions/help"
+        },
+        "required": {
+          "$ref": "#/definitions/required"
+        },
+        "options": {
+          "type": "object",
+          "description": "Static choices that a user can select in the alert action UI.",
+          "properties": {
+            "items": {
+              "type": "array",
+              "description": "An array of options with a label and a value.",
+              "items": {
+                "$ref": "#/definitions/ValueLabelPair"
+              }
+            }
+          }
+        }
+      },
+      "required": [
+        "field",
+        "label",
+        "type",
+        "options"
+      ],
+      "additionalProperties": false
+    },
     "Alerts": {
       "type": "object",
       "description": "The alert action can help a user to take action on the alerts that have been triggered. ",
@@ -182,22 +394,22 @@
           "items": {
             "anyOf": [
               {
-                "$ref": "#/definitions/TextEntity"
+                "$ref": "#/definitions/AlertTextEntity"
               },
               {
-                "$ref": "#/definitions/TextareaEntity"
+                "$ref": "#/definitions/AlertTextareaEntity"
               },
               {
-                "$ref": "#/definitions/SingleSelectEntity"
+                "$ref": "#/definitions/AlertCheckboxEntity"
               },
               {
-                "$ref": "#/definitions/CheckboxEntity"
+                "$ref": "#/definitions/AlertSingleSelectEntity"
               },
               {
-                "$ref": "#/definitions/RadioEntity"
+                "$ref": "#/definitions/AlertRadioEntity"
               },
               {
-                "$ref": "#/definitions/AlertEntity"
+                "$ref": "#/definitions/AlertSingleSelectSplunkSearchEntity"
               }
             ]
           }
@@ -399,7 +611,8 @@
                   {
                     "type": "string",
                     "enum": [
-                      "ERROR", "CRITICAL"
+                      "ERROR",
+                      "CRITICAL"
                     ]
                   }
                 ]
@@ -532,6 +745,9 @@
             "link": {
               "type": "string",
               "description": "It is a link where the user will be redirected."
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "required": [
@@ -591,35 +807,8 @@
         "encrypted": {
           "$ref": "#/definitions/encrypted"
         },
-        "validators": {
-          "type": "array",
-          "description": "It is used to validate the values of fields using various validators.",
-          "minItems": 1,
-          "items": {
-            "anyOf": [
-              {
-                "$ref": "#/definitions/NumberValidator"
-              },
-              {
-                "$ref": "#/definitions/StringValidator"
-              },
-              {
-                "$ref": "#/definitions/RegexValidator"
-              },
-              {
-                "$ref": "#/definitions/EmailValidator"
-              },
-              {
-                "$ref": "#/definitions/Ipv4Validator"
-              },
-              {
-                "$ref": "#/definitions/UrlValidator"
-              },
-              {
-                "$ref": "#/definitions/DateValidator"
-              }
-            ]
-          }
+        "validators":{
+          "$ref": "#/definitions/AnyValidator"
         },
         "options": {
           "type": "object",
@@ -636,6 +825,9 @@
             },
             "requiredWhenVisible": {
               "$ref": "#/definitions/requiredWhenVisible"
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -731,6 +923,9 @@
               "type": "number",
               "default": 8,
               "description": "Minimum number of rows to display."
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -875,6 +1070,9 @@
               "items": {
                 "$ref": "#/definitions/ValueLabelPair"
               }
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -1018,6 +1216,9 @@
               "type": "string",
               "maxLength": 1,
               "description": "It delimits each value of the field with a predefined character."
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -1085,6 +1286,9 @@
             },
             "requiredWhenVisible": {
               "$ref": "#/definitions/requiredWhenVisible"
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -1296,6 +1500,9 @@
               "items": {
                 "$ref": "#/definitions/ValueLabelPair"
               }
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "required": [
@@ -1394,6 +1601,9 @@
               "type": "boolean",
               "default": false,
               "description": "It defines used encoding for files. If true base64 will be used, if false utf-8 is applied."
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "additionalProperties": false
@@ -1524,6 +1734,9 @@
               "type": "boolean",
               "default": false,
               "description": "Used to include the state for oauth authentication"
+            },
+            "hideForPlatform": {
+              "$ref": "#/definitions/HideForPlatform"
             }
           },
           "allOf": [
@@ -2086,6 +2299,9 @@
         },
         "modifyFieldsOnValue": {
           "$ref": "#/definitions/modifyFieldsOnValue"
+        },
+        "validators":{
+          "$ref": "#/definitions/AnyValidator"
         }
       },
       "additionalProperties": false
@@ -2258,6 +2474,9 @@
         },
         "warning": {
           "$ref": "#/definitions/WarningMessage"
+        },
+        "hideForPlatform": {
+          "$ref": "#/definitions/HideForPlatform"
         }
       },
       "anyOf": [
@@ -2323,6 +2542,36 @@
       ],
       "additionalProperties": false
     },
+    "AnyValidator":{
+      "type": "array",
+      "description": "It is used to validate the values of fields using various validators.",
+      "minItems": 1,
+      "items": {
+        "anyOf": [
+          {
+            "$ref": "#/definitions/NumberValidator"
+          },
+          {
+            "$ref": "#/definitions/StringValidator"
+          },
+          {
+            "$ref": "#/definitions/RegexValidator"
+          },
+          {
+            "$ref": "#/definitions/EmailValidator"
+          },
+          {
+            "$ref": "#/definitions/Ipv4Validator"
+          },
+          {
+            "$ref": "#/definitions/UrlValidator"
+          },
+          {
+            "$ref": "#/definitions/DateValidator"
+          }
+        ]
+      }
+    },
     "ValueLabelPair": {
       "type": "object",
       "description": "Options with a label and a value.",
@@ -2495,6 +2744,9 @@
         },
         "markdownMessage": {
           "$ref": "#/definitions/markdownMessage"
+        },
+        "hideForPlatform": {
+          "$ref": "#/definitions/HideForPlatform"
         }
       },
       "required": [
@@ -2840,6 +3092,9 @@
               },
               "warning": {
                 "$ref": "#/definitions/WarningMessage"
+              },
+              "hideForPlatform": {
+                "$ref": "#/definitions/HideForPlatform"
               }
             },
             "not": {
@@ -2954,6 +3209,9 @@
               "table",
               "entity"
             ]
+          },    
+          "hideForPlatform": {
+            "$ref": "#/definitions/HideForPlatform"
           }
         },
         "hideFieldId": {
@@ -2998,6 +3256,9 @@
       "description": "It chooses whether or not to display the field.",
       "default": true
     },
+    "hideForPlatform": {
+      "$ref": "#/definitions/HideForPlatform"
+    },
     "disableonEdit": {
       "type": "boolean",
       "description": "When the form is in edit mode, the field becomes unable to be edited.",
@@ -3062,6 +3323,17 @@
       ],
       "additionalProperties": false
     },
+    "HideForPlatform":{
+      "description": "Defines for which platform element should be hidden from UI perspective.",
+      "anyOf": [
+        {
+          "const": "cloud"
+        },
+        {
+          "const": "enterprise"
+        }
+      ]
+    },
     "IntervalValue": {
       "anyOf": [
         {
@@ -3074,7 +3346,7 @@
         },
         {
           "type": "string",
-          "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$"
+          "pattern": "^((?:-1|\\d+(?:\\.\\d+)?)|(([\\*\\d{1,2}\\,\\-\\/]+\\s){4}[\\*\\d{1,2}\\,\\-\\/]+))$"
         }
       ]
     },
@@ -3130,4 +3402,4 @@
     "pages"
   ],
   "additionalProperties": false
-}
+}
\ No newline at end of file
diff --git a/splunk_add_on_ucc_framework/templates/data_ingestion_modal_definition.json b/splunk_add_on_ucc_framework/templates/data_ingestion_modal_definition.json
new file mode 100644
index 000000000..460dd3268
--- /dev/null
+++ b/splunk_add_on_ucc_framework/templates/data_ingestion_modal_definition.json
@@ -0,0 +1,148 @@
+{
+  "visualizations": {
+    "data_ingestion_modal_timerange_label_start_viz": {
+      "type": "splunk.singlevalue",
+      "options": {
+        "majorFontSize": 12,
+        "backgroundColor": "transparent",
+        "majorColor": "#9fa4af"
+      },
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_time_label_start_ds"
+      }
+    },
+    "data_ingestion_modal_timerange_label_end_viz": {
+      "type": "splunk.singlevalue",
+      "options": {
+        "majorFontSize": 12,
+        "backgroundColor": "transparent",
+        "majorColor": "#9fa4af"
+      },
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_time_label_end_ds"
+      }
+    },
+    "data_ingestion_modal_data_volume_viz": {
+      "type": "splunk.line",
+      "options": {
+        "xAxisVisibility": "hide",
+        "seriesColors": ["#A870EF"],
+        "yAxisTitleText": "Volume (bytes)",
+        "xAxisTitleText": "Time"
+      },
+      "title": "Data volume",
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_volume_ds"
+      }
+    },
+    "data_ingestion_modal_events_count_viz": {
+      "type": "splunk.line",
+      "options": {
+        "xAxisVisibility": "hide",
+        "xAxisTitleText": "Time",
+        "seriesColors": ["#A870EF"],
+        "yAxisTitleText": "Number of events"
+      },
+      "title": "Number of events",
+      "dataSources": {
+        "primary": "ds_search_1"
+      }
+    }
+  },
+  "dataSources": {
+    "data_ingestion_modal_data_time_label_start_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "| makeresults | addinfo | eval StartDate = strftime(info_min_time, \"%e %b %Y %I:%M%p\") | table StartDate",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "data_ingestion_modal_data_time_label_end_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "| makeresults | addinfo | eval EndDate = strftime(info_max_time, \"%e %b %Y %I:%M%p\") | table EndDate",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "data_ingestion_modal_data_volume_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "{{data_ingestion}}",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "ds_search_1": {
+      "type": "ds.search",
+      "options": {
+        "query": "{{events_count}}",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      },
+      "name": "Security Score vs Spend"
+    }
+  },
+  "defaults": {},
+  "inputs": {
+    "data_ingestion_modal_time_window": {
+      "options": {
+        "defaultValue": "-24h,now",
+        "token": "data_ingestion_modal_time"
+      },
+      "title": "Time Window",
+      "type": "input.timerange"
+    }
+  },
+  "layout": {
+    "type": "grid",
+    "globalInputs": ["data_ingestion_modal_time_window"],
+    "structure": [
+      {
+        "item": "data_ingestion_modal_timerange_label_start_viz",
+        "position": {
+          "x": 0,
+          "y": 50,
+          "w": 100,
+          "h": 20
+        }
+      },
+      {
+        "item": "data_ingestion_modal_timerange_label_end_viz",
+        "position": {
+          "x": 100,
+          "y": 50,
+          "w": 100,
+          "h": 20
+        }
+      },
+      {
+        "item": "data_ingestion_modal_data_volume_viz",
+        "position": {
+          "x": 0,
+          "y": 80,
+          "w": 300,
+          "h": 400
+        }
+      },
+      {
+        "item": "data_ingestion_modal_events_count_viz",
+        "position": {
+          "x": 0,
+          "y": 500,
+          "w": 300,
+          "h": 400
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/splunk_add_on_ucc_framework/templates/data_ingestion_tab_definition.json b/splunk_add_on_ucc_framework/templates/data_ingestion_tab_definition.json
index dd2a6760b..3528f4955 100644
--- a/splunk_add_on_ucc_framework/templates/data_ingestion_tab_definition.json
+++ b/splunk_add_on_ucc_framework/templates/data_ingestion_tab_definition.json
@@ -103,7 +103,12 @@
           }
         },
         "count": 10
-      }
+      },
+      "eventHandlers": [
+        {
+          "type": "table.click.handler"
+        }
+      ]
     }
   },
   "dataSources": {
diff --git a/splunk_add_on_ucc_framework/utils.py b/splunk_add_on_ucc_framework/utils.py
index 32489fc6b..5872de3bf 100644
--- a/splunk_add_on_ucc_framework/utils.py
+++ b/splunk_add_on_ucc_framework/utils.py
@@ -98,7 +98,7 @@ def get_version_from_git() -> str:
     except RuntimeError:
         raise exceptions.IsNotAGitRepo()
     if not version.stage:
-        stage = "R"
+        stage = "+"
     else:
         stage = version.stage[:1]
     try:
diff --git a/ui/.storybook/withSplunkTheme.tsx b/ui/.storybook/withSplunkTheme.tsx
index e76845284..f1cd50b1e 100644
--- a/ui/.storybook/withSplunkTheme.tsx
+++ b/ui/.storybook/withSplunkTheme.tsx
@@ -7,6 +7,7 @@ import React, { Suspense } from 'react';
 import { GlobalBodyStyle, StyledContainer } from '../src/pages/EntryPageStyle';
 import { WaitSpinnerWrapper } from '../src/components/table/CustomTableStyle';
 import fontDefinitions from './fontDefinitions';
+import { PageContextProvider } from '../src/context/PageContext';
 
 const TestStylesForConsistentScreenshots = createGlobalStyle`
     ${fontDefinitions}
@@ -33,14 +34,16 @@ export const withSplunkThemeToolbar = <TRenderer extends Renderer>(
         <AnimationToggleProvider enabled={animation}>
             <TestStylesForConsistentScreenshots />
             <SplunkThemeProvider family={family} density={density} colorScheme={colorScheme}>
-                <GlobalBodyStyle />
-                <StyledContainer>
-                    <Router>
-                        <Suspense fallback={<WaitSpinnerWrapper size="medium" />}>
-                            {StoryFn()}
-                        </Suspense>
-                    </Router>
-                </StyledContainer>
+                <PageContextProvider platform={undefined}>
+                    <GlobalBodyStyle />
+                    <StyledContainer>
+                        <Router>
+                            <Suspense fallback={<WaitSpinnerWrapper size="medium" />}>
+                                {StoryFn()}
+                            </Suspense>
+                        </Router>
+                    </StyledContainer>
+                </PageContextProvider>
             </SplunkThemeProvider>
         </AnimationToggleProvider>
     );
diff --git a/ui/package.json b/ui/package.json
index a7c38e326..14c8fec92 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -21,22 +21,22 @@
     "test-storybook:update-snapshots": "yarn run test-storybook -u"
   },
   "dependencies": {
-    "@splunk/dashboard-action-buttons": "^27.3.1",
-    "@splunk/dashboard-context": "^27.3.1",
-    "@splunk/dashboard-core": "^27.3.1",
-    "@splunk/dashboard-presets": "^27.3.1",
-    "@splunk/dashboard-state": "^27.3.1",
-    "@splunk/dashboard-types": "^27.3.1",
-    "@splunk/react-icons": "^4.7.0",
+    "@splunk/dashboard-action-buttons": "^27.4.0",
+    "@splunk/dashboard-context": "^27.4.0",
+    "@splunk/dashboard-core": "^27.4.0",
+    "@splunk/dashboard-presets": "^27.4.0",
+    "@splunk/dashboard-state": "^27.4.0",
+    "@splunk/dashboard-types": "^27.4.0",
+    "@splunk/react-icons": "^4.8.0",
     "@splunk/react-page": "^7.1.0",
     "@splunk/react-toast-notifications": "^0.11.3",
-    "@splunk/react-ui": "^4.37.0",
+    "@splunk/react-ui": "^4.38.0",
     "@splunk/search-job": "^3.1.0",
     "@splunk/splunk-utils": "^3.1.0",
-    "@splunk/themes": "^0.21.0",
+    "@splunk/themes": "^0.22.0",
     "@splunk/ui-utils": "^1.7.1",
-    "@splunk/visualization-context": "^26.2.1",
-    "@storybook/test": "^8.3.1",
+    "@splunk/visualization-context": "^26.3.0",
+    "@storybook/test": "^8.3.5",
     "axios": "^1.7.7",
     "immutability-helper": "^3.1.1",
     "license-webpack-plugin": "^4.0.2",
@@ -45,30 +45,30 @@
     "react": "^16.14.0",
     "react-dom": "^16.14.0",
     "react-is": "^16.13.1",
-    "react-router-dom": "^6.26.2",
+    "react-router-dom": "^6.27.0",
     "styled-components": "^5.3.11",
     "uuid": "^10.0.0",
     "zod": "^3.23.8"
   },
   "devDependencies": {
-    "@babel/core": "^7.25.2",
-    "@babel/eslint-parser": "^7.25.1",
-    "@babel/plugin-transform-runtime": "^7.25.4",
-    "@babel/preset-env": "^7.25.4",
-    "@babel/preset-react": "^7.24.7",
+    "@babel/core": "^7.25.8",
+    "@babel/eslint-parser": "^7.25.8",
+    "@babel/plugin-transform-runtime": "^7.25.7",
+    "@babel/preset-env": "^7.25.8",
+    "@babel/preset-react": "^7.25.7",
     "@kickstartds/core": "^4.0.5",
     "@kickstartds/storybook-addon-jsonschema": "^4.0.0",
     "@splunk/babel-preset": "^4.0.0",
     "@splunk/eslint-config": "^4.0.0",
     "@splunk/webpack-configs": "^7.0.2",
-    "@storybook/addon-a11y": "^8.3.1",
-    "@storybook/addon-essentials": "^8.3.1",
-    "@storybook/addon-interactions": "^8.3.1",
-    "@storybook/addon-links": "^8.3.1",
+    "@storybook/addon-a11y": "^8.3.5",
+    "@storybook/addon-essentials": "^8.3.5",
+    "@storybook/addon-interactions": "^8.3.5",
+    "@storybook/addon-links": "^8.3.5",
     "@storybook/addon-webpack5-compiler-babel": "^3.0.3",
-    "@storybook/blocks": "^8.3.1",
-    "@storybook/react": "^8.3.1",
-    "@storybook/react-webpack5": "^8.3.1",
+    "@storybook/blocks": "^8.3.5",
+    "@storybook/react": "^8.3.5",
+    "@storybook/react-webpack5": "^8.3.5",
     "@storybook/test-runner": "^0.19.1",
     "@testing-library/dom": "^8.20.1",
     "@testing-library/jest-dom": "^6.5.0",
@@ -76,8 +76,8 @@
     "@testing-library/user-event": "^14.5.2",
     "@types/jest": "^29.5.13",
     "@types/js-yaml": "^4.0.9",
-    "@types/node": "^20.16.5",
-    "@types/react": "^16.14.61",
+    "@types/node": "^20.16.11",
+    "@types/react": "^16.14.62",
     "@typescript-eslint/eslint-plugin": "^6.21.0",
     "@typescript-eslint/parser": "^6.21.0",
     "babel-eslint": "^10.1.0",
@@ -89,38 +89,40 @@
     "eslint-config-airbnb": "^18.2.1",
     "eslint-config-prettier": "^7.2.0",
     "eslint-import-resolver-typescript": "^3.6.3",
-    "eslint-plugin-import": "^2.30.0",
+    "eslint-plugin-import": "^2.31.0",
     "eslint-plugin-jest": "^28.8.3",
     "eslint-plugin-jsx-a11y": "^6.10.0",
     "eslint-plugin-prettier": "^4.2.1",
-    "eslint-plugin-react": "^7.36.1",
+    "eslint-plugin-react": "^7.37.1",
     "eslint-plugin-react-hooks": "^4.6.2",
-    "eslint-plugin-storybook": "^0.8.0",
+    "eslint-plugin-storybook": "^0.9.0",
     "fork-ts-checker-webpack-plugin": "^9.0.2",
     "jest": "^29.7.0",
     "jest-environment-jsdom": "^29.7.0",
     "jest-image-snapshot": "^6.4.0",
     "js-yaml": "^4.1.0",
-    "msw": "2.4.8",
+    "msw": "2.4.11",
     "msw-storybook-addon": "^2.0.3",
     "prettier": "^2.8.8",
     "querystring-es3": "^0.2.1",
-    "storybook": "^8.3.1",
+    "storybook": "^8.3.5",
     "style-loader": "^4.0.0",
     "stylelint": "^14.16.1",
     "ts-node": "^10.9.2",
-    "typescript": "^5.6.2",
+    "typescript": "^5.6.3",
     "undici": "^5.28.4",
     "url": "^0.11.4",
-    "webpack": "^5.94.0",
+    "webpack": "^5.95.0",
     "webpack-cli": "^5.1.4",
     "webpack-dev-server": "^5.1.0",
     "webpack-merge": "^6.0.1"
   },
   "resolutions": {
     "@npmcli/git": "^2.1.0",
-    "@types/react": "^16.14.61",
+    "@types/react": "^16.14.62",
     "css-what": "^5.1.0",
+    "d3-color": "^3.1.0",
+    "d3-interpolate": "^3.0.1",
     "glob-parent": "^5.1.2",
     "postcss": "^8.4.47",
     "semver": "^7.6.3",
diff --git a/ui/src/components/BaseFormView/BaseFormTypes.ts b/ui/src/components/BaseFormView/BaseFormTypes.ts
index 073782362..7b75a4638 100644
--- a/ui/src/components/BaseFormView/BaseFormTypes.ts
+++ b/ui/src/components/BaseFormView/BaseFormTypes.ts
@@ -18,6 +18,7 @@ import {
     TextEntity,
 } from '../../types/globalConfig/entities';
 import { GlobalConfig } from '../../types/globalConfig/globalConfig';
+import { PageContextProviderType } from '../../context/PageContext';
 
 export type CurrentBaseFormInput =
     | Record<string, AcceptableFormValueOrNull>
@@ -71,6 +72,7 @@ export interface BaseFormProps {
     stanzaName: string;
     groupName?: string;
     handleFormSubmit: (isSubmitting: boolean, closeEntity: boolean) => void;
+    pageContext?: PageContextProviderType;
 }
 
 export interface BaseFormState {
diff --git a/ui/src/components/BaseFormView/BaseFormView.tsx b/ui/src/components/BaseFormView/BaseFormView.tsx
index 1d788da54..ba71bd584 100644
--- a/ui/src/components/BaseFormView/BaseFormView.tsx
+++ b/ui/src/components/BaseFormView/BaseFormView.tsx
@@ -50,6 +50,8 @@ import {
     getModifiedState,
 } from '../FormModifications/FormModifications';
 import { GlobalConfig } from '../../types/globalConfig/globalConfig';
+import { PageContextProviderType } from '../../context/PageContext';
+import { shouldHideForPlatform } from '../../util/pageContext';
 
 function onCustomHookError(params: { methodName: string; error?: CustomHookError }) {
     // eslint-disable-next-line no-console
@@ -63,6 +65,8 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
 
     context!: React.ContextType<typeof TableContext>;
 
+    pageContext?: PageContextProviderType;
+
     flag: boolean;
 
     currentInput: CurrentBaseFormInput;
@@ -140,6 +144,7 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
             props.mode === MODE_EDIT || props.mode === MODE_CONFIG
                 ? `${this.props.serviceName}/${encodeURIComponent(this.props.stanzaName)}`
                 : `${this.props.serviceName}`;
+        this.pageContext = props.pageContext;
 
         this.util = {
             setState: (callback) => {
@@ -382,6 +387,13 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
                             typeof e.defaultValue !== 'undefined' ? e?.defaultValue : null;
                         tempEntity.display =
                             typeof e?.options?.display !== 'undefined' ? e.options.display : true;
+
+                        tempEntity.display = shouldHideForPlatform(
+                            e.options?.hideForPlatform,
+                            props.pageContext?.platform
+                        )
+                            ? false
+                            : tempEntity.display;
                         tempEntity.error = false;
                         tempEntity.disabled = e?.options?.enable === false;
                         temState[e.field] = tempEntity;
@@ -393,6 +405,14 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
                         tempEntity.value = e.encrypted ? '' : tempEntity.value;
                         tempEntity.display =
                             typeof e?.options?.display !== 'undefined' ? e.options.display : true;
+
+                        tempEntity.display = shouldHideForPlatform(
+                            e.options?.hideForPlatform,
+                            props.pageContext?.platform
+                        )
+                            ? false
+                            : tempEntity.display;
+
                         tempEntity.error = false;
                         tempEntity.disabled = e?.options?.enable === false;
                         if (e.field === 'name') {
@@ -404,8 +424,17 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
                     } else if (props.mode === MODE_CLONE) {
                         tempEntity.value =
                             e.field === 'name' || e.encrypted ? '' : this.currentInput?.[e.field];
+
                         tempEntity.display =
                             typeof e?.options?.display !== 'undefined' ? e.options.display : true;
+
+                        tempEntity.display = shouldHideForPlatform(
+                            e.options?.hideForPlatform,
+                            props.pageContext?.platform
+                        )
+                            ? false
+                            : tempEntity.display;
+
                         tempEntity.error = false;
                         tempEntity.disabled = e?.options?.enable === false;
                         temState[e.field] = tempEntity;
@@ -419,6 +448,14 @@ class BaseFormView extends PureComponent<BaseFormProps, BaseFormState> {
                         tempEntity.value = e.encrypted ? '' : tempEntity.value;
                         tempEntity.display =
                             typeof e?.options?.display !== 'undefined' ? e.options.display : true;
+
+                        tempEntity.display = shouldHideForPlatform(
+                            e.options?.hideForPlatform,
+                            props.pageContext?.platform
+                        )
+                            ? false
+                            : tempEntity.display;
+
                         tempEntity.error = false;
                         tempEntity.disabled = e?.options?.enable === false;
                         if (e.field === 'name') {
diff --git a/ui/src/components/BaseFormView/stories/BaseFormView.stories.tsx b/ui/src/components/BaseFormView/stories/BaseFormView.stories.tsx
index 0d05bdb3f..f1586e3f5 100644
--- a/ui/src/components/BaseFormView/stories/BaseFormView.stories.tsx
+++ b/ui/src/components/BaseFormView/stories/BaseFormView.stories.tsx
@@ -11,9 +11,11 @@ import { setUnifiedConfig } from '../../../util/util';
 import { GlobalConfig } from '../../../types/globalConfig/globalConfig';
 import { Mode } from '../../../constants/modes';
 import { BaseFormProps } from '../BaseFormTypes';
+import { Platforms } from '../../../types/globalConfig/pages';
 
 interface BaseFormStoriesProps extends BaseFormProps {
     config: GlobalConfig;
+    platform?: Platforms;
 }
 
 const meta = {
@@ -27,6 +29,7 @@ const meta = {
                 page={props.page}
                 stanzaName={props.stanzaName}
                 handleFormSubmit={props.handleFormSubmit}
+                pageContext={{ platform: props.platform }}
             />
         );
     },
@@ -44,6 +47,7 @@ export const OuathBasic: Story = {
         stanzaName: 'unknownStanza',
         handleFormSubmit: fn(),
         config: getConfigOauthBasic() as GlobalConfig,
+        platform: 'enterprise',
     },
 };
 
@@ -70,3 +74,28 @@ export const BothOauth: Story = {
         config: PAGE_CONFIG_BOTH_OAUTH as GlobalConfig,
     },
 };
+
+export const OuathBasicEnterprise: Story = {
+    args: {
+        currentServiceState: {},
+        serviceName: 'account',
+        mode: 'create' as Mode,
+        page: 'configuration',
+        stanzaName: 'unknownStanza',
+        handleFormSubmit: fn(),
+        config: getConfigOauthBasic() as GlobalConfig,
+        platform: 'enterprise',
+    },
+};
+export const OuathBasicCloud: Story = {
+    args: {
+        currentServiceState: {},
+        serviceName: 'account',
+        mode: 'create' as Mode,
+        page: 'configuration',
+        stanzaName: 'unknownStanza',
+        handleFormSubmit: fn(),
+        config: getConfigOauthBasic() as GlobalConfig,
+        platform: 'cloud',
+    },
+};
diff --git a/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-cloud-chromium.png b/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-cloud-chromium.png
new file mode 100644
index 000000000..3ce1e412a
--- /dev/null
+++ b/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-cloud-chromium.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23a31401d799e69c31fbae3b5d460c171c2746ee6bdbebdc73fbdd1e4b72ac34
+size 27208
diff --git a/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-enterprise-chromium.png b/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-enterprise-chromium.png
new file mode 100644
index 000000000..3ce1e412a
--- /dev/null
+++ b/ui/src/components/BaseFormView/stories/__images__/BaseFormView-ouath-basic-enterprise-chromium.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:23a31401d799e69c31fbae3b5d460c171c2746ee6bdbebdc73fbdd1e4b72ac34
+size 27208
diff --git a/ui/src/components/ConfigurationFormView.jsx b/ui/src/components/ConfigurationFormView.jsx
index 2be92e75a..bdc5060c4 100644
--- a/ui/src/components/ConfigurationFormView.jsx
+++ b/ui/src/components/ConfigurationFormView.jsx
@@ -12,6 +12,7 @@ import { axiosCallWrapper } from '../util/axiosCallWrapper';
 import { MODE_CONFIG } from '../constants/modes';
 import { WaitSpinnerWrapper } from './table/CustomTableStyle';
 import { PAGE_CONF } from '../constants/pages';
+import PageContext from '../context/PageContext';
 
 const ButtonWrapper = styled.div`
     margin-left: 270px !important;
@@ -73,15 +74,20 @@ function ConfigurationFormView({ serviceName }) {
     // Ref is used here to call submit method of form only
     return Object.keys(currentServiceState).length ? (
         <>
-            <BaseFormView // nosemgrep: typescript.react.security.audit.react-no-refs.react-no-refs
-                ref={form}
-                page={PAGE_CONF}
-                stanzaName={serviceName}
-                serviceName="settings"
-                mode={MODE_CONFIG}
-                currentServiceState={currentServiceState}
-                handleFormSubmit={handleFormSubmit}
-            />
+            <PageContext.Consumer>
+                {(pageContext) => (
+                    <BaseFormView // nosemgrep: typescript.react.security.audit.react-no-refs.react-no-refs
+                        ref={form}
+                        page={PAGE_CONF}
+                        stanzaName={serviceName}
+                        serviceName="settings"
+                        mode={MODE_CONFIG}
+                        currentServiceState={currentServiceState}
+                        handleFormSubmit={handleFormSubmit}
+                        pageContext={pageContext}
+                    />
+                )}
+            </PageContext.Consumer>
             <ButtonWrapper>
                 <StyledButton
                     className="saveBtn"
diff --git a/ui/src/components/EntityModal/EntityModal.tsx b/ui/src/components/EntityModal/EntityModal.tsx
index 1075b0b6f..dabe627e8 100644
--- a/ui/src/components/EntityModal/EntityModal.tsx
+++ b/ui/src/components/EntityModal/EntityModal.tsx
@@ -9,6 +9,7 @@ import { Mode, MODE_CLONE, MODE_CREATE, MODE_EDIT } from '../../constants/modes'
 import { StyledButton } from '../../pages/EntryPageStyle';
 import BaseFormView from '../BaseFormView/BaseFormView';
 import { StandardPages } from '../../types/components/shareableTypes';
+import PageContext from '../../context/PageContext';
 
 const ModalWrapper = styled(Modal)`
     width: 800px;
@@ -81,15 +82,20 @@ class EntityModal extends Component<EntityModalProps, EntityModalState> {
                     onRequestClose={this.handleRequestClose}
                 />
                 <Modal.Body>
-                    <BaseFormView // nosemgrep: typescript.react.security.audit.react-no-refs.react-no-refs
-                        ref={this.form}
-                        page={this.props.page}
-                        serviceName={this.props.serviceName}
-                        mode={this.props.mode}
-                        stanzaName={this.props.stanzaName || 'unknownStanza'}
-                        handleFormSubmit={this.handleFormSubmit}
-                        groupName={this.props.groupName}
-                    />
+                    <PageContext.Consumer>
+                        {(pageContext) => (
+                            <BaseFormView
+                                ref={this.form}
+                                page={this.props.page}
+                                serviceName={this.props.serviceName}
+                                mode={this.props.mode}
+                                stanzaName={this.props.stanzaName || 'unknownStanza'}
+                                handleFormSubmit={this.handleFormSubmit}
+                                groupName={this.props.groupName}
+                                pageContext={pageContext}
+                            />
+                        )}
+                    </PageContext.Consumer>
                 </Modal.Body>
                 <Modal.Footer>
                     <StyledButton
diff --git a/ui/src/components/EntityPage/EntityPage.tsx b/ui/src/components/EntityPage/EntityPage.tsx
index 6bf43f0d8..181d6b0fd 100644
--- a/ui/src/components/EntityPage/EntityPage.tsx
+++ b/ui/src/components/EntityPage/EntityPage.tsx
@@ -15,6 +15,7 @@ import { SubTitleComponent } from '../../pages/Input/InputPageStyle';
 import { PAGE_INPUT } from '../../constants/pages';
 import { StyledButton } from '../../pages/EntryPageStyle';
 import { StandardPages } from '../../types/components/shareableTypes';
+import PageContext from '../../context/PageContext';
 
 interface EntityPageProps {
     handleRequestClose: () => void;
@@ -90,15 +91,21 @@ function EntityPage({
                         <Heading style={{ paddingLeft: '30px' }} level={3}>
                             {_(formLabel)}
                         </Heading>
-                        <BaseFormView // nosemgrep: typescript.react.security.audit.react-no-refs.react-no-refs
-                            ref={form}
-                            page={page}
-                            serviceName={serviceName}
-                            mode={mode}
-                            stanzaName={stanzaName || ''}
-                            handleFormSubmit={handleFormSubmit}
-                            groupName={groupName}
-                        />
+
+                        <PageContext.Consumer>
+                            {(pageContext) => (
+                                <BaseFormView // nosemgrep: typescript.react.security.audit.react-no-refs.react-no-refs
+                                    ref={form}
+                                    page={page}
+                                    serviceName={serviceName}
+                                    mode={mode}
+                                    stanzaName={stanzaName || ''}
+                                    handleFormSubmit={handleFormSubmit}
+                                    groupName={groupName}
+                                    pageContext={pageContext}
+                                />
+                            )}
+                        </PageContext.Consumer>
                     </ShadowedDiv>
                     <ButtonRow>
                         <StyledButton
diff --git a/ui/src/components/MenuInput/MenuInput.tsx b/ui/src/components/MenuInput/MenuInput.tsx
index a35fcc2b8..430cd5665 100644
--- a/ui/src/components/MenuInput/MenuInput.tsx
+++ b/ui/src/components/MenuInput/MenuInput.tsx
@@ -13,6 +13,8 @@ import { getUnifiedConfigs } from '../../util/util';
 import CustomMenu from '../CustomMenu';
 import { StyledButton } from '../../pages/EntryPageStyle';
 import { invariant } from '../../util/invariant';
+import { usePageContext } from '../../context/usePageContext';
+import { shouldHideForPlatform } from '../../util/pageContext';
 
 const CustomSubTitle = styled.span`
     color: ${variables.brandColorD20};
@@ -47,12 +49,22 @@ function MenuInput({ handleRequestOpen }: MenuInputProps) {
     const [isSubMenu, setIsSubMenu] = useState(true);
 
     const { pages } = getUnifiedConfigs();
+    const pageContext = usePageContext();
 
     const { inputs } = pages;
     invariant(inputs);
     const groupsMenu = 'groupsMenu' in inputs ? inputs.groupsMenu : undefined;
     const customMenuField = 'menu' in inputs ? inputs.menu : undefined;
-    const { services } = inputs;
+
+    const [services, setServices] = useState(inputs.services);
+
+    useEffect(() => {
+        setServices(
+            inputs.services.filter(
+                (service) => !shouldHideForPlatform(service.hideForPlatform, pageContext.platform)
+            )
+        );
+    }, [inputs.services, pageContext.platform]);
 
     const closeReasons = ['clickAway', 'escapeKey', 'offScreen', 'toggleClick'];
     const toggle = (
@@ -177,7 +189,7 @@ function MenuInput({ handleRequestOpen }: MenuInputProps) {
             }));
         }
         return getSlidingsPanels(servicesGroup);
-    }, []); // eslint-disable-line react-hooks/exhaustive-deps
+    }, [services]); // eslint-disable-line react-hooks/exhaustive-deps
 
     // Making a dropdown if we have more than one service
     const makeSingleSelectDropDown = () => (
diff --git a/ui/src/context/PageContext.tsx b/ui/src/context/PageContext.tsx
new file mode 100644
index 000000000..66bfd88d5
--- /dev/null
+++ b/ui/src/context/PageContext.tsx
@@ -0,0 +1,29 @@
+import React, { createContext, ReactNode } from 'react';
+
+import { Platforms } from '../types/globalConfig/pages';
+
+export type PageContextProviderType = {
+    platform: Platforms;
+};
+
+const PageContext = createContext<PageContextProviderType | undefined>(undefined);
+
+export function PageContextProvider({
+    children,
+    platform,
+}: {
+    children: ReactNode;
+    platform: Platforms;
+}) {
+    return (
+        <PageContext.Provider
+            value={{
+                platform,
+            }}
+        >
+            {children}
+        </PageContext.Provider>
+    );
+}
+
+export default PageContext;
diff --git a/ui/src/context/usePageContext.ts b/ui/src/context/usePageContext.ts
new file mode 100644
index 000000000..db869d3fb
--- /dev/null
+++ b/ui/src/context/usePageContext.ts
@@ -0,0 +1,10 @@
+import { useContext } from 'react';
+import PageContext from './PageContext';
+
+export function usePageContext() {
+    const pageContext = useContext(PageContext);
+    if (!pageContext) {
+        throw new Error('usePageContext must be used within <PageContextProvider />');
+    }
+    return pageContext;
+}
diff --git a/ui/src/hooks/usePlatform.ts b/ui/src/hooks/usePlatform.ts
new file mode 100644
index 000000000..40954830f
--- /dev/null
+++ b/ui/src/hooks/usePlatform.ts
@@ -0,0 +1,76 @@
+import { useEffect, useState } from 'react';
+import SearchJob from '@splunk/search-job';
+
+import { Platforms } from '../types/globalConfig/pages';
+import { GlobalConfig } from '../types/globalConfig/globalConfig';
+import { StandardPages } from '../types/components/shareableTypes';
+import { AnyEntity } from '../components/BaseFormView/BaseFormTypes';
+
+const checkIfHideInAnyEntity = (entities: AnyEntity[]): boolean => {
+    const isUsed = entities.find((entity) => {
+        if ('hideForPlatform' in entity && entity?.options?.hideForPlatform) {
+            return true;
+        }
+        return false;
+    });
+    return !!isUsed || false;
+};
+
+const checkIfHideForPlatformUsed = (globalConfig: GlobalConfig, page?: StandardPages): boolean => {
+    if (!page || page === 'configuration') {
+        const isHideUsedInConfig = globalConfig.pages.configuration.tabs.find(
+            (tab) => tab.hideForPlatform || checkIfHideInAnyEntity(tab.entity || []) || false
+        );
+        if (isHideUsedInConfig) {
+            return true;
+        }
+    }
+
+    if (!page || page === 'inputs') {
+        const isHideUsedInService = globalConfig.pages.inputs?.services.find(
+            (service) =>
+                service.hideForPlatform || checkIfHideInAnyEntity(service.entity || []) || false
+        );
+        if (isHideUsedInService) {
+            return true;
+        }
+    }
+
+    return false;
+};
+
+export const usePlatform = (globalConfig: GlobalConfig, page?: StandardPages) => {
+    const [platform, setPlatform] = useState<Platforms>();
+
+    useEffect(() => {
+        if (!checkIfHideForPlatformUsed(globalConfig, page)) {
+            return () => {};
+        }
+
+        // search call to get server info, cloud or enterprise
+        const mySearchJob = SearchJob.create(
+            {
+                search: `| rest/services/server/info  splunk_server=local`,
+                earliest_time: '-15m', // time does not matter
+                latest_time: 'now',
+            },
+            { cache: true, cancelOnUnload: true } // default cache 10min = 600 in seconds
+        );
+
+        const resultsSubscription = mySearchJob
+            .getResults()
+            .subscribe((result: { results?: Array<{ instance_type?: string }> }) => {
+                if (result.results?.[0]?.instance_type === 'cloud') {
+                    setPlatform('cloud');
+                } else {
+                    setPlatform('enterprise');
+                }
+            });
+
+        return () => {
+            resultsSubscription.unsubscribe();
+        };
+    }, [globalConfig, page]);
+
+    return platform;
+};
diff --git a/ui/src/pages/Configuration/ConfigurationPage.tsx b/ui/src/pages/Configuration/ConfigurationPage.tsx
index c5acd5226..33016a6c8 100644
--- a/ui/src/pages/Configuration/ConfigurationPage.tsx
+++ b/ui/src/pages/Configuration/ConfigurationPage.tsx
@@ -17,6 +17,9 @@ import OpenApiDownloadButton from '../../components/DownloadButton/OpenApiDownlo
 import SubDescription from '../../components/SubDescription/SubDescription';
 import UccCredit from '../../components/UCCCredit/UCCCredit';
 import { TabSchema } from '../../types/globalConfig/pages';
+import { PageContextProvider } from '../../context/PageContext';
+import { shouldHideForPlatform } from '../../util/pageContext';
+import { usePlatform } from '../../hooks/usePlatform';
 
 const StyledHeaderControls = styled.div`
     display: inline-flex;
@@ -44,10 +47,17 @@ type Tab = z.infer<typeof TabSchema>;
 function ConfigurationPage() {
     const unifiedConfigs = getUnifiedConfigs();
     const { title, description, subDescription, tabs } = unifiedConfigs.pages.configuration;
-    const permittedTabNames = useMemo(() => tabs.map((tab) => tab.name), [tabs]);
+
+    const platform = usePlatform(unifiedConfigs, 'configuration');
+
+    const filteredTabs = tabs.filter(
+        (tab) => !shouldHideForPlatform(tab.hideForPlatform, platform)
+    );
+
+    const permittedTabNames = useMemo(() => filteredTabs.map((tab) => tab.name), [filteredTabs]);
     const isComponentMounted = useRef(false);
 
-    const [activeTabId, setActiveTabId] = useState(tabs[0].name);
+    const [activeTabId, setActiveTabId] = useState(filteredTabs[0].name);
     const [isPageOpen, setIsPageOpen] = useState(false);
 
     const query = useQuery();
@@ -118,7 +128,7 @@ function ConfigurationPage() {
 
     return (
         <ErrorBoundary>
-            <>
+            <PageContextProvider platform={platform}>
                 <div style={isPageOpen ? { display: 'none' } : { display: 'block' }}>
                     <ColumnLayout gutter={8}>
                         <Row>
@@ -139,14 +149,14 @@ function ConfigurationPage() {
                         </Row>
                     </ColumnLayout>
                     <TabBar activeTabId={activeTabId} onChange={handleChange}>
-                        {tabs.map((tab) => (
+                        {filteredTabs.map((tab) => (
                             <TabBar.Tab key={tab.name} label={_(tab.title)} tabId={tab.name} />
                         ))}
                     </TabBar>
                 </div>
-                {tabs.map((tab) => getTabContent(tab))}
+                {filteredTabs.map((tab) => getTabContent(tab))}
                 <ToastMessages position="top-right" />
-            </>
+            </PageContextProvider>
         </ErrorBoundary>
     );
 }
diff --git a/ui/src/pages/Dashboard/Custom.tsx b/ui/src/pages/Dashboard/Custom.tsx
index 8695e9c40..2d364666a 100644
--- a/ui/src/pages/Dashboard/Custom.tsx
+++ b/ui/src/pages/Dashboard/Custom.tsx
@@ -1,5 +1,4 @@
 import React from 'react';
-
 import { DashboardCore } from '@splunk/dashboard-core';
 import { DashboardContextProvider } from '@splunk/dashboard-context';
 import EnterpriseViewOnlyPreset from '@splunk/dashboard-presets/EnterpriseViewOnlyPreset';
diff --git a/ui/src/pages/Dashboard/DashboardModal.tsx b/ui/src/pages/Dashboard/DashboardModal.tsx
new file mode 100644
index 000000000..96d72aaf2
--- /dev/null
+++ b/ui/src/pages/Dashboard/DashboardModal.tsx
@@ -0,0 +1,208 @@
+import React, { useEffect, useCallback, useRef, useState, useMemo } from 'react';
+import { DashboardCore } from '@splunk/dashboard-core';
+import { DashboardContextProvider } from '@splunk/dashboard-context';
+import EnterpriseViewOnlyPreset from '@splunk/dashboard-presets/EnterpriseViewOnlyPreset';
+import type { DashboardCoreApi } from '@splunk/dashboard-types';
+import { EventType } from '@splunk/react-events-viewer/common-types';
+import { getUnifiedConfigs } from '../../util/util';
+
+import {
+    createNewQueryForDataVolumeInModal,
+    createNewQueryForNumberOfEventsInModal,
+    fetchDropdownValuesFromQuery,
+    getActionButtons,
+    loadDashboardJsonDefinition,
+    queryMap,
+} from './utils';
+import { FieldValue, SearchResponse } from './DataIngestion.types';
+
+/**
+ * @param {object} props
+ * @param {string} props.selectValueForDropdownInModal state for value in the modal
+ * @param {string} props.selectTitleForDropdownInModal state for title in the modal
+ * @param {string} props.setDataIngestionDropdownValues set state for dropdown values in modal
+ */
+export const DashboardModal = ({
+    selectValueForDropdownInModal,
+    selectTitleForDropdownInModal,
+    setDataIngestionDropdownValues,
+}: {
+    selectValueForDropdownInModal: string;
+    selectTitleForDropdownInModal: string;
+    setDataIngestionDropdownValues: React.Dispatch<React.SetStateAction<object[]>>;
+}) => {
+    const dashboardCoreApi = useRef<DashboardCoreApi | null>(null);
+    const setDashboardCoreApi = useCallback((api: DashboardCoreApi | null) => {
+        dashboardCoreApi.current = api;
+    }, []);
+    const [dataIngestionModalDef, setDataIngestionModalDef] = useState<Record<
+        string,
+        unknown
+    > | null>(null);
+    const [dropdownFetchedValues, setDropdownFetchedValues] = useState<SearchResponse<EventType>[]>(
+        []
+    );
+
+    const globalConfig = useMemo(() => getUnifiedConfigs(), []);
+
+    const mergeInputValues = (
+        activeValues?: string[],
+        inactiveValues?: string[] | string
+    ): Record<string, string>[] => {
+        let safeInactiveValues: Record<string, string>[] = [];
+        if (typeof inactiveValues === 'string') {
+            safeInactiveValues = [{ label: `${inactiveValues} (disabled)`, value: inactiveValues }];
+        } else if (Array.isArray(inactiveValues)) {
+            safeInactiveValues = inactiveValues.map((item: string) => ({
+                label: `${item} (disabled)`,
+                value: item,
+            }));
+        }
+
+        let safeActiveValues: Record<string, string>[] = [];
+        if (typeof activeValues === 'string') {
+            safeActiveValues = [{ label: activeValues, value: activeValues }];
+        } else if (Array.isArray(activeValues)) {
+            safeActiveValues = activeValues.map((item: string) => ({
+                label: item,
+                value: item,
+            }));
+        }
+        return [...safeActiveValues, ...safeInactiveValues];
+    };
+
+    const processResults = (results: Record<string, string>[], fieldKey: string) =>
+        results.reduce((extractColumnsValues: Record<string, string>[], value) => {
+            if (queryMap[fieldKey] === value.field) {
+                const dropDownValues = JSON.parse(value.values);
+                return dropDownValues.map((item: FieldValue) => ({
+                    label: item.value,
+                    value: item.value,
+                }));
+            }
+            return extractColumnsValues;
+        }, []);
+
+    const updateModalData = useCallback(() => {
+        if (!dataIngestionModalDef) {
+            return null;
+        }
+
+        const copyDataIngestionModalJson = JSON.parse(JSON.stringify(dataIngestionModalDef));
+        let extractColumnsValues: Record<string, string>[] = [];
+
+        if (selectTitleForDropdownInModal === 'Input') {
+            const activeState = dropdownFetchedValues[0]?.results[0]?.Active;
+            const activeInputs = dropdownFetchedValues[0]?.results[0]?.event_input;
+            const inactiveInputs = dropdownFetchedValues[0]?.results[1]?.event_input;
+
+            // Handle cases where only active or inactive inputs exist
+            if (activeState === 'yes') {
+                extractColumnsValues = mergeInputValues(activeInputs, inactiveInputs);
+            } else if (activeState === 'no') {
+                extractColumnsValues = mergeInputValues(inactiveInputs, activeInputs);
+            }
+        } else if (selectTitleForDropdownInModal === 'Account') {
+            extractColumnsValues = processResults(
+                dropdownFetchedValues[1]?.results || [],
+                selectTitleForDropdownInModal
+            );
+        } else {
+            extractColumnsValues = processResults(
+                dropdownFetchedValues[2]?.results || [],
+                selectTitleForDropdownInModal
+            );
+        }
+
+        setDataIngestionDropdownValues(extractColumnsValues);
+
+        const eventsQuery = createNewQueryForNumberOfEventsInModal(
+            selectTitleForDropdownInModal,
+            selectValueForDropdownInModal,
+            copyDataIngestionModalJson.dataSources.ds_search_1.options.query
+        );
+        const dataVolumeQuery = createNewQueryForDataVolumeInModal(
+            selectTitleForDropdownInModal,
+            selectValueForDropdownInModal,
+            copyDataIngestionModalJson.dataSources.data_ingestion_modal_data_volume_ds.options.query
+        );
+
+        copyDataIngestionModalJson.dataSources.data_ingestion_modal_data_volume_ds.options.query =
+            dataVolumeQuery;
+        copyDataIngestionModalJson.dataSources.ds_search_1.options.query = eventsQuery;
+
+        // Modify visualizations only for specific cases
+        if (
+            selectTitleForDropdownInModal === 'Input' ||
+            selectTitleForDropdownInModal === 'Account'
+        ) {
+            // Remove data volume visualization for "Input" and "Account"
+            delete copyDataIngestionModalJson.visualizations.data_ingestion_modal_data_volume_viz;
+            delete copyDataIngestionModalJson.dataSources.data_ingestion_modal_data_volume_ds;
+            delete copyDataIngestionModalJson.layout.structure[2];
+            copyDataIngestionModalJson.layout.structure =
+                copyDataIngestionModalJson.layout.structure.filter(
+                    (item: Record<string, unknown>) => item !== null
+                );
+            copyDataIngestionModalJson.layout.structure[2].position.y = 80;
+        } else if (selectTitleForDropdownInModal === 'Host') {
+            // Remove event count visualization for "Host"
+            delete copyDataIngestionModalJson.visualizations.data_ingestion_modal_events_count_viz;
+            delete copyDataIngestionModalJson.dataSources.ds_search_1;
+            delete copyDataIngestionModalJson.layout.structure[3];
+            copyDataIngestionModalJson.layout.structure =
+                copyDataIngestionModalJson.layout.structure.filter(
+                    (item: Record<string, unknown>) => item !== null
+                );
+        }
+
+        return copyDataIngestionModalJson;
+    }, [
+        dataIngestionModalDef,
+        dropdownFetchedValues,
+        selectTitleForDropdownInModal,
+        selectValueForDropdownInModal,
+        setDataIngestionDropdownValues,
+    ]);
+
+    useEffect(() => {
+        const fetchDropdownValues = async () => {
+            const values = await fetchDropdownValuesFromQuery(globalConfig);
+            setDropdownFetchedValues(values);
+        };
+
+        fetchDropdownValues();
+    }, [globalConfig]);
+
+    // Update the dashboard when the modal data changes
+    useEffect(() => {
+        const updateDefinitionForDashboardModal = async () => {
+            if (dashboardCoreApi.current && dataIngestionModalDef) {
+                const updatedModalData = await updateModalData();
+                if (updatedModalData) {
+                    dashboardCoreApi.current?.updateDefinition(updatedModalData);
+                }
+            }
+        };
+
+        updateDefinitionForDashboardModal();
+    }, [dataIngestionModalDef, selectValueForDropdownInModal, updateModalData]);
+
+    useEffect(() => {
+        loadDashboardJsonDefinition(
+            'data_ingestion_modal_definition.json',
+            setDataIngestionModalDef
+        );
+    }, []);
+
+    return dataIngestionModalDef ? (
+        <DashboardContextProvider preset={EnterpriseViewOnlyPreset}>
+            <DashboardCore
+                width="100%"
+                height="auto"
+                dashboardCoreApiRef={setDashboardCoreApi}
+                actionMenus={getActionButtons('data_ingestion')}
+            />
+        </DashboardContextProvider>
+    ) : null;
+};
diff --git a/ui/src/pages/Dashboard/DashboardPage.tsx b/ui/src/pages/Dashboard/DashboardPage.tsx
index 25cdfc996..4b47070d1 100644
--- a/ui/src/pages/Dashboard/DashboardPage.tsx
+++ b/ui/src/pages/Dashboard/DashboardPage.tsx
@@ -20,7 +20,7 @@ import { getUnifiedConfigs } from '../../util/util';
  * @param {boolean} isComponentMounted used to remove component data leakage, determines if component is still mounted and dataHandler referes to setState
  * @param {string} dataHandler callback, called with data as params
  */
-function loadJson(
+export function loadJson(
     fileName: string,
     isComponentMounted: boolean,
     dataHandler: (data: Record<string, unknown>) => void
diff --git a/ui/src/pages/Dashboard/DataIngestion.tsx b/ui/src/pages/Dashboard/DataIngestion.tsx
index d27067f26..a0659ad05 100644
--- a/ui/src/pages/Dashboard/DataIngestion.tsx
+++ b/ui/src/pages/Dashboard/DataIngestion.tsx
@@ -1,18 +1,21 @@
-import React, { useEffect, useMemo, useState } from 'react';
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
 import { DashboardCore } from '@splunk/dashboard-core';
 import { DashboardContextProvider } from '@splunk/dashboard-context';
 import EnterpriseViewOnlyPreset from '@splunk/dashboard-presets/EnterpriseViewOnlyPreset';
 import Search from '@splunk/react-ui/Search';
 import Message from '@splunk/react-ui/Message';
 import type { DashboardCoreApi } from '@splunk/dashboard-types';
-
 import { debounce } from 'lodash';
+import TabLayout from '@splunk/react-ui/TabLayout';
+
 import {
     createNewQueryBasedOnSearchAndHideTraffic,
     getActionButtons,
     makeVisualAdjustmentsOnDataIngestionPage,
     addDescriptionToExpandedViewByOptions,
 } from './utils';
+import { DataIngestionModal } from './DataIngestionModal';
+import { DashboardModal } from './DashboardModal';
 
 const VIEW_BY_INFO_MAP: Record<string, string> = {
     Input: 'Volume metrics are not available when the Input view is selected.',
@@ -25,15 +28,21 @@ export const DataIngestionDashboard = ({
 }: {
     dashboardDefinition: Record<string, unknown>;
 }) => {
-    const dashboardCoreApi = React.useRef<DashboardCoreApi | null>();
-
+    const dashboardCoreApi = useRef<DashboardCoreApi | null>(null);
     const [searchInput, setSearchInput] = useState('');
     const [viewByInput, setViewByInput] = useState<string>('');
     const [toggleNoTraffic, setToggleNoTraffic] = useState(false);
-
+    const [selectValueForDropdownInModal, setSelectValueForDropdownInModal] = useState<
+        string | null
+    >(null);
+    const [selectTitleForDropdownInModal, setSelectTitleForDropdownInModal] = useState<
+        string | null
+    >(null);
+    const [dataIngestionDropdownValues, setDataIngestionDropdownValues] = useState([{}]);
     useEffect(() => {
         makeVisualAdjustmentsOnDataIngestionPage();
 
+        // Select the target node for observing mutations
         const targetNode = document.querySelector(
             '[data-input-id="data_ingestion_table_input"] button'
         );
@@ -41,9 +50,12 @@ export const DataIngestionDashboard = ({
         const callback = (mutationsList: MutationRecord[]) => {
             mutationsList.forEach((mutation: MutationRecord) => {
                 if (mutation.attributeName === 'data-test-value') {
+                    // Update the dashboard definition
                     dashboardCoreApi.current?.updateDefinition(dashboardDefinition);
                     setSearchInput('');
                     setToggleNoTraffic(false);
+
+                    // Get the view-by option from the mutated element
                     const viewByOption = (mutation.target as HTMLElement)?.getAttribute('label');
                     setViewByInput(viewByOption || '');
                 }
@@ -52,25 +64,29 @@ export const DataIngestionDashboard = ({
                 }
             });
         };
-        // mutation is used to detect if dropdown value is changed
-        // todo: do a better solution
+
+        // Create a MutationObserver instance and start observing
         const observer = new MutationObserver(callback);
         if (targetNode) {
             observer.observe(targetNode, config);
         }
 
+        // Set the current "view by" option when the component mounts
         const currentViewBy = document
             .querySelector('[data-input-id="data_ingestion_table_input"] button')
             ?.getAttribute('label');
 
         setViewByInput(currentViewBy || '');
 
+        // Clean-up function to disconnect the observer when the component unmounts
         return () => {
-            observer.disconnect();
+            if (observer && targetNode) {
+                observer.disconnect();
+            }
         };
     }, [dashboardDefinition]);
 
-    const setDashboardCoreApi = React.useCallback((api: DashboardCoreApi | null) => {
+    const setDashboardCoreApi = useCallback((api: DashboardCoreApi | null) => {
         dashboardCoreApi.current = api;
     }, []);
 
@@ -109,13 +125,58 @@ export const DataIngestionDashboard = ({
 
     const infoMessage = VIEW_BY_INFO_MAP[viewByInput];
 
+    const handleDashboardEvent = useCallback(async (event) => {
+        if (
+            event.type === 'datasource.done' &&
+            event.targetId === 'data_ingestion_table_ds' &&
+            event.payload.data
+        ) {
+            const modalInputSelectorName = event.payload.data?.fields[0]?.name;
+            setSelectTitleForDropdownInModal(modalInputSelectorName);
+        }
+        if (
+            event.type === 'cell.click' &&
+            event.targetId === 'data_ingestion_table_viz' &&
+            event.payload.cellIndex === 0 &&
+            event.payload.value
+        ) {
+            setSelectValueForDropdownInModal(event.payload.value);
+        }
+    }, []);
+
+    const dashboardPlugin = useMemo(
+        () => ({ onEventTrigger: handleDashboardEvent }),
+        [handleDashboardEvent]
+    );
     return (
         <>
             <DashboardContextProvider
                 preset={EnterpriseViewOnlyPreset}
                 initialDefinition={dashboardDefinition}
+                dashboardPlugin={dashboardPlugin}
             >
                 <>
+                    <DataIngestionModal
+                        open={!!selectValueForDropdownInModal}
+                        handleRequestClose={() => setSelectValueForDropdownInModal(null)}
+                        title={selectTitleForDropdownInModal || ''}
+                        acceptBtnLabel="Done"
+                        dataIngestionDropdownValues={dataIngestionDropdownValues}
+                        selectValueForDropdownInModal={selectValueForDropdownInModal || ''}
+                        setSelectValueForDropdownInModal={setSelectValueForDropdownInModal}
+                    >
+                        <TabLayout.Panel
+                            label="data_ingestion_modal"
+                            panelId="dataIngestionModalDefTabPanel"
+                        >
+                            <DashboardModal
+                                selectValueForDropdownInModal={selectValueForDropdownInModal || ''}
+                                selectTitleForDropdownInModal={selectTitleForDropdownInModal || ''}
+                                setDataIngestionDropdownValues={setDataIngestionDropdownValues}
+                            />
+                        </TabLayout.Panel>
+                    </DataIngestionModal>
+
                     <DashboardCore
                         width="100%"
                         height="auto"
@@ -132,23 +193,12 @@ export const DataIngestionDashboard = ({
                             style={{ minWidth: '150px', gridRow: '6', gridColumn: '1' }}
                         />
                     </div>
-                    {/* <div id="switch_hide_no_traffic_wrapper" className="invisible_before_moving">
-                        <Switch
-                            id="switch_hide_no_traffic"
-                            value={toggleNoTraffic}
-                            onClick={handleChangeSwitch}
-                            selected={!!toggleNoTraffic}
-                            appearance="toggle"
-                        >
-                            Hide items with no traffic
-                        </Switch>
-                    </div> */}
                     <div id="info_message_for_data_ingestion" className="invisible_before_moving">
-                        {infoMessage ? (
+                        {infoMessage && (
                             <Message appearance="fill" type="info">
                                 {infoMessage}
                             </Message>
-                        ) : null}
+                        )}
                     </div>
                 </>
             </DashboardContextProvider>
diff --git a/ui/src/pages/Dashboard/DataIngestion.types.ts b/ui/src/pages/Dashboard/DataIngestion.types.ts
new file mode 100644
index 000000000..e49b3b209
--- /dev/null
+++ b/ui/src/pages/Dashboard/DataIngestion.types.ts
@@ -0,0 +1,22 @@
+import { EventType } from '@splunk/react-events-viewer/common-types';
+
+export interface FieldValue {
+    value: string;
+    count: number;
+}
+
+export interface SearchMessage {
+    type: string;
+    text: string;
+}
+
+export interface SearchResponse<TResult = EventType> {
+    sid?: string;
+    fields: { name: string }[];
+    highlighted?: unknown;
+    init_offset: number;
+    messages: SearchMessage[];
+    preview: boolean;
+    post_process_count: number;
+    results: TResult[];
+}
diff --git a/ui/src/pages/Dashboard/DataIngestionModal.tsx b/ui/src/pages/Dashboard/DataIngestionModal.tsx
new file mode 100644
index 000000000..a79fde076
--- /dev/null
+++ b/ui/src/pages/Dashboard/DataIngestionModal.tsx
@@ -0,0 +1,176 @@
+import Modal from '@splunk/react-ui/Modal';
+import React, { ReactElement, useCallback, useEffect } from 'react';
+import styled from 'styled-components';
+
+import { variables } from '@splunk/themes';
+import Button from '@splunk/react-ui/Button';
+import Dropdown from '@splunk/react-ui/Dropdown';
+import Menu from '@splunk/react-ui/Menu';
+import Checkmark from '@splunk/react-icons/Checkmark';
+import P from '@splunk/react-ui/Paragraph';
+import { StyledButton } from '../EntryPageStyle';
+import { makeVisualAdjustmentsOnDataIngestionModal } from './utils';
+
+const ModalWrapper = styled(Modal)`
+    width: 60vw;
+    height: 80vh;
+    margin-top: 3vh;
+`;
+
+const ModalHeader = styled(Modal.Header)`
+    background-color: ${variables.neutral200};
+`;
+
+const ModalFooter = styled(Modal.Footer)`
+    background-color: ${variables.neutral200};
+`;
+
+const ModalBody = styled(Modal.Body)`
+    background-color: ${variables.neutral200};
+    padding: 15px 30px;
+    height: 70vh;
+`;
+
+const FooterButtonGroup = styled('div')`
+    display: grid;
+    grid-template-columns: 0.35fr 1fr;
+    margin: 0px ${variables.spacingSmall};
+
+    .footerBtn:first-child {
+        justify-self: start;
+    }
+
+    .footerBtn:last-child {
+        justify-self: end;
+    }
+`;
+
+export const DataIngestionModal = ({
+    open = false,
+    handleRequestClose,
+    title,
+    acceptBtnLabel = 'Done',
+    dataIngestionDropdownValues,
+    selectValueForDropdownInModal,
+    setSelectValueForDropdownInModal,
+    children,
+}: {
+    open?: boolean;
+    handleRequestClose: () => void;
+    title?: string;
+    acceptBtnLabel?: string;
+    dataIngestionDropdownValues: Record<string, string>[];
+    selectValueForDropdownInModal: string;
+    setSelectValueForDropdownInModal: React.Dispatch<React.SetStateAction<string | null>>;
+    children: ReactElement;
+}) => {
+    const toggle = (
+        <Button label={selectValueForDropdownInModal} style={{ minWidth: '160px' }} isMenu />
+    );
+    const items: React.ReactElement[] = [];
+
+    const filteredItemByValue = (findItem: string) =>
+        dataIngestionDropdownValues.filter((item) => item.value === findItem)[0];
+    const filteredItemByLabel = useCallback(
+        (findItem: string) => dataIngestionDropdownValues.find((item) => item.label === findItem),
+        [dataIngestionDropdownValues]
+    );
+    // add selected value
+    const selectedItem = filteredItemByValue(selectValueForDropdownInModal);
+    items.push(
+        <React.Fragment key={`selected-${selectedItem?.value}`}>
+            <Menu.Item key={`selected-${selectedItem?.label}`} className="dropdown_menu_item">
+                <Checkmark style={{ color: '#00A4FD', marginRight: '2px' }} />
+                {selectedItem?.label}
+            </Menu.Item>
+            <Menu.Divider key="divider" />
+        </React.Fragment>
+    );
+
+    // add list in dropdown except the selected value
+    dataIngestionDropdownValues.forEach((item, index) => {
+        if (selectValueForDropdownInModal !== item.value) {
+            items.push(
+                // eslint-disable-next-line react/no-array-index-key
+                <Menu.Item key={`${item.label}-${index}`} className="dropdown_menu_item">
+                    {item.label}
+                </Menu.Item>
+            );
+        }
+    });
+
+    // handle onchange dropdown values
+    const handleDropdownClick = useCallback(
+        (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {
+            const selectedValue = (e.target as HTMLElement).textContent || '';
+            const findSelectedValue = filteredItemByLabel(selectedValue);
+            if (findSelectedValue) {
+                setSelectValueForDropdownInModal(findSelectedValue.value);
+            }
+        },
+        [filteredItemByLabel, setSelectValueForDropdownInModal]
+    );
+
+    useEffect(() => {
+        makeVisualAdjustmentsOnDataIngestionModal();
+    }, [open]);
+
+    return (
+        <ModalWrapper open={open}>
+            <ModalHeader
+                onRequestClose={handleRequestClose}
+                title={`Data ingestion details (By ${title})`}
+            />
+            <ModalBody>
+                {children}
+                <div id="data_ingestion_modal_dropdown" className="invisible_before_moving">
+                    <P id="data_ingestion_dropdown_label">{title}</P>
+                    <Dropdown toggle={toggle}>
+                        <Menu
+                            stopScrollPropagation
+                            style={{
+                                maxHeight: '40vh',
+                                overflow: 'auto',
+                                padding: '5px 0px',
+                                margin: '10px 0px',
+                            }}
+                            onClick={handleDropdownClick}
+                        >
+                            {items}
+                        </Menu>
+                    </Dropdown>
+                </div>
+            </ModalBody>
+            <ModalFooter>
+                <FooterButtonGroup>
+                    <Button
+                        id="open_search_on_visualization"
+                        label="View ingested events in search"
+                        openInNewContext
+                        onClick={() => {
+                            const searchButtonForNumberOfEvents = document.querySelector(
+                                '#data_ingestion_modal_events_count_viz [data-test="open-search-button"]'
+                            ) as HTMLElement | null;
+
+                            if (searchButtonForNumberOfEvents) {
+                                searchButtonForNumberOfEvents.click();
+                            } else {
+                                const searchButtonForDataVolume = document.querySelector(
+                                    '#data_ingestion_modal_data_volume_viz [data-test="open-search-button"]'
+                                ) as HTMLElement | null;
+                                searchButtonForDataVolume?.click();
+                            }
+                        }}
+                    />
+                    <StyledButton
+                        id="done_button_footer"
+                        className="footerBtn"
+                        appearance="primary"
+                        onClick={handleRequestClose}
+                        label={acceptBtnLabel}
+                    />
+                </FooterButtonGroup>
+            </ModalFooter>
+        </ModalWrapper>
+    );
+};
diff --git a/ui/src/pages/Dashboard/Overview.tsx b/ui/src/pages/Dashboard/Overview.tsx
index 962535dd4..7f5837485 100644
--- a/ui/src/pages/Dashboard/Overview.tsx
+++ b/ui/src/pages/Dashboard/Overview.tsx
@@ -23,7 +23,7 @@ export const OverviewDashboard = ({
             preset={EnterpriseViewOnlyPreset}
             initialDefinition={dashboardDefinition}
         >
-            <DashboardCore width="100%" height="auto" actionMenus={getActionButtons('overview')} />
+            <DashboardCore width="99%" height="auto" actionMenus={getActionButtons('overview')} />
         </DashboardContextProvider>
     ) : null;
 };
diff --git a/ui/src/pages/Dashboard/dashboardStyle.css b/ui/src/pages/Dashboard/dashboardStyle.css
index c65a61e65..3b60a7654 100644
--- a/ui/src/pages/Dashboard/dashboardStyle.css
+++ b/ui/src/pages/Dashboard/dashboardStyle.css
@@ -53,7 +53,7 @@
 /* data ingestion */
 
 [data-input-id='data_ingestion_input'] {
-    grid-column: 7 / 8;
+    grid-column: 8 / 9;
     grid-row: 2;
 }
 
@@ -75,7 +75,7 @@
 }
 
 #data_ingestion_table_viz {
-    grid-column: 1 / 8;
+    grid-column: 1 / 9;
     height: 100%;
     max-height: 500px;
     grid-row: 6;
@@ -89,11 +89,13 @@
 #data_ingestion_data_volume_viz {
     grid-row: 3 / 6;
     margin-top: 20px;
+    grid-column: 1 / 5;
 }
 
 #data_ingestion_events_count_viz {
     grid-row: 3 / 6;
     margin-top: 20px;
+    grid-column: 5 / 9;
 }
 
 #data_ingestion_search {
@@ -233,6 +235,32 @@
     height: 300px;
 }
 
+/* data ingestion table modal */
+
+#data_ingestion_modal_dropdown {
+    grid-row: 1;
+    grid-column: 1;
+    align-content: center;
+    margin-left: 2px;
+    width: 160px;
+}
+
+[data-input-id='data_ingestion_modal_time_window'] {
+    grid-row: 1;
+    grid-column: 1;
+    margin-left: 170px;
+}
+
+#data_ingestion_dropdown_label {
+    margin: 0;
+    margin-bottom: 5px;
+}
+
+#data_ingestion_modal_timerange_label_end_viz {
+    margin-left: 145px;
+    display: flex;
+}
+
 /* shared styles for time labels */
 #overview_timerange_label_start_viz,
 #overview_timerange_label_end_viz,
@@ -241,7 +269,9 @@
 #errors_tab_timerange_label_start_viz,
 #errors_tab_timerange_label_end_viz,
 #resource_tab_timerange_label_start_viz,
-#resource_tab_timerange_label_end_viz {
+#resource_tab_timerange_label_end_viz,
+#data_ingestion_modal_timerange_label_start_viz,
+#data_ingestion_modal_timerange_label_end_viz {
     inline-size: fit-content;
     grid-column: 1;
     width: 145px;
@@ -296,7 +326,8 @@
 #overview_timerange_label_end_viz::before,
 #data_ingestion_timerange_label_end_viz::before,
 #errors_tab_timerange_label_end_viz::before,
-#resource_tab_timerange_label_end_viz::before {
+#resource_tab_timerange_label_end_viz::before,
+#data_ingestion_modal_timerange_label_end_viz::before {
     content: '- ';
     margin: auto;
     color: var(--muted-text-color);
@@ -306,9 +337,35 @@
     max-height: 400px;
 }
 
+[data-test-panel-id='dataIngestionTabPanel'] [data-test='grid-layout-canvas'] {
+    grid-template-columns: repeat(8, 12%);
+    overflow-x: hidden;
+}
+
+[data-test-panel-id='dataIngestionModalDefTabPanel'] [data-test='input-layout-container'],
+[data-test-panel-id='dataIngestionModalDefTabPanel'] [data-test='grid-layout-canvas'] {
+    background-color: var(--muted-text-color);
+    padding: 0px;
+    display: grid;
+}
+
 /* muted color */
 #main_page_description_viz p,
 #data_ingestion_description_viz p,
 #errors_tab_description_viz p {
     color: var(--muted-text-color);
 }
+
+#data_ingestion_table_viz [data-test='table-container'] td:first-child {
+    cursor: pointer;
+    color: #006eaa !important;
+}
+
+#data_ingestion_table_viz [data-test='table-container'] td:first-child:hover {
+    text-decoration: underline;
+}
+
+.dropdown_menu_item {
+    padding: 6px 16px;
+    min-width: 200px;
+}
diff --git a/ui/src/pages/Dashboard/stories/__images__/DashboardPage-dashboard-page-view-chromium.png b/ui/src/pages/Dashboard/stories/__images__/DashboardPage-dashboard-page-view-chromium.png
index aef1ca1ac..e226fb1b2 100644
--- a/ui/src/pages/Dashboard/stories/__images__/DashboardPage-dashboard-page-view-chromium.png
+++ b/ui/src/pages/Dashboard/stories/__images__/DashboardPage-dashboard-page-view-chromium.png
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:17c26b26a1e89743412d372462e05c4df6c4132583e6925531851ca44c789e8b
-size 83057
+oid sha256:b76cccc94c0132d1a5ecb447866fba813284d36657c5b083e95d79492435e656
+size 86497
diff --git a/ui/src/pages/Dashboard/utils.tsx b/ui/src/pages/Dashboard/utils.tsx
index 7a2580162..433263fca 100644
--- a/ui/src/pages/Dashboard/utils.tsx
+++ b/ui/src/pages/Dashboard/utils.tsx
@@ -1,5 +1,29 @@
 import { RefreshButton, ExportButton, OpenSearchButton } from '@splunk/dashboard-action-buttons';
 import React from 'react';
+import SearchJob from '@splunk/search-job';
+import { GlobalConfig } from '../../types/globalConfig/globalConfig';
+import { getBuildDirPath } from '../../util/script';
+import { SearchResponse } from './DataIngestion.types';
+
+/**
+ *
+ * @param {string} fileName name of json file in custom dir
+ * @param {string} setData callback, called with data as params
+ */
+export function loadDashboardJsonDefinition(
+    fileName: string,
+    dataHandler: (data: Record<string, unknown>) => void
+) {
+    fetch(/* webpackIgnore: true */ `${getBuildDirPath()}/custom/${fileName}`)
+        .then((res) => res.json())
+        .then((external) => {
+            dataHandler(external);
+        })
+        .catch((e) => {
+            // eslint-disable-next-line no-console
+            console.error('Loading file failed: ', e);
+        });
+}
 
 export const waitForElementToDisplay = (
     selector: string,
@@ -53,7 +77,16 @@ export const waitForElementToDisplayAndMoveThemToCanvas = (
     );
 };
 
-const queryMap: Record<string, string> = {
+export const queryMapForEvents: Record<string, string> = {
+    'Source type': 'sourcetype_ingested',
+    Source: 'modular_input_name',
+    Host: 'event_host',
+    Index: 'event_index',
+    Account: 'event_account',
+    Input: 'event_input',
+};
+
+export const queryMap: Record<string, string> = {
     'Source type': 'st',
     Source: 's',
     Host: 'h',
@@ -131,6 +164,12 @@ export const getActionButtons = (serviceName: string) => {
     return actionMenus;
 };
 
+export const makeVisualAdjustmentsOnDataIngestionModal = () => {
+    waitForElementToDisplayAndMoveThemToCanvas(
+        '#data_ingestion_modal_dropdown',
+        '[data-input-id="data_ingestion_modal_time_window"]'
+    );
+};
 export const makeVisualAdjustmentsOnDataIngestionPage = () => {
     waitForElementToDisplayAndMoveThemToCanvas(
         '[data-input-id="data_ingestion_input"]',
@@ -203,3 +242,126 @@ export const addDescriptionToExpandedViewByOptions = (target: Element) => {
         }
     });
 };
+
+export const createNewQueryForDataVolumeInModal = (
+    selectedInput: string,
+    selectedValue: string,
+    query: string
+) => {
+    const selectedLabel = queryMap[selectedInput];
+    const updatedQuery = query.replace('|', `${selectedLabel} = "${selectedValue}" |`);
+
+    return updatedQuery;
+};
+
+export const createNewQueryForNumberOfEventsInModal = (
+    selectedInput: string,
+    selectedValue: string,
+    query: string
+) => {
+    const selectedLabel = queryMapForEvents[selectedInput];
+    const updatedQuery = query.replace('|', `${selectedLabel} = "${selectedValue}" |`);
+
+    return updatedQuery;
+};
+
+function getLicenseUsageSearchParams(globalConfig: GlobalConfig) {
+    const dashboard = globalConfig?.pages.dashboard as {
+        settings: {
+            custom_license_usage?: {
+                determine_by?: string;
+                search_condition?: string[];
+            };
+        };
+    };
+    const inputNames = globalConfig?.pages.inputs?.services;
+    let licUsgCondition = inputNames?.map((item) => `${item.name}*`).join(',');
+
+    try {
+        const licUsgType = dashboard?.settings?.custom_license_usage?.determine_by || 'Source';
+        const licUsgSearchItems = dashboard?.settings?.custom_license_usage?.search_condition;
+        const determineBy = queryMap[licUsgType] || 's';
+
+        const combinedItems = [
+            licUsgCondition || [],
+            ...(licUsgSearchItems?.map((el) => `"${el}"`) || []),
+        ];
+
+        licUsgCondition = combinedItems.join(',');
+        return [determineBy, licUsgCondition];
+    } catch (error) {
+        // eslint-disable-next-line no-console
+        console.info(
+            'No custom license usage search condition found. Proceeding with default parameters.'
+        );
+        return null;
+    }
+}
+export async function fetchDropdownValuesFromQuery(
+    globalConfig: GlobalConfig
+): Promise<SearchResponse[]> {
+    const licenseUsageParams = getLicenseUsageSearchParams(globalConfig);
+
+    const timeForDataIngestionTableStart = document
+        ?.querySelector('[data-input-id="data_ingestion_input"] button')
+        ?.getAttribute('data-test-earliest');
+    const timeForDataIngestionTableEnd = document
+        ?.querySelector('[data-input-id="data_ingestion_input"] button')
+        ?.getAttribute('data-test-latest');
+    // Construct the three queries
+    const eventInputQuery = `| rest splunk_server=local /services/data/inputs/all | where $eai:acl.app$ = "${globalConfig.meta.name}" | eval Active=if(lower(disabled) IN ("1", "true", "t"), "no", "yes") | table title, Active | stats values(title) as event_input by Active`;
+    const eventAccountQuery = `index=_internal source=*${globalConfig.meta.name}* action=events_ingested earliest=${timeForDataIngestionTableStart} latest=${timeForDataIngestionTableEnd} | fieldsummary | fields field values | where field IN ("event_account")`;
+
+    let eventQuery = '';
+    if (licenseUsageParams) {
+        const [determineBy, licUsgCondition] = licenseUsageParams;
+        if (determineBy && licUsgCondition) {
+            eventQuery = `index=_internal source=*license_usage.log type=Usage earliest=${timeForDataIngestionTableStart} latest=${timeForDataIngestionTableEnd} ${determineBy} IN (${licUsgCondition}) | fieldsummary | fields field values | where field IN ("s", "st", "idx", "h")`;
+        }
+    }
+
+    if (!eventQuery) {
+        eventQuery = `index=_internal source=*license_usage.log type=Usage earliest=${timeForDataIngestionTableStart} latest=${timeForDataIngestionTableEnd} | fieldsummary | fields field values | where field IN ("s", "st", "idx", "h")`;
+    }
+
+    // Function to run a search job for a given query
+    const runSearchJob = (searchQuery: string): Promise<SearchResponse> =>
+        new Promise((resolve, reject) => {
+            const searchJob = SearchJob.create({ search: searchQuery });
+
+            const resultsSubscription = searchJob.getResults({ count: 0 }).subscribe({
+                next: (response: SearchResponse) => {
+                    try {
+                        resolve(response);
+                    } catch (error) {
+                        reject(error);
+                    }
+                },
+                // eslint-disable-next-line @typescript-eslint/no-explicit-any
+                error: (error: unknown) => {
+                    reject(error);
+                },
+                complete: () => {
+                    resultsSubscription.unsubscribe();
+                },
+            });
+        });
+
+    // Execute all queries concurrently
+    const queryPromises = [
+        runSearchJob(eventInputQuery),
+        runSearchJob(eventAccountQuery),
+        runSearchJob(eventQuery),
+    ];
+
+    // Return the combined results from all queries
+    return Promise.all(queryPromises)
+        .then(
+            (results) => results // Combined response of all queries
+        )
+        .catch((error) => {
+            // eslint-disable-next-line no-console
+            console.error('Error in fetching queries data:', error);
+            return [];
+        });
+}
diff --git a/ui/src/pages/Input/InputPage.tsx b/ui/src/pages/Input/InputPage.tsx
index 3254f8583..18c8135ed 100644
--- a/ui/src/pages/Input/InputPage.tsx
+++ b/ui/src/pages/Input/InputPage.tsx
@@ -28,6 +28,9 @@ import ErrorBoundary from '../../components/ErrorBoundary/ErrorBoundary';
 import EntityPage from '../../components/EntityPage/EntityPage';
 import SubDescription from '../../components/SubDescription/SubDescription';
 import useQuery from '../../hooks/useQuery';
+import { PageContextProvider } from '../../context/PageContext';
+import { shouldHideForPlatform } from '../../util/pageContext';
+import { usePlatform } from '../../hooks/usePlatform';
 
 const Row = styled(ColumnLayout.Row)`
     padding: 5px 0px;
@@ -68,6 +71,8 @@ function isTableSchema(inputs: InputsPage): inputs is InputsPageTable {
 function InputPage(): ReactElement {
     const [entity, setEntity] = useState<EntityState>({ open: false });
     const unifiedConfigs = getUnifiedConfigs();
+    const platform = usePlatform(unifiedConfigs, 'inputs');
+
     const inputsPage = unifiedConfigs.pages.inputs;
 
     let services: ServiceTable[] = [];
@@ -79,11 +84,16 @@ function InputPage(): ReactElement {
     if (inputsPage) {
         if (isTableSchema(inputsPage)) {
             ({ services, title, table, description, subDescription } = inputsPage);
+            services = services.filter(
+                (service) => !shouldHideForPlatform(service.hideForPlatform, platform)
+            );
         } else {
             ({ services, title } = inputsPage);
+            services = services.filter(
+                (service) => !shouldHideForPlatform(service.hideForPlatform, platform)
+            );
         }
     }
-
     // check if the tabs feature is enabled or not.
     const isTabs = !table;
 
@@ -258,89 +268,94 @@ function InputPage(): ReactElement {
         },
         [activeTabId] // eslint-disable-line react-hooks/exhaustive-deps
     );
-
     return (
         <ErrorBoundary>
-            <TableContextProvider>
-                {entity.isInputPageStyle && entity.open ? generatePageDialog() : null}
-                <div
-                    style={
-                        entity.isInputPageStyle && entity.open
-                            ? { display: 'none' }
-                            : { display: 'block' }
-                    }
-                >
-                    <ColumnLayout gutter={8}>
-                        <Row>
-                            <ColumnLayout.Column
-                                className={isTabs ? 'title_menu_column' : ''}
-                                span={9}
-                            >
-                                <TitleComponent>
-                                    {isTabs ? _(selectedTab?.title || '') : _(title || '')}
-                                </TitleComponent>
-                                <SubTitleComponent className={isTabs ? 'pageSubtitle' : undefined}>
-                                    {isTabs
-                                        ? _(isTableFullSchema ? selectedTab?.description : '')
-                                        : _(description || '')}
-                                </SubTitleComponent>
-                                <SubDescription
-                                    text={subDescription?.text || ''}
-                                    links={subDescription?.links}
-                                />
-                            </ColumnLayout.Column>
-                            <ColumnLayout.Column
-                                className={isTabs ? 'title_menu_column' : 'dropdown'}
-                                span={3}
-                            >
-                                {!isTabs && <MenuInput handleRequestOpen={handleRequestOpen} />}
-                            </ColumnLayout.Column>
-                        </Row>
-                    </ColumnLayout>
-                    {isTabs ? (
-                        <>
-                            <TabBar activeTabId={activeTabId} onChange={onTabChange}>
-                                {services.map((service) => (
-                                    <TabBar.Tab
-                                        key={service.name}
-                                        label={_(service.title)}
-                                        tabId={service.name}
+            <PageContextProvider platform={platform}>
+                <TableContextProvider>
+                    {entity.isInputPageStyle && entity.open ? generatePageDialog() : null}
+                    <div
+                        style={
+                            entity.isInputPageStyle && entity.open
+                                ? { display: 'none' }
+                                : { display: 'block' }
+                        }
+                    >
+                        <ColumnLayout gutter={8}>
+                            <Row>
+                                <ColumnLayout.Column
+                                    className={isTabs ? 'title_menu_column' : ''}
+                                    span={9}
+                                >
+                                    <TitleComponent>
+                                        {isTabs ? _(selectedTab?.title || '') : _(title || '')}
+                                    </TitleComponent>
+                                    <SubTitleComponent
+                                        className={isTabs ? 'pageSubtitle' : undefined}
+                                    >
+                                        {isTabs
+                                            ? _(isTableFullSchema ? selectedTab?.description : '')
+                                            : _(description || '')}
+                                    </SubTitleComponent>
+                                    <SubDescription
+                                        text={subDescription?.text || ''}
+                                        links={subDescription?.links}
                                     />
-                                ))}
-                            </TabBar>
-                            {services.map((service) => (
-                                <div
-                                    key={service.name}
-                                    style={
-                                        service.name !== activeTabId
-                                            ? { display: 'none' }
-                                            : { display: 'block' }
-                                    }
-                                    id={`${service.name}Tab`}
+                                </ColumnLayout.Column>
+                                <ColumnLayout.Column
+                                    className={isTabs ? 'title_menu_column' : 'dropdown'}
+                                    span={3}
                                 >
-                                    <TableWrapper
-                                        page={PAGE_INPUT}
-                                        serviceName={service.name}
-                                        handleRequestModalOpen={() =>
-                                            handleRequestOpen({ serviceName: service.name })
+                                    {!isTabs && <MenuInput handleRequestOpen={handleRequestOpen} />}
+                                </ColumnLayout.Column>
+                            </Row>
+                        </ColumnLayout>
+                        {isTabs ? (
+                            <>
+                                <TabBar activeTabId={activeTabId} onChange={onTabChange}>
+                                    {services.map((service) => (
+                                        <TabBar.Tab
+                                            key={service.name}
+                                            label={_(service.title)}
+                                            tabId={service.name}
+                                        />
+                                    ))}
+                                </TabBar>
+                                {services.map((service) => (
+                                    <div
+                                        key={service.name}
+                                        style={
+                                            service.name !== activeTabId
+                                                ? { display: 'none' }
+                                                : { display: 'block' }
                                         }
-                                        handleOpenPageStyleDialog={handleOpenPageStyleDialog}
-                                    />
-                                </div>
-                            ))}
-                        </>
-                    ) : (
-                        <TableWrapper
-                            page={PAGE_INPUT}
-                            handleOpenPageStyleDialog={handleOpenPageStyleDialog}
-                            displayActionBtnAllRows
-                        />
-                    )}
+                                        id={`${service.name}Tab`}
+                                    >
+                                        <TableWrapper
+                                            page={PAGE_INPUT}
+                                            serviceName={service.name}
+                                            handleRequestModalOpen={() =>
+                                                handleRequestOpen({
+                                                    serviceName: service.name,
+                                                })
+                                            }
+                                            handleOpenPageStyleDialog={handleOpenPageStyleDialog}
+                                        />
+                                    </div>
+                                ))}
+                            </>
+                        ) : (
+                            <TableWrapper
+                                page={PAGE_INPUT}
+                                handleOpenPageStyleDialog={handleOpenPageStyleDialog}
+                                displayActionBtnAllRows
+                            />
+                        )}
 
-                    <ToastMessages position="top-right" />
-                    {!entity.isInputPageStyle && entity.open ? generateModalDialog() : null}
-                </div>
-            </TableContextProvider>
+                        <ToastMessages position="top-right" />
+                        {!entity.isInputPageStyle && entity.open ? generateModalDialog() : null}
+                    </div>
+                </TableContextProvider>
+            </PageContextProvider>
         </ErrorBoundary>
     );
 }
diff --git a/ui/src/types/globalConfig/entities.ts b/ui/src/types/globalConfig/entities.ts
index 58fa0f228..d659f4a14 100644
--- a/ui/src/types/globalConfig/entities.ts
+++ b/ui/src/types/globalConfig/entities.ts
@@ -57,6 +57,7 @@ const CommonEditableEntityOptions = z.object({
     disableonEdit: z.boolean().default(false).optional(),
     enable: z.boolean().default(true).optional(),
     requiredWhenVisible: z.boolean().default(false).optional(),
+    hideForPlatform: z.enum(['cloud', 'enterprise']).optional(),
 });
 
 export const MarkdownMessageType = z.union([
@@ -102,7 +103,11 @@ const AllValidators = z
 export const LinkEntity = CommonEntityFields.extend({
     type: z.literal('helpLink'),
     label: z.string().optional(),
-    options: z.object({ text: z.string(), link: z.string() }),
+    options: z.object({
+        text: z.string(),
+        link: z.string(),
+        hideForPlatform: z.enum(['cloud', 'enterprise']).optional(),
+    }),
     required: z.literal(false).default(false).optional(),
 });
 
@@ -248,15 +253,9 @@ export const OAuthFields = z.object({
     encrypted: z.boolean().default(false).optional(),
     required: z.boolean().default(false).optional(),
     defaultValue: z.union([z.string(), z.number(), z.boolean()]).optional(),
-    options: z
-        .object({
-            disableonEdit: z.boolean().optional(),
-            enable: z.boolean().default(true).optional(),
-            display: z.literal(true).default(true).optional(),
-            requiredWhenVisible: z.boolean().default(false).optional(),
-        })
-        .optional(),
+    options: CommonEditableEntityOptions.optional(),
     modifyFieldsOnValue: ModifyFieldsOnValue,
+    validators: AllValidators.optional(),
 });
 
 export const OAuthEntity = CommonEditableEntityFields.extend({
@@ -285,6 +284,7 @@ export const CustomEntity = CommonEditableEntityFields.extend({
     options: z.object({
         type: z.literal('external'),
         src: z.string(),
+        hideForPlatform: z.enum(['cloud', 'enterprise']).optional(),
     }),
 });
 
diff --git a/ui/src/types/globalConfig/pages.ts b/ui/src/types/globalConfig/pages.ts
index e589b9785..8256698a8 100644
--- a/ui/src/types/globalConfig/pages.ts
+++ b/ui/src/types/globalConfig/pages.ts
@@ -60,6 +60,7 @@ export const TabSchema = z.object({
     restHandlerClass: z.string().optional(),
     customTab: z.record(z.any()).optional(),
     warning: WarningSchema,
+    hideForPlatform: z.enum(['cloud', 'enterprise']).optional(),
 });
 
 const GroupsSchema = z
@@ -92,6 +93,7 @@ export const TableLessServiceSchema = z.object({
     restHandlerClass: z.string().optional(),
     warning: WarningSchema,
     inputHelperModule: z.string().optional(),
+    hideForPlatform: z.enum(['cloud', 'enterprise']).optional(),
 });
 export const TableFullServiceSchema = TableLessServiceSchema.extend({
     description: z.string().optional(),
@@ -169,6 +171,8 @@ export const pages = z.object({
         .optional(),
 });
 
+export type Platforms = 'enterprise' | 'cloud' | undefined;
+
 // Define the types based on the Zod schemas
 export type InputsPage = z.infer<typeof InputsPageSchema>;
 export type InputsPageTable = z.infer<typeof InputsPageTableSchema>;
diff --git a/ui/src/util/pageContext.ts b/ui/src/util/pageContext.ts
new file mode 100644
index 000000000..99e010a7b
--- /dev/null
+++ b/ui/src/util/pageContext.ts
@@ -0,0 +1,13 @@
+import { Platforms } from '../types/globalConfig/pages';
+
+export const shouldHideForPlatform = (hideForPlatform: Platforms, platform: Platforms) => {
+    if (platform && hideForPlatform === platform) {
+        return true;
+    }
+    // hide by default if platform information was not read yet
+    if (!platform && hideForPlatform) {
+        return true;
+    }
+
+    return false;
+};
diff --git a/ui/yarn.lock b/ui/yarn.lock
index 299ab11c1..e7981e282 100644
--- a/ui/yarn.lock
+++ b/ui/yarn.lock
@@ -15,182 +15,108 @@
     "@jridgewell/gen-mapping" "^0.3.5"
     "@jridgewell/trace-mapping" "^0.3.24"
 
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465"
-  integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz#438f2c524071531d643c6f0188e1e28f130cebc7"
+  integrity sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==
   dependencies:
-    "@babel/highlight" "^7.24.7"
+    "@babel/highlight" "^7.25.7"
     picocolors "^1.0.0"
 
-"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8", "@babel/compat-data@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz#6b226a5da3a686db3c30519750e071dce292ad95"
-  integrity sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==
+"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.7", "@babel/compat-data@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz#0376e83df5ab0eb0da18885c0140041f0747a402"
+  integrity sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==
 
-"@babel/compat-data@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5"
-  integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
-
-"@babel/compat-data@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb"
-  integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
-
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.22.5", "@babel/core@^7.23.7", "@babel/core@^7.23.9", "@babel/core@^7.7.5":
-  version "7.24.9"
-  resolved "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz#dc07c9d307162c97fa9484ea997ade65841c7c82"
-  integrity sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==
+"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.22.5", "@babel/core@^7.23.7", "@babel/core@^7.23.9", "@babel/core@^7.25.8", "@babel/core@^7.7.5":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz#a57137d2a51bbcffcfaeba43cb4dd33ae3e0e1c6"
+  integrity sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==
   dependencies:
     "@ampproject/remapping" "^2.2.0"
-    "@babel/code-frame" "^7.24.7"
-    "@babel/generator" "^7.24.9"
-    "@babel/helper-compilation-targets" "^7.24.8"
-    "@babel/helper-module-transforms" "^7.24.9"
-    "@babel/helpers" "^7.24.8"
-    "@babel/parser" "^7.24.8"
-    "@babel/template" "^7.24.7"
-    "@babel/traverse" "^7.24.8"
-    "@babel/types" "^7.24.9"
+    "@babel/code-frame" "^7.25.7"
+    "@babel/generator" "^7.25.7"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helpers" "^7.25.7"
+    "@babel/parser" "^7.25.8"
+    "@babel/template" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.8"
     convert-source-map "^2.0.0"
     debug "^4.1.0"
     gensync "^1.0.0-beta.2"
     json5 "^2.2.3"
     semver "^6.3.1"
 
-"@babel/core@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77"
-  integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
-  dependencies:
-    "@ampproject/remapping" "^2.2.0"
-    "@babel/code-frame" "^7.24.7"
-    "@babel/generator" "^7.25.0"
-    "@babel/helper-compilation-targets" "^7.25.2"
-    "@babel/helper-module-transforms" "^7.25.2"
-    "@babel/helpers" "^7.25.0"
-    "@babel/parser" "^7.25.0"
-    "@babel/template" "^7.25.0"
-    "@babel/traverse" "^7.25.2"
-    "@babel/types" "^7.25.2"
-    convert-source-map "^2.0.0"
-    debug "^4.1.0"
-    gensync "^1.0.0-beta.2"
-    json5 "^2.2.3"
-    semver "^6.3.1"
-
-"@babel/eslint-parser@^7.25.1":
-  version "7.25.1"
-  resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz#469cee4bd18a88ff3edbdfbd227bd20e82aa9b82"
-  integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==
+"@babel/eslint-parser@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz#0119dec46be547d7a339978dedb9d29e517c2443"
+  integrity sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg==
   dependencies:
     "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
     eslint-visitor-keys "^2.1.0"
     semver "^6.3.1"
 
-"@babel/generator@^7.22.5", "@babel/generator@^7.24.9", "@babel/generator@^7.25.0", "@babel/generator@^7.7.2":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e"
-  integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==
+"@babel/generator@^7.22.5", "@babel/generator@^7.25.7", "@babel/generator@^7.7.2":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz#de86acbeb975a3e11ee92dd52223e6b03b479c56"
+  integrity sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==
   dependencies:
-    "@babel/types" "^7.25.0"
+    "@babel/types" "^7.25.7"
     "@jridgewell/gen-mapping" "^0.3.5"
     "@jridgewell/trace-mapping" "^0.3.25"
-    jsesc "^2.5.1"
+    jsesc "^3.0.2"
 
-"@babel/generator@^7.25.6":
-  version "7.25.6"
-  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz#0df1ad8cb32fe4d2b01d8bf437f153d19342a87c"
-  integrity sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==
+"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz#63f02dbfa1f7cb75a9bdb832f300582f30bb8972"
+  integrity sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==
   dependencies:
-    "@babel/types" "^7.25.6"
-    "@jridgewell/gen-mapping" "^0.3.5"
-    "@jridgewell/trace-mapping" "^0.3.25"
-    jsesc "^2.5.1"
+    "@babel/types" "^7.25.7"
 
-"@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab"
-  integrity sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz#d721650c1f595371e0a23ee816f1c3c488c0d622"
+  integrity sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==
   dependencies:
-    "@babel/types" "^7.24.7"
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
 
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3"
-  integrity sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==
+"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz#11260ac3322dda0ef53edfae6e97b961449f5fa4"
+  integrity sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==
   dependencies:
-    "@babel/traverse" "^7.24.7"
-    "@babel/types" "^7.24.7"
-
-"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz#b607c3161cd9d1744977d4f97139572fe778c271"
-  integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
-  dependencies:
-    "@babel/compat-data" "^7.24.8"
-    "@babel/helper-validator-option" "^7.24.8"
-    browserslist "^4.23.1"
+    "@babel/compat-data" "^7.25.7"
+    "@babel/helper-validator-option" "^7.25.7"
+    browserslist "^4.24.0"
     lru-cache "^5.1.1"
     semver "^6.3.1"
 
-"@babel/helper-compilation-targets@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c"
-  integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
-  dependencies:
-    "@babel/compat-data" "^7.25.2"
-    "@babel/helper-validator-option" "^7.24.8"
-    browserslist "^4.23.1"
-    lru-cache "^5.1.1"
-    semver "^6.3.1"
-
-"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253"
-  integrity sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-member-expression-to-functions" "^7.24.8"
-    "@babel/helper-optimise-call-expression" "^7.24.7"
-    "@babel/helper-replace-supers" "^7.25.0"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-    "@babel/traverse" "^7.25.0"
-    semver "^6.3.1"
-
-"@babel/helper-create-class-features-plugin@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz#57eaf1af38be4224a9d9dd01ddde05b741f50e14"
-  integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-member-expression-to-functions" "^7.24.8"
-    "@babel/helper-optimise-call-expression" "^7.24.7"
-    "@babel/helper-replace-supers" "^7.25.0"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-    "@babel/traverse" "^7.25.4"
-    semver "^6.3.1"
-
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.0.tgz#17afe5d23b3a833a90f0fab9c2ae69fea192de5c"
-  integrity sha512-q0T+dknZS+L5LDazIP+02gEZITG5unzvb6yIjcmj5i0eFrs5ToBV2m2JGH4EsE/gtP8ygEGLGApBgRIZkTm7zg==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    regexpu-core "^5.3.1"
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz#5d65074c76cae75607421c00d6bd517fe1892d6b"
+  integrity sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-member-expression-to-functions" "^7.25.7"
+    "@babel/helper-optimise-call-expression" "^7.25.7"
+    "@babel/helper-replace-supers" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
     semver "^6.3.1"
 
-"@babel/helper-create-regexp-features-plugin@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9"
-  integrity sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz#dcb464f0e2cdfe0c25cc2a0a59c37ab940ce894e"
+  integrity sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    regexpu-core "^5.3.1"
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    regexpu-core "^6.1.1"
     semver "^6.3.1"
 
-"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2":
+"@babel/helper-define-polyfill-provider@^0.6.2":
   version "0.6.2"
   resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d"
   integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==
@@ -201,195 +127,165 @@
     lodash.debounce "^4.0.8"
     resolve "^1.14.2"
 
-"@babel/helper-member-expression-to-functions@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6"
-  integrity sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==
-  dependencies:
-    "@babel/traverse" "^7.24.8"
-    "@babel/types" "^7.24.8"
-
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b"
-  integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==
-  dependencies:
-    "@babel/traverse" "^7.24.7"
-    "@babel/types" "^7.24.7"
-
-"@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.24.9", "@babel/helper-module-transforms@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.0.tgz#3ffc23c473a2769a7e40d3274495bd559fdd2ecc"
-  integrity sha512-bIkOa2ZJYn7FHnepzr5iX9Kmz8FjIz4UKzJ9zhX3dnYuVW0xul9RuR3skBfoLu+FPTQw90EHW9rJsSZhyLQ3fQ==
-  dependencies:
-    "@babel/helper-module-imports" "^7.24.7"
-    "@babel/helper-simple-access" "^7.24.7"
-    "@babel/helper-validator-identifier" "^7.24.7"
-    "@babel/traverse" "^7.25.0"
-
-"@babel/helper-module-transforms@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6"
-  integrity sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==
-  dependencies:
-    "@babel/helper-module-imports" "^7.24.7"
-    "@babel/helper-simple-access" "^7.24.7"
-    "@babel/helper-validator-identifier" "^7.24.7"
-    "@babel/traverse" "^7.25.2"
-
-"@babel/helper-optimise-call-expression@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f"
-  integrity sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==
-  dependencies:
-    "@babel/types" "^7.24.7"
-
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878"
-  integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
-
-"@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e"
-  integrity sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-wrap-function" "^7.25.0"
-    "@babel/traverse" "^7.25.0"
-
-"@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9"
-  integrity sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==
-  dependencies:
-    "@babel/helper-member-expression-to-functions" "^7.24.8"
-    "@babel/helper-optimise-call-expression" "^7.24.7"
-    "@babel/traverse" "^7.25.0"
-
-"@babel/helper-simple-access@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3"
-  integrity sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==
-  dependencies:
-    "@babel/traverse" "^7.24.7"
-    "@babel/types" "^7.24.7"
-
-"@babel/helper-skip-transparent-expression-wrappers@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz#5f8fa83b69ed5c27adc56044f8be2b3ea96669d9"
-  integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==
-  dependencies:
-    "@babel/traverse" "^7.24.7"
-    "@babel/types" "^7.24.7"
-
-"@babel/helper-string-parser@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
-  integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
-
-"@babel/helper-validator-identifier@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
-  integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
-
-"@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d"
-  integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
-
-"@babel/helper-wrap-function@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81"
-  integrity sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==
-  dependencies:
-    "@babel/template" "^7.25.0"
-    "@babel/traverse" "^7.25.0"
-    "@babel/types" "^7.25.0"
-
-"@babel/helpers@^7.24.8", "@babel/helpers@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a"
-  integrity sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==
-  dependencies:
-    "@babel/template" "^7.25.0"
-    "@babel/types" "^7.25.0"
-
-"@babel/highlight@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d"
-  integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==
-  dependencies:
-    "@babel/helper-validator-identifier" "^7.24.7"
+"@babel/helper-member-expression-to-functions@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz#541a33b071f0355a63a0fa4bdf9ac360116b8574"
+  integrity sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz#dba00d9523539152906ba49263e36d7261040472"
+  integrity sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-module-transforms@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz#2ac9372c5e001b19bc62f1fe7d96a18cb0901d1a"
+  integrity sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==
+  dependencies:
+    "@babel/helper-module-imports" "^7.25.7"
+    "@babel/helper-simple-access" "^7.25.7"
+    "@babel/helper-validator-identifier" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+
+"@babel/helper-optimise-call-expression@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz#1de1b99688e987af723eed44fa7fc0ee7b97d77a"
+  integrity sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==
+  dependencies:
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.7", "@babel/helper-plugin-utils@^7.8.0":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz#8ec5b21812d992e1ef88a9b068260537b6f0e36c"
+  integrity sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==
+
+"@babel/helper-remap-async-to-generator@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz#9efdc39df5f489bcd15533c912b6c723a0a65021"
+  integrity sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-wrap-function" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+
+"@babel/helper-replace-supers@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz#38cfda3b6e990879c71d08d0fef9236b62bd75f5"
+  integrity sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==
+  dependencies:
+    "@babel/helper-member-expression-to-functions" "^7.25.7"
+    "@babel/helper-optimise-call-expression" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+
+"@babel/helper-simple-access@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz#5eb9f6a60c5d6b2e0f76057004f8dacbddfae1c0"
+  integrity sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz#382831c91038b1a6d32643f5f49505b8442cb87c"
+  integrity sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==
+  dependencies:
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helper-string-parser@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz#d50e8d37b1176207b4fe9acedec386c565a44a54"
+  integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==
+
+"@babel/helper-validator-identifier@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz#77b7f60c40b15c97df735b38a66ba1d7c3e93da5"
+  integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==
+
+"@babel/helper-validator-option@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz#97d1d684448228b30b506d90cace495d6f492729"
+  integrity sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==
+
+"@babel/helper-wrap-function@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz#9f6021dd1c4fdf4ad515c809967fc4bac9a70fe7"
+  integrity sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==
+  dependencies:
+    "@babel/template" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/helpers@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz#091b52cb697a171fe0136ab62e54e407211f09c2"
+  integrity sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==
+  dependencies:
+    "@babel/template" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/highlight@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz#20383b5f442aa606e7b5e3043b0b1aafe9f37de5"
+  integrity sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==
+  dependencies:
+    "@babel/helper-validator-identifier" "^7.25.7"
     chalk "^2.4.2"
     js-tokens "^4.0.0"
     picocolors "^1.0.0"
 
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.8", "@babel/parser@^7.25.0", "@babel/parser@^7.7.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz#9fdc9237504d797b6e7b8f66e78ea7f570d256ad"
-  integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==
-
-"@babel/parser@^7.25.3":
-  version "7.25.3"
-  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz#91fb126768d944966263f0657ab222a642b82065"
-  integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==
-  dependencies:
-    "@babel/types" "^7.25.2"
-
-"@babel/parser@^7.25.6":
-  version "7.25.6"
-  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f"
-  integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==
+"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.25.7", "@babel/parser@^7.25.8", "@babel/parser@^7.7.0":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz#f6aaf38e80c36129460c1657c0762db584c9d5e2"
+  integrity sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==
   dependencies:
-    "@babel/types" "^7.25.6"
+    "@babel/types" "^7.25.8"
 
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.0.tgz#328275f22d809b962978d998c6eba22a233ac8aa"
-  integrity sha512-dG0aApncVQwAUJa8tP1VHTnmU67BeIQvKafd3raEx315H54FfkZSz3B/TT+33ZQAjatGJA79gZqTtqL5QZUKXw==
+"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz#93969ac50ef4d68b2504b01b758af714e4cbdd64"
+  integrity sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/traverse" "^7.25.0"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
 
-"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3":
-  version "7.25.3"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f"
-  integrity sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==
+"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz#a338d611adb9dcd599b8b1efa200c88ebeffe046"
+  integrity sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/traverse" "^7.25.3"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73"
-  integrity sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz#c5f755e911dfac7ef6957300c0f9c4a8c18c06f4"
+  integrity sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73"
-  integrity sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz#3b7ea04492ded990978b6deaa1dfca120ad4455a"
+  integrity sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+    "@babel/plugin-transform-optional-chaining" "^7.25.7"
 
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89"
-  integrity sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==
+"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz#9622b1d597a703aa3a921e6f58c9c2d9a028d2c5"
+  integrity sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-    "@babel/plugin-transform-optional-chaining" "^7.24.7"
-
-"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb"
-  integrity sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/traverse" "^7.25.0"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
 
 "@babel/plugin-proposal-class-properties@^7.2.1":
   version "7.18.6"
@@ -429,7 +325,7 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.8.0"
 
-"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3":
+"@babel/plugin-syntax-class-properties@^7.12.13":
   version "7.12.13"
   resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
   integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
@@ -443,35 +339,21 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.14.5"
 
-"@babel/plugin-syntax-dynamic-import@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3"
-  integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==
+"@babel/plugin-syntax-import-assertions@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz#8ce248f9f4ed4b7ed4cb2e0eb4ed9efd9f52921f"
+  integrity sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-export-namespace-from@^7.8.3":
-  version "7.8.3"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a"
-  integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.8.3"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-syntax-import-assertions@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz#2a0b406b5871a20a841240586b1300ce2088a778"
-  integrity sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==
+"@babel/plugin-syntax-import-attributes@^7.24.7", "@babel/plugin-syntax-import-attributes@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz#d78dd0499d30df19a598e63ab895e21b909bc43f"
+  integrity sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-syntax-import-attributes@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca"
-  integrity sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3":
+"@babel/plugin-syntax-import-meta@^7.10.4":
   version "7.10.4"
   resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
   integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
@@ -485,14 +367,14 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.8.0"
 
-"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.24.7", "@babel/plugin-syntax-jsx@^7.7.2":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz#39a1fa4a7e3d3d7f34e2acc6be585b718d30e02d"
-  integrity sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==
+"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.25.7", "@babel/plugin-syntax-jsx@^7.7.2":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz#5352d398d11ea5e7ef330c854dea1dae0bf18165"
+  integrity sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
   version "7.10.4"
   resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
   integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
@@ -506,7 +388,7 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.8.0"
 
-"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
   version "7.10.4"
   resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
   integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
@@ -541,19 +423,19 @@
   dependencies:
     "@babel/helper-plugin-utils" "^7.14.5"
 
-"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3":
+"@babel/plugin-syntax-top-level-await@^7.14.5":
   version "7.14.5"
   resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
   integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
   dependencies:
     "@babel/helper-plugin-utils" "^7.14.5"
 
-"@babel/plugin-syntax-typescript@^7.24.7", "@babel/plugin-syntax-typescript@^7.7.2":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz#58d458271b4d3b6bb27ee6ac9525acbb259bad1c"
-  integrity sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==
+"@babel/plugin-syntax-typescript@^7.25.7", "@babel/plugin-syntax-typescript@^7.7.2":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz#bfc05b0cc31ebd8af09964650cee723bb228108b"
+  integrity sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
 "@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
   version "7.18.6"
@@ -563,693 +445,515 @@
     "@babel/helper-create-regexp-features-plugin" "^7.18.6"
     "@babel/helper-plugin-utils" "^7.18.6"
 
-"@babel/plugin-transform-arrow-functions@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514"
-  integrity sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-async-generator-functions@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf"
-  integrity sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-remap-async-to-generator" "^7.25.0"
-    "@babel/plugin-syntax-async-generators" "^7.8.4"
-    "@babel/traverse" "^7.25.0"
-
-"@babel/plugin-transform-async-generator-functions@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz#2afd4e639e2d055776c9f091b6c0c180ed8cf083"
-  integrity sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-remap-async-to-generator" "^7.25.0"
-    "@babel/plugin-syntax-async-generators" "^7.8.4"
-    "@babel/traverse" "^7.25.4"
-
-"@babel/plugin-transform-async-to-generator@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc"
-  integrity sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==
+"@babel/plugin-transform-arrow-functions@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz#1b9ed22e6890a0e9ff470371c73b8c749bcec386"
+  integrity sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==
   dependencies:
-    "@babel/helper-module-imports" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-remap-async-to-generator" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-block-scoped-functions@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f"
-  integrity sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==
+"@babel/plugin-transform-async-generator-functions@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz#3331de02f52cc1f2c75b396bec52188c85b0b1ec"
+  integrity sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-remap-async-to-generator" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
 
-"@babel/plugin-transform-block-scoping@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac"
-  integrity sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==
+"@babel/plugin-transform-async-to-generator@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz#a44c7323f8d4285a6c568dd43c5c361d6367ec52"
+  integrity sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-module-imports" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-remap-async-to-generator" "^7.25.7"
 
-"@babel/plugin-transform-class-properties@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834"
-  integrity sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==
+"@babel/plugin-transform-block-scoped-functions@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz#e0b8843d5571719a2f1bf7e284117a3379fcc17c"
+  integrity sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-class-properties@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz#bae7dbfcdcc2e8667355cd1fb5eda298f05189fd"
-  integrity sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==
+"@babel/plugin-transform-block-scoping@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz#6dab95e98adf780ceef1b1c3ab0e55cd20dd410a"
+  integrity sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.25.4"
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-class-static-block@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d"
-  integrity sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==
+"@babel/plugin-transform-class-properties@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz#a389cfca7a10ac80e3ff4c75fca08bd097ad1523"
+  integrity sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-class-static-block" "^7.14.5"
+    "@babel/helper-create-class-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-classes@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e"
-  integrity sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==
+"@babel/plugin-transform-class-static-block@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz#a8af22028920fe404668031eceb4c3aadccb5262"
+  integrity sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-compilation-targets" "^7.24.8"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-replace-supers" "^7.25.0"
-    "@babel/traverse" "^7.25.0"
-    globals "^11.1.0"
+    "@babel/helper-create-class-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-classes@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz#d29dbb6a72d79f359952ad0b66d88518d65ef89a"
-  integrity sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==
+"@babel/plugin-transform-classes@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz#5103206cf80d02283bbbd044509ea3b65d0906bb"
+  integrity sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-compilation-targets" "^7.25.2"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-replace-supers" "^7.25.0"
-    "@babel/traverse" "^7.25.4"
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-replace-supers" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
     globals "^11.1.0"
 
-"@babel/plugin-transform-computed-properties@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707"
-  integrity sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/template" "^7.24.7"
-
-"@babel/plugin-transform-destructuring@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550"
-  integrity sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==
+"@babel/plugin-transform-computed-properties@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz#7f621f0aa1354b5348a935ab12e3903842466f65"
+  integrity sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/template" "^7.25.7"
 
-"@babel/plugin-transform-dotall-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0"
-  integrity sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==
+"@babel/plugin-transform-destructuring@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz#f6f26a9feefb5aa41fd45b6f5838901b5333d560"
+  integrity sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==
   dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-duplicate-keys@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee"
-  integrity sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==
+"@babel/plugin-transform-dotall-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz#9d775c4a3ff1aea64045300fcd4309b4a610ef02"
+  integrity sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604"
-  integrity sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==
+"@babel/plugin-transform-duplicate-keys@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz#fbba7d1155eab76bd4f2a038cbd5d65883bd7a93"
+  integrity sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==
   dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.25.0"
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-dynamic-import@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4"
-  integrity sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==
+"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz#102b31608dcc22c08fbca1894e104686029dc141"
+  integrity sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-exponentiation-operator@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d"
-  integrity sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==
+"@babel/plugin-transform-dynamic-import@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz#f1edbe75b248cf44c70c8ca8ed3818a668753aaa"
+  integrity sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==
   dependencies:
-    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-export-namespace-from@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197"
-  integrity sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==
+"@babel/plugin-transform-exponentiation-operator@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz#5961a3a23a398faccd6cddb34a2182807d75fb5f"
+  integrity sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
+    "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-for-of@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70"
-  integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==
+"@babel/plugin-transform-export-namespace-from@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz#d1988c3019a380b417e0516418b02804d3858145"
+  integrity sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-function-name@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.0.tgz#d17890029ceefb45189ea203b404a496263a8412"
-  integrity sha512-CQmfSnK14eYu82fu6GlCwRciHB7mp7oLN+DeyGDDwUr9cMwuSVviJKPXw/YcRYZdB1TdlLJWHHwXwnwD1WnCmQ==
+"@babel/plugin-transform-for-of@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz#0acfea0f27aa290818b5b48a5a44b3f03fc13669"
+  integrity sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==
   dependencies:
-    "@babel/helper-compilation-targets" "^7.24.8"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/traverse" "^7.25.0"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
 
-"@babel/plugin-transform-function-name@^7.25.1":
-  version "7.25.1"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37"
-  integrity sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==
+"@babel/plugin-transform-function-name@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz#7e394ccea3693902a8b50ded8b6ae1fa7b8519fd"
+  integrity sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==
   dependencies:
-    "@babel/helper-compilation-targets" "^7.24.8"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/traverse" "^7.25.1"
-
-"@babel/plugin-transform-json-strings@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a"
-  integrity sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-json-strings" "^7.8.3"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
 
-"@babel/plugin-transform-literals@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz#36b505c1e655151a9d7607799a9988fc5467d06c"
-  integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==
+"@babel/plugin-transform-json-strings@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz#6fb3ec383a2ea92652289fdba653e3f9de722694"
+  integrity sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-literals@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3"
-  integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==
+"@babel/plugin-transform-literals@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz#70cbdc742f2cfdb1a63ea2cbd018d12a60b213c3"
+  integrity sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-logical-assignment-operators@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0"
-  integrity sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==
+"@babel/plugin-transform-logical-assignment-operators@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz#01868ff92daa9e525b4c7902aa51979082a05710"
+  integrity sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-member-expression-literals@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df"
-  integrity sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==
+"@babel/plugin-transform-member-expression-literals@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz#0a36c3fbd450cc9e6485c507f005fa3d1bc8fca5"
+  integrity sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-modules-amd@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7"
-  integrity sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==
+"@babel/plugin-transform-modules-amd@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz#bb4e543b5611f6c8c685a2fd485408713a3adf3d"
+  integrity sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==
   dependencies:
-    "@babel/helper-module-transforms" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-modules-commonjs@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c"
-  integrity sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==
+"@babel/plugin-transform-modules-commonjs@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz#173f0c791bb7407c092ce6d77ee90eb3f2d1d2fd"
+  integrity sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==
   dependencies:
-    "@babel/helper-module-transforms" "^7.24.8"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-simple-access" "^7.24.7"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-simple-access" "^7.25.7"
 
-"@babel/plugin-transform-modules-systemjs@^7.25.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33"
-  integrity sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==
+"@babel/plugin-transform-modules-systemjs@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz#8b14d319a177cc9c85ef8b0512afd429d9e2e60b"
+  integrity sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==
   dependencies:
-    "@babel/helper-module-transforms" "^7.25.0"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-validator-identifier" "^7.24.7"
-    "@babel/traverse" "^7.25.0"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-validator-identifier" "^7.25.7"
+    "@babel/traverse" "^7.25.7"
 
-"@babel/plugin-transform-modules-umd@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8"
-  integrity sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==
+"@babel/plugin-transform-modules-umd@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz#00ee7a7e124289549381bfb0e24d87fd7f848367"
+  integrity sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==
   dependencies:
-    "@babel/helper-module-transforms" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-module-transforms" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923"
-  integrity sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz#a2f3f6d7f38693b462542951748f0a72a34d196d"
+  integrity sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==
   dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-new-target@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00"
-  integrity sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==
+"@babel/plugin-transform-new-target@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz#52b2bde523b76c548749f38dc3054f1f45e82bc9"
+  integrity sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120"
-  integrity sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==
+"@babel/plugin-transform-nullish-coalescing-operator@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz#befb4900c130bd52fccf2b926314557987f1b552"
+  integrity sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-numeric-separator@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63"
-  integrity sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==
+"@babel/plugin-transform-numeric-separator@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz#91e370486371637bd42161052f2602c701386891"
+  integrity sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-object-rest-spread@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6"
-  integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==
+"@babel/plugin-transform-object-rest-spread@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz#0904ac16bcce41df4db12d915d6780f85c7fb04b"
+  integrity sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==
   dependencies:
-    "@babel/helper-compilation-targets" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-    "@babel/plugin-transform-parameters" "^7.24.7"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/plugin-transform-parameters" "^7.25.7"
 
-"@babel/plugin-transform-object-super@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be"
-  integrity sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==
+"@babel/plugin-transform-object-super@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz#582a9cea8cf0a1e02732be5b5a703a38dedf5661"
+  integrity sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-replace-supers" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-replace-supers" "^7.25.7"
 
-"@babel/plugin-transform-optional-catch-binding@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4"
-  integrity sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==
+"@babel/plugin-transform-optional-catch-binding@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz#2649b86a3bb202c6894ec81a6ddf41b94d8f3103"
+  integrity sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d"
-  integrity sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==
+"@babel/plugin-transform-optional-chaining@^7.25.7", "@babel/plugin-transform-optional-chaining@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz#f46283b78adcc5b6ab988a952f989e7dce70653f"
+  integrity sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
 
-"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68"
-  integrity sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==
+"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz#80c38b03ef580f6d6bffe1c5254bb35986859ac7"
+  integrity sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-private-methods@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e"
-  integrity sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==
+"@babel/plugin-transform-private-methods@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz#c790a04f837b4bd61d6b0317b43aa11ff67dce80"
+  integrity sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-create-class-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-private-methods@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz#9bbefbe3649f470d681997e0b64a4b254d877242"
-  integrity sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==
+"@babel/plugin-transform-private-property-in-object@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz#1234f856ce85e061f9688764194e51ea7577c434"
+  integrity sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==
   dependencies:
-    "@babel/helper-create-class-features-plugin" "^7.25.4"
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-create-class-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-private-property-in-object@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061"
-  integrity sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==
+"@babel/plugin-transform-property-literals@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz#a8612b4ea4e10430f00012ecf0155662c7d6550d"
+  integrity sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-create-class-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-property-literals@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc"
-  integrity sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==
+"@babel/plugin-transform-react-display-name@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz#2753e875a1b702fb1d806c4f5d4c194d64cadd88"
+  integrity sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-react-display-name@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz#9caff79836803bc666bcfe210aeb6626230c293b"
-  integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==
+"@babel/plugin-transform-react-jsx-development@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz#2fbd77887b8fa2942d7cb61edf1029ea1b048554"
+  integrity sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/plugin-transform-react-jsx" "^7.25.7"
 
-"@babel/plugin-transform-react-jsx-development@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b"
-  integrity sha512-QG9EnzoGn+Qar7rxuW+ZOsbWOt56FvvI93xInqsZDC5fsekx1AlIO4KIJ5M+D0p0SqSH156EpmZyXq630B8OlQ==
+"@babel/plugin-transform-react-jsx@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz#f5e2af6020a562fe048dd343e571c4428e6c5632"
+  integrity sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==
   dependencies:
-    "@babel/plugin-transform-react-jsx" "^7.24.7"
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-module-imports" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/plugin-syntax-jsx" "^7.25.7"
+    "@babel/types" "^7.25.7"
 
-"@babel/plugin-transform-react-jsx@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.24.7.tgz#17cd06b75a9f0e2bd076503400e7c4b99beedac4"
-  integrity sha512-+Dj06GDZEFRYvclU6k4bme55GKBEWUmByM/eoKuqg4zTNQHiApWRhQph5fxQB2wAEFvRzL1tOEj1RJ19wJrhoA==
+"@babel/plugin-transform-react-pure-annotations@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz#6d0b8dadb2d3c5cbb8ade68c5efd49470b0d65f7"
+  integrity sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-module-imports" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/plugin-syntax-jsx" "^7.24.7"
-    "@babel/types" "^7.24.7"
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-react-pure-annotations@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595"
-  integrity sha512-PLgBVk3fzbmEjBJ/u8kFzOqS9tUeDjiaWud/rRym/yjCo/M9cASPlnrd2ZmmZpQT40fOOrvR8jh+n8jikrOhNA==
+"@babel/plugin-transform-regenerator@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz#6eb006e6d26f627bc2f7844a9f19770721ad6f3e"
+  integrity sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==
   dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-regenerator@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8"
-  integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
     regenerator-transform "^0.15.2"
 
-"@babel/plugin-transform-reserved-words@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4"
-  integrity sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==
+"@babel/plugin-transform-reserved-words@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz#dc56b25e02afaabef3ce0c5b06b0916e8523e995"
+  integrity sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-runtime@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz#96e4ad7bfbbe0b4a7b7e6f2a533ca326cf204963"
-  integrity sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==
+"@babel/plugin-transform-runtime@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz#435a4fab67273f00047dc806e05069c9c6344e12"
+  integrity sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==
   dependencies:
-    "@babel/helper-module-imports" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-module-imports" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
     babel-plugin-polyfill-corejs2 "^0.4.10"
     babel-plugin-polyfill-corejs3 "^0.10.6"
     babel-plugin-polyfill-regenerator "^0.6.1"
     semver "^6.3.1"
 
-"@babel/plugin-transform-shorthand-properties@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73"
-  integrity sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==
+"@babel/plugin-transform-shorthand-properties@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz#92690a9c671915602d91533c278cc8f6bf12275f"
+  integrity sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-spread@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3"
-  integrity sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==
+"@babel/plugin-transform-spread@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz#df83e899a9fc66284ee601a7b738568435b92998"
+  integrity sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
 
-"@babel/plugin-transform-sticky-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb"
-  integrity sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==
+"@babel/plugin-transform-sticky-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz#341c7002bef7f29037be7fb9684e374442dd0d17"
+  integrity sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-template-literals@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8"
-  integrity sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==
+"@babel/plugin-transform-template-literals@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz#e566c581bb16d8541dd8701093bb3457adfce16b"
+  integrity sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
-"@babel/plugin-transform-typeof-symbol@^7.24.8":
-  version "7.24.8"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c"
-  integrity sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==
+"@babel/plugin-transform-typeof-symbol@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz#debb1287182efd20488f126be343328c679b66eb"
+  integrity sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.8"
+    "@babel/helper-plugin-utils" "^7.25.7"
 
 "@babel/plugin-transform-typescript@^7.8.3":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.0.tgz#56f47fb87b86a97caa9c7770920a1967d40ac86e"
-  integrity sha512-LZicxFzHIw+Sa3pzgMgSz6gdpsdkfiMObHUzhSIrwKF0+/rP/nuR49u79pSS+zIFJ1FeGeqQD2Dq4QGFbOVvSw==
-  dependencies:
-    "@babel/helper-annotate-as-pure" "^7.24.7"
-    "@babel/helper-create-class-features-plugin" "^7.25.0"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7"
-    "@babel/plugin-syntax-typescript" "^7.24.7"
-
-"@babel/plugin-transform-unicode-escapes@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e"
-  integrity sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==
-  dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-unicode-property-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd"
-  integrity sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-unicode-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f"
-  integrity sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-unicode-sets-regex@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9"
-  integrity sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.24.7"
-    "@babel/helper-plugin-utils" "^7.24.7"
-
-"@babel/plugin-transform-unicode-sets-regex@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz#be664c2a0697ffacd3423595d5edef6049e8946c"
-  integrity sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==
-  dependencies:
-    "@babel/helper-create-regexp-features-plugin" "^7.25.2"
-    "@babel/helper-plugin-utils" "^7.24.8"
-
-"@babel/preset-env@^7.2.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.0.tgz#3fe92e470311e91478129efda101816c680f0479"
-  integrity sha512-vYAA8PrCOeZfG4D87hmw1KJ1BPubghXP1e2MacRFwECGNKL76dkA38JEwYllbvQCpf/kLxsTtir0b8MtxKoVCw==
-  dependencies:
-    "@babel/compat-data" "^7.25.0"
-    "@babel/helper-compilation-targets" "^7.24.8"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-validator-option" "^7.24.8"
-    "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.0"
-    "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0"
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0"
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7"
-    "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0"
-    "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
-    "@babel/plugin-syntax-async-generators" "^7.8.4"
-    "@babel/plugin-syntax-class-properties" "^7.12.13"
-    "@babel/plugin-syntax-class-static-block" "^7.14.5"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
-    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-    "@babel/plugin-syntax-import-assertions" "^7.24.7"
-    "@babel/plugin-syntax-import-attributes" "^7.24.7"
-    "@babel/plugin-syntax-import-meta" "^7.10.4"
-    "@babel/plugin-syntax-json-strings" "^7.8.3"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
-    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
-    "@babel/plugin-syntax-top-level-await" "^7.14.5"
-    "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
-    "@babel/plugin-transform-arrow-functions" "^7.24.7"
-    "@babel/plugin-transform-async-generator-functions" "^7.25.0"
-    "@babel/plugin-transform-async-to-generator" "^7.24.7"
-    "@babel/plugin-transform-block-scoped-functions" "^7.24.7"
-    "@babel/plugin-transform-block-scoping" "^7.25.0"
-    "@babel/plugin-transform-class-properties" "^7.24.7"
-    "@babel/plugin-transform-class-static-block" "^7.24.7"
-    "@babel/plugin-transform-classes" "^7.25.0"
-    "@babel/plugin-transform-computed-properties" "^7.24.7"
-    "@babel/plugin-transform-destructuring" "^7.24.8"
-    "@babel/plugin-transform-dotall-regex" "^7.24.7"
-    "@babel/plugin-transform-duplicate-keys" "^7.24.7"
-    "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0"
-    "@babel/plugin-transform-dynamic-import" "^7.24.7"
-    "@babel/plugin-transform-exponentiation-operator" "^7.24.7"
-    "@babel/plugin-transform-export-namespace-from" "^7.24.7"
-    "@babel/plugin-transform-for-of" "^7.24.7"
-    "@babel/plugin-transform-function-name" "^7.25.0"
-    "@babel/plugin-transform-json-strings" "^7.24.7"
-    "@babel/plugin-transform-literals" "^7.24.7"
-    "@babel/plugin-transform-logical-assignment-operators" "^7.24.7"
-    "@babel/plugin-transform-member-expression-literals" "^7.24.7"
-    "@babel/plugin-transform-modules-amd" "^7.24.7"
-    "@babel/plugin-transform-modules-commonjs" "^7.24.8"
-    "@babel/plugin-transform-modules-systemjs" "^7.25.0"
-    "@babel/plugin-transform-modules-umd" "^7.24.7"
-    "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7"
-    "@babel/plugin-transform-new-target" "^7.24.7"
-    "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7"
-    "@babel/plugin-transform-numeric-separator" "^7.24.7"
-    "@babel/plugin-transform-object-rest-spread" "^7.24.7"
-    "@babel/plugin-transform-object-super" "^7.24.7"
-    "@babel/plugin-transform-optional-catch-binding" "^7.24.7"
-    "@babel/plugin-transform-optional-chaining" "^7.24.8"
-    "@babel/plugin-transform-parameters" "^7.24.7"
-    "@babel/plugin-transform-private-methods" "^7.24.7"
-    "@babel/plugin-transform-private-property-in-object" "^7.24.7"
-    "@babel/plugin-transform-property-literals" "^7.24.7"
-    "@babel/plugin-transform-regenerator" "^7.24.7"
-    "@babel/plugin-transform-reserved-words" "^7.24.7"
-    "@babel/plugin-transform-shorthand-properties" "^7.24.7"
-    "@babel/plugin-transform-spread" "^7.24.7"
-    "@babel/plugin-transform-sticky-regex" "^7.24.7"
-    "@babel/plugin-transform-template-literals" "^7.24.7"
-    "@babel/plugin-transform-typeof-symbol" "^7.24.8"
-    "@babel/plugin-transform-unicode-escapes" "^7.24.7"
-    "@babel/plugin-transform-unicode-property-regex" "^7.24.7"
-    "@babel/plugin-transform-unicode-regex" "^7.24.7"
-    "@babel/plugin-transform-unicode-sets-regex" "^7.24.7"
-    "@babel/preset-modules" "0.1.6-no-external-plugins"
-    babel-plugin-polyfill-corejs2 "^0.4.10"
-    babel-plugin-polyfill-corejs3 "^0.10.4"
-    babel-plugin-polyfill-regenerator "^0.6.1"
-    core-js-compat "^3.37.1"
-    semver "^6.3.1"
-
-"@babel/preset-env@^7.25.4":
-  version "7.25.4"
-  resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz#be23043d43a34a2721cd0f676c7ba6f1481f6af6"
-  integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==
-  dependencies:
-    "@babel/compat-data" "^7.25.4"
-    "@babel/helper-compilation-targets" "^7.25.2"
-    "@babel/helper-plugin-utils" "^7.24.8"
-    "@babel/helper-validator-option" "^7.24.8"
-    "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.3"
-    "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.0"
-    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.0"
-    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.7"
-    "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.0"
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz#8fc7c3d28ddd36bce45b9b48594129d0e560cfbe"
+  integrity sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==
+  dependencies:
+    "@babel/helper-annotate-as-pure" "^7.25.7"
+    "@babel/helper-create-class-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-skip-transparent-expression-wrappers" "^7.25.7"
+    "@babel/plugin-syntax-typescript" "^7.25.7"
+
+"@babel/plugin-transform-unicode-escapes@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz#973592b6d13a914794e1de8cf1383e50e0f87f81"
+  integrity sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==
+  dependencies:
+    "@babel/helper-plugin-utils" "^7.25.7"
+
+"@babel/plugin-transform-unicode-property-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz#25349197cce964b1343f74fa7cfdf791a1b1919e"
+  integrity sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+
+"@babel/plugin-transform-unicode-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz#f93a93441baf61f713b6d5552aaa856bfab34809"
+  integrity sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+
+"@babel/plugin-transform-unicode-sets-regex@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz#d1b3295d29e0f8f4df76abc909ad1ebee919560c"
+  integrity sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==
+  dependencies:
+    "@babel/helper-create-regexp-features-plugin" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+
+"@babel/preset-env@^7.2.0", "@babel/preset-env@^7.25.8":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz#dc6b719627fb29cd9cccbbbe041802fd575b524c"
+  integrity sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==
+  dependencies:
+    "@babel/compat-data" "^7.25.8"
+    "@babel/helper-compilation-targets" "^7.25.7"
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-validator-option" "^7.25.7"
+    "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.7"
+    "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.7"
+    "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.7"
+    "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.7"
+    "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.7"
     "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
-    "@babel/plugin-syntax-async-generators" "^7.8.4"
-    "@babel/plugin-syntax-class-properties" "^7.12.13"
-    "@babel/plugin-syntax-class-static-block" "^7.14.5"
-    "@babel/plugin-syntax-dynamic-import" "^7.8.3"
-    "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-    "@babel/plugin-syntax-import-assertions" "^7.24.7"
-    "@babel/plugin-syntax-import-attributes" "^7.24.7"
-    "@babel/plugin-syntax-import-meta" "^7.10.4"
-    "@babel/plugin-syntax-json-strings" "^7.8.3"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-    "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
-    "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
-    "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-    "@babel/plugin-syntax-optional-chaining" "^7.8.3"
-    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
-    "@babel/plugin-syntax-top-level-await" "^7.14.5"
+    "@babel/plugin-syntax-import-assertions" "^7.25.7"
+    "@babel/plugin-syntax-import-attributes" "^7.25.7"
     "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
-    "@babel/plugin-transform-arrow-functions" "^7.24.7"
-    "@babel/plugin-transform-async-generator-functions" "^7.25.4"
-    "@babel/plugin-transform-async-to-generator" "^7.24.7"
-    "@babel/plugin-transform-block-scoped-functions" "^7.24.7"
-    "@babel/plugin-transform-block-scoping" "^7.25.0"
-    "@babel/plugin-transform-class-properties" "^7.25.4"
-    "@babel/plugin-transform-class-static-block" "^7.24.7"
-    "@babel/plugin-transform-classes" "^7.25.4"
-    "@babel/plugin-transform-computed-properties" "^7.24.7"
-    "@babel/plugin-transform-destructuring" "^7.24.8"
-    "@babel/plugin-transform-dotall-regex" "^7.24.7"
-    "@babel/plugin-transform-duplicate-keys" "^7.24.7"
-    "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.0"
-    "@babel/plugin-transform-dynamic-import" "^7.24.7"
-    "@babel/plugin-transform-exponentiation-operator" "^7.24.7"
-    "@babel/plugin-transform-export-namespace-from" "^7.24.7"
-    "@babel/plugin-transform-for-of" "^7.24.7"
-    "@babel/plugin-transform-function-name" "^7.25.1"
-    "@babel/plugin-transform-json-strings" "^7.24.7"
-    "@babel/plugin-transform-literals" "^7.25.2"
-    "@babel/plugin-transform-logical-assignment-operators" "^7.24.7"
-    "@babel/plugin-transform-member-expression-literals" "^7.24.7"
-    "@babel/plugin-transform-modules-amd" "^7.24.7"
-    "@babel/plugin-transform-modules-commonjs" "^7.24.8"
-    "@babel/plugin-transform-modules-systemjs" "^7.25.0"
-    "@babel/plugin-transform-modules-umd" "^7.24.7"
-    "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7"
-    "@babel/plugin-transform-new-target" "^7.24.7"
-    "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7"
-    "@babel/plugin-transform-numeric-separator" "^7.24.7"
-    "@babel/plugin-transform-object-rest-spread" "^7.24.7"
-    "@babel/plugin-transform-object-super" "^7.24.7"
-    "@babel/plugin-transform-optional-catch-binding" "^7.24.7"
-    "@babel/plugin-transform-optional-chaining" "^7.24.8"
-    "@babel/plugin-transform-parameters" "^7.24.7"
-    "@babel/plugin-transform-private-methods" "^7.25.4"
-    "@babel/plugin-transform-private-property-in-object" "^7.24.7"
-    "@babel/plugin-transform-property-literals" "^7.24.7"
-    "@babel/plugin-transform-regenerator" "^7.24.7"
-    "@babel/plugin-transform-reserved-words" "^7.24.7"
-    "@babel/plugin-transform-shorthand-properties" "^7.24.7"
-    "@babel/plugin-transform-spread" "^7.24.7"
-    "@babel/plugin-transform-sticky-regex" "^7.24.7"
-    "@babel/plugin-transform-template-literals" "^7.24.7"
-    "@babel/plugin-transform-typeof-symbol" "^7.24.8"
-    "@babel/plugin-transform-unicode-escapes" "^7.24.7"
-    "@babel/plugin-transform-unicode-property-regex" "^7.24.7"
-    "@babel/plugin-transform-unicode-regex" "^7.24.7"
-    "@babel/plugin-transform-unicode-sets-regex" "^7.25.4"
+    "@babel/plugin-transform-arrow-functions" "^7.25.7"
+    "@babel/plugin-transform-async-generator-functions" "^7.25.8"
+    "@babel/plugin-transform-async-to-generator" "^7.25.7"
+    "@babel/plugin-transform-block-scoped-functions" "^7.25.7"
+    "@babel/plugin-transform-block-scoping" "^7.25.7"
+    "@babel/plugin-transform-class-properties" "^7.25.7"
+    "@babel/plugin-transform-class-static-block" "^7.25.8"
+    "@babel/plugin-transform-classes" "^7.25.7"
+    "@babel/plugin-transform-computed-properties" "^7.25.7"
+    "@babel/plugin-transform-destructuring" "^7.25.7"
+    "@babel/plugin-transform-dotall-regex" "^7.25.7"
+    "@babel/plugin-transform-duplicate-keys" "^7.25.7"
+    "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.7"
+    "@babel/plugin-transform-dynamic-import" "^7.25.8"
+    "@babel/plugin-transform-exponentiation-operator" "^7.25.7"
+    "@babel/plugin-transform-export-namespace-from" "^7.25.8"
+    "@babel/plugin-transform-for-of" "^7.25.7"
+    "@babel/plugin-transform-function-name" "^7.25.7"
+    "@babel/plugin-transform-json-strings" "^7.25.8"
+    "@babel/plugin-transform-literals" "^7.25.7"
+    "@babel/plugin-transform-logical-assignment-operators" "^7.25.8"
+    "@babel/plugin-transform-member-expression-literals" "^7.25.7"
+    "@babel/plugin-transform-modules-amd" "^7.25.7"
+    "@babel/plugin-transform-modules-commonjs" "^7.25.7"
+    "@babel/plugin-transform-modules-systemjs" "^7.25.7"
+    "@babel/plugin-transform-modules-umd" "^7.25.7"
+    "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.7"
+    "@babel/plugin-transform-new-target" "^7.25.7"
+    "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.8"
+    "@babel/plugin-transform-numeric-separator" "^7.25.8"
+    "@babel/plugin-transform-object-rest-spread" "^7.25.8"
+    "@babel/plugin-transform-object-super" "^7.25.7"
+    "@babel/plugin-transform-optional-catch-binding" "^7.25.8"
+    "@babel/plugin-transform-optional-chaining" "^7.25.8"
+    "@babel/plugin-transform-parameters" "^7.25.7"
+    "@babel/plugin-transform-private-methods" "^7.25.7"
+    "@babel/plugin-transform-private-property-in-object" "^7.25.8"
+    "@babel/plugin-transform-property-literals" "^7.25.7"
+    "@babel/plugin-transform-regenerator" "^7.25.7"
+    "@babel/plugin-transform-reserved-words" "^7.25.7"
+    "@babel/plugin-transform-shorthand-properties" "^7.25.7"
+    "@babel/plugin-transform-spread" "^7.25.7"
+    "@babel/plugin-transform-sticky-regex" "^7.25.7"
+    "@babel/plugin-transform-template-literals" "^7.25.7"
+    "@babel/plugin-transform-typeof-symbol" "^7.25.7"
+    "@babel/plugin-transform-unicode-escapes" "^7.25.7"
+    "@babel/plugin-transform-unicode-property-regex" "^7.25.7"
+    "@babel/plugin-transform-unicode-regex" "^7.25.7"
+    "@babel/plugin-transform-unicode-sets-regex" "^7.25.7"
     "@babel/preset-modules" "0.1.6-no-external-plugins"
     babel-plugin-polyfill-corejs2 "^0.4.10"
     babel-plugin-polyfill-corejs3 "^0.10.6"
     babel-plugin-polyfill-regenerator "^0.6.1"
-    core-js-compat "^3.37.1"
+    core-js-compat "^3.38.1"
     semver "^6.3.1"
 
 "@babel/preset-modules@0.1.6-no-external-plugins":
@@ -1261,103 +965,54 @@
     "@babel/types" "^7.4.4"
     esutils "^2.0.2"
 
-"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.24.7":
-  version "7.24.7"
-  resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc"
-  integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==
+"@babel/preset-react@^7.0.0", "@babel/preset-react@^7.25.7":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.7.tgz#081cbe1dea363b732764d06a0fdda67ffa17735d"
+  integrity sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==
   dependencies:
-    "@babel/helper-plugin-utils" "^7.24.7"
-    "@babel/helper-validator-option" "^7.24.7"
-    "@babel/plugin-transform-react-display-name" "^7.24.7"
-    "@babel/plugin-transform-react-jsx" "^7.24.7"
-    "@babel/plugin-transform-react-jsx-development" "^7.24.7"
-    "@babel/plugin-transform-react-pure-annotations" "^7.24.7"
-
-"@babel/regjsgen@^0.8.0":
-  version "0.8.0"
-  resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
-  integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+    "@babel/helper-plugin-utils" "^7.25.7"
+    "@babel/helper-validator-option" "^7.25.7"
+    "@babel/plugin-transform-react-display-name" "^7.25.7"
+    "@babel/plugin-transform-react-jsx" "^7.25.7"
+    "@babel/plugin-transform-react-jsx-development" "^7.25.7"
+    "@babel/plugin-transform-react-pure-annotations" "^7.25.7"
 
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.0", "@babel/runtime@^7.14.0", "@babel/runtime@^7.17.8", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb"
-  integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==
+"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.0", "@babel/runtime@^7.17.8", "@babel/runtime@^7.2.0", "@babel/runtime@^7.21.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.25.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz#7ffb53c37a8f247c8c4d335e89cdf16a2e0d0fb6"
+  integrity sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==
   dependencies:
     regenerator-runtime "^0.14.0"
 
-"@babel/template@^7.22.5", "@babel/template@^7.24.7", "@babel/template@^7.25.0", "@babel/template@^7.3.3":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
-  integrity sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==
-  dependencies:
-    "@babel/code-frame" "^7.24.7"
-    "@babel/parser" "^7.25.0"
-    "@babel/types" "^7.25.0"
-
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.0.tgz#e8533c0a57ed97921d1e5b20dd3db63d3efaebf5"
-  integrity sha512-ubALThHQy4GCf6mbb+5ZRNmLLCI7bJ3f8Q6LHBSRlSKSWj5a7dSUzJBLv3VuIhFrFPgjF4IzPF567YG/HSCdZA==
-  dependencies:
-    "@babel/code-frame" "^7.24.7"
-    "@babel/generator" "^7.25.0"
-    "@babel/parser" "^7.25.0"
-    "@babel/template" "^7.25.0"
-    "@babel/types" "^7.25.0"
-    debug "^4.3.1"
-    globals "^11.1.0"
-
-"@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3":
-  version "7.25.3"
-  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490"
-  integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
-  dependencies:
-    "@babel/code-frame" "^7.24.7"
-    "@babel/generator" "^7.25.0"
-    "@babel/parser" "^7.25.3"
-    "@babel/template" "^7.25.0"
-    "@babel/types" "^7.25.2"
+"@babel/template@^7.22.5", "@babel/template@^7.25.7", "@babel/template@^7.3.3":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz#27f69ce382855d915b14ab0fe5fb4cbf88fa0769"
+  integrity sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==
+  dependencies:
+    "@babel/code-frame" "^7.25.7"
+    "@babel/parser" "^7.25.7"
+    "@babel/types" "^7.25.7"
+
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.25.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0":
+  version "7.25.7"
+  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz#83e367619be1cab8e4f2892ef30ba04c26a40fa8"
+  integrity sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==
+  dependencies:
+    "@babel/code-frame" "^7.25.7"
+    "@babel/generator" "^7.25.7"
+    "@babel/parser" "^7.25.7"
+    "@babel/template" "^7.25.7"
+    "@babel/types" "^7.25.7"
     debug "^4.3.1"
     globals "^11.1.0"
 
-"@babel/traverse@^7.25.4":
-  version "7.25.6"
-  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41"
-  integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==
-  dependencies:
-    "@babel/code-frame" "^7.24.7"
-    "@babel/generator" "^7.25.6"
-    "@babel/parser" "^7.25.6"
-    "@babel/template" "^7.25.0"
-    "@babel/types" "^7.25.6"
-    debug "^4.3.1"
-    globals "^11.1.0"
-
-"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.25.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
-  version "7.25.0"
-  resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz#e6e3656c581f28da8452ed4f69e38008ec0ba41b"
-  integrity sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==
-  dependencies:
-    "@babel/helper-string-parser" "^7.24.8"
-    "@babel/helper-validator-identifier" "^7.24.7"
-    to-fast-properties "^2.0.0"
-
-"@babel/types@^7.25.2":
-  version "7.25.2"
-  resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125"
-  integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
-  dependencies:
-    "@babel/helper-string-parser" "^7.24.8"
-    "@babel/helper-validator-identifier" "^7.24.7"
-    to-fast-properties "^2.0.0"
-
-"@babel/types@^7.25.6":
-  version "7.25.6"
-  resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6"
-  integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==
+"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.25.7", "@babel/types@^7.25.8", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
+  version "7.25.8"
+  resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz#5cf6037258e8a9bcad533f4979025140cb9993e1"
+  integrity sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==
   dependencies:
-    "@babel/helper-string-parser" "^7.24.8"
-    "@babel/helper-validator-identifier" "^7.24.7"
+    "@babel/helper-string-parser" "^7.25.7"
+    "@babel/helper-validator-identifier" "^7.25.7"
     to-fast-properties "^2.0.0"
 
 "@base2/pretty-print-object@1.0.1":
@@ -1457,9 +1112,9 @@
     tslib "^2.0.0"
 
 "@emotion/is-prop-valid@^1.1.0":
-  version "1.3.0"
-  resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.0.tgz#bd84ba972195e8a2d42462387581560ef780e4e2"
-  integrity sha512-SHetuSLvJDzuNbOdtPVbq6yMMMlLoW5Q94uDqJZqy50gcmAjxFkVqmzqSGEFq9gT2iMuIeKV1PXVWmvUhuZLlQ==
+  version "1.3.1"
+  resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"
+  integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==
   dependencies:
     "@emotion/memoize" "^0.9.0"
 
@@ -1716,9 +1371,9 @@
     eslint-visitor-keys "^3.3.0"
 
 "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
-  version "4.11.0"
-  resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae"
-  integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
+  version "4.11.1"
+  resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz#a547badfc719eb3e5f4b556325e542fbe9d7a18f"
+  integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
 
 "@eslint/eslintrc@^2.1.4":
   version "2.1.4"
@@ -1777,25 +1432,24 @@
   integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
 
 "@inquirer/confirm@^3.0.0":
-  version "3.1.17"
-  resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.17.tgz#adca3b0f35e2d2ace53f652a92f987aaccb8482a"
-  integrity sha512-qCpt/AABzPynz8tr69VDvhcjwmzAryipWXtW8Vi6m651da4H/d0Bdn55LkxXD7Rp2gfgxvxzTdb66AhIA8gzBA==
+  version "3.2.0"
+  resolved "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz#6af1284670ea7c7d95e3f1253684cfbd7228ad6a"
+  integrity sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==
   dependencies:
-    "@inquirer/core" "^9.0.5"
-    "@inquirer/type" "^1.5.1"
+    "@inquirer/core" "^9.1.0"
+    "@inquirer/type" "^1.5.3"
 
-"@inquirer/core@^9.0.5":
-  version "9.0.5"
-  resolved "https://registry.npmjs.org/@inquirer/core/-/core-9.0.5.tgz#b5e14d80e87419231981f48fa86f63d15cb8805b"
-  integrity sha512-QWG41I7vn62O9stYKg/juKXt1PEbr/4ZZCPb4KgXDQGwgA9M5NBTQ7FnOvT1ridbxkm/wTxLCNraUs7y47pIRQ==
+"@inquirer/core@^9.1.0":
+  version "9.2.1"
+  resolved "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz#677c49dee399c9063f31e0c93f0f37bddc67add1"
+  integrity sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==
   dependencies:
-    "@inquirer/figures" "^1.0.5"
-    "@inquirer/type" "^1.5.1"
+    "@inquirer/figures" "^1.0.6"
+    "@inquirer/type" "^2.0.0"
     "@types/mute-stream" "^0.0.4"
-    "@types/node" "^20.14.11"
+    "@types/node" "^22.5.5"
     "@types/wrap-ansi" "^3.0.0"
     ansi-escapes "^4.3.2"
-    cli-spinners "^2.9.2"
     cli-width "^4.1.0"
     mute-stream "^1.0.0"
     signal-exit "^4.1.0"
@@ -1803,15 +1457,22 @@
     wrap-ansi "^6.2.0"
     yoctocolors-cjs "^2.1.2"
 
-"@inquirer/figures@^1.0.5":
-  version "1.0.5"
-  resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz#57f9a996d64d3e3345d2a3ca04d36912e94f8790"
-  integrity sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==
+"@inquirer/figures@^1.0.6":
+  version "1.0.7"
+  resolved "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz#d050ccc0eabfacc0248c4ff647a9dfba1b01594b"
+  integrity sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==
 
-"@inquirer/type@^1.5.1":
-  version "1.5.1"
-  resolved "https://registry.npmjs.org/@inquirer/type/-/type-1.5.1.tgz#cdd36732e38ea5d2b1a4336aada65ebe7d2765e0"
-  integrity sha512-m3YgGQlKNS0BM+8AFiJkCsTqHEFCWn6s/Rqye3mYwvqY6LdfUv12eSwbsgNzrYyrLXiy7IrrjDLPysaSBwEfhw==
+"@inquirer/type@^1.5.3":
+  version "1.5.5"
+  resolved "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz#303ea04ce7ad2e585b921b662b3be36ef7b4f09b"
+  integrity sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==
+  dependencies:
+    mute-stream "^1.0.0"
+
+"@inquirer/type@^2.0.0":
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz#08fa513dca2cb6264fe1b0a2fabade051444e3f6"
+  integrity sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==
   dependencies:
     mute-stream "^1.0.0"
 
@@ -2057,7 +1718,7 @@
     "@jridgewell/gen-mapping" "^0.3.5"
     "@jridgewell/trace-mapping" "^0.3.25"
 
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15":
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
   version "1.5.0"
   resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a"
   integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
@@ -2084,19 +1745,19 @@
   integrity sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==
 
 "@jsonjoy.com/json-pack@^1.0.3":
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.0.4.tgz#ab59c642a2e5368e8bcfd815d817143d4f3035d0"
-  integrity sha512-aOcSN4MeAtFROysrbqG137b7gaDDSmVrl5mpo6sT/w+kcXpWnzhMjmY/Fh/sDx26NBxyIE7MB1seqLeCAzy9Sg==
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.0.tgz#33ca57ee29d12feef540f2139225597469dec894"
+  integrity sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==
   dependencies:
     "@jsonjoy.com/base64" "^1.1.1"
     "@jsonjoy.com/util" "^1.1.2"
     hyperdyperid "^1.2.0"
     thingies "^1.20.0"
 
-"@jsonjoy.com/util@^1.1.2":
-  version "1.2.0"
-  resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.2.0.tgz#0fe9a92de72308c566ebcebe8b5a3f01d3149df2"
-  integrity sha512-4B8B+3vFsY4eo33DMKyJPlQ3sBMpPFUZK2dr3O3rXrOGKKbYG44J0XSFkDo1VOQiri5HFEhIeVvItjR2xcazmg==
+"@jsonjoy.com/util@^1.1.2", "@jsonjoy.com/util@^1.3.0":
+  version "1.5.0"
+  resolved "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz#6008e35b9d9d8ee27bc4bfaa70c8cbf33a537b4c"
+  integrity sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==
 
 "@kickstartds/core@^4.0.5":
   version "4.0.5"
@@ -2182,7 +1843,7 @@
     rw "^1.3.3"
     sort-object "^3.0.3"
 
-"@mdhnpm/rgb-hex-converter@^1.0.3":
+"@mdhnpm/rgb-hex-converter@^1.2.0":
   version "1.2.0"
   resolved "https://registry.npmjs.org/@mdhnpm/rgb-hex-converter/-/rgb-hex-converter-1.2.0.tgz#efb2499ace7d0a25c84910bf22ab0d9445fd0cb0"
   integrity sha512-/tSC3owWlZSuZMDnR797DoJ2ZVH59+dUKv5rHJ0tO18MOebc+oZ2FtyMOrN5QqC5yG/sgXYfPLmMPf5EGiibzw==
@@ -2194,10 +1855,10 @@
   dependencies:
     "@types/mdx" "^2.0.0"
 
-"@mswjs/interceptors@^0.35.6":
-  version "0.35.6"
-  resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.6.tgz#66c522036bc01fa6be87b46b49cc378b837bf510"
-  integrity sha512-PpD687w7qLxVMK176bpQjbzU9O0VC75QnBK5U1lKd29s4hIuxfTItUD6raNKyQ6BN8b64/8HE34RuYTkwH9uPQ==
+"@mswjs/interceptors@^0.35.8":
+  version "0.35.9"
+  resolved "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz#1e1488ff2f333683d374eccc8c0f4d5d851c6d3d"
+  integrity sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==
   dependencies:
     "@open-draft/deferred-promise" "^2.2.0"
     "@open-draft/logger" "^0.3.0"
@@ -2278,6 +1939,89 @@
   resolved "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda"
   integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==
 
+"@parcel/watcher-android-arm64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz#c2c19a3c442313ff007d2d7a9c2c1dd3e1c9ca84"
+  integrity sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==
+
+"@parcel/watcher-darwin-arm64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz#c817c7a3b4f3a79c1535bfe54a1c2818d9ffdc34"
+  integrity sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==
+
+"@parcel/watcher-darwin-x64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz#1a3f69d9323eae4f1c61a5f480a59c478d2cb020"
+  integrity sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==
+
+"@parcel/watcher-freebsd-x64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz#0d67fef1609f90ba6a8a662bc76a55fc93706fc8"
+  integrity sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==
+
+"@parcel/watcher-linux-arm-glibc@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz#ce5b340da5829b8e546bd00f752ae5292e1c702d"
+  integrity sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==
+
+"@parcel/watcher-linux-arm64-glibc@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz#6d7c00dde6d40608f9554e73998db11b2b1ff7c7"
+  integrity sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==
+
+"@parcel/watcher-linux-arm64-musl@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz#bd39bc71015f08a4a31a47cd89c236b9d6a7f635"
+  integrity sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==
+
+"@parcel/watcher-linux-x64-glibc@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz#0ce29966b082fb6cdd3de44f2f74057eef2c9e39"
+  integrity sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==
+
+"@parcel/watcher-linux-x64-musl@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz#d2ebbf60e407170bb647cd6e447f4f2bab19ad16"
+  integrity sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==
+
+"@parcel/watcher-win32-arm64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz#eb4deef37e80f0b5e2f215dd6d7a6d40a85f8adc"
+  integrity sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==
+
+"@parcel/watcher-win32-ia32@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz#94fbd4b497be39fd5c8c71ba05436927842c9df7"
+  integrity sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==
+
+"@parcel/watcher-win32-x64@2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz#4bf920912f67cae5f2d264f58df81abfea68dadf"
+  integrity sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==
+
+"@parcel/watcher@^2.4.1":
+  version "2.4.1"
+  resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz#a50275151a1bb110879c6123589dba90c19f1bf8"
+  integrity sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==
+  dependencies:
+    detect-libc "^1.0.3"
+    is-glob "^4.0.3"
+    micromatch "^4.0.5"
+    node-addon-api "^7.0.0"
+  optionalDependencies:
+    "@parcel/watcher-android-arm64" "2.4.1"
+    "@parcel/watcher-darwin-arm64" "2.4.1"
+    "@parcel/watcher-darwin-x64" "2.4.1"
+    "@parcel/watcher-freebsd-x64" "2.4.1"
+    "@parcel/watcher-linux-arm-glibc" "2.4.1"
+    "@parcel/watcher-linux-arm64-glibc" "2.4.1"
+    "@parcel/watcher-linux-arm64-musl" "2.4.1"
+    "@parcel/watcher-linux-x64-glibc" "2.4.1"
+    "@parcel/watcher-linux-x64-musl" "2.4.1"
+    "@parcel/watcher-win32-arm64" "2.4.1"
+    "@parcel/watcher-win32-ia32" "2.4.1"
+    "@parcel/watcher-win32-x64" "2.4.1"
+
 "@react-spring/animated@~9.2.6-beta.0":
   version "9.2.6"
   resolved "https://registry.npmjs.org/@react-spring/animated/-/animated-9.2.6.tgz#58f30fb75d8bfb7ccbc156cfd6b974a8f3dfd54e"
@@ -2373,10 +2117,10 @@
     redux-thunk "^2.4.2"
     reselect "^4.1.8"
 
-"@remix-run/router@1.19.2":
-  version "1.19.2"
-  resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz#0c896535473291cb41f152c180bedd5680a3b273"
-  integrity sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==
+"@remix-run/router@1.20.0":
+  version "1.20.0"
+  resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz#03554155b45d8b529adf635b2f6ad1165d70d8b4"
+  integrity sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==
 
 "@rtsao/scc@^1.1.0":
   version "1.1.0"
@@ -2419,12 +2163,12 @@
   dependencies:
     "@sinonjs/commons" "^3.0.0"
 
-"@splunk/async-dynamic-options-evaluator@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/async-dynamic-options-evaluator/-/async-dynamic-options-evaluator-26.2.1.tgz#f3339f2b918b7e1f0509a55723cd2bec0c700541"
-  integrity sha512-XoO9DKIuHwkRXIHCL0m5FWXALJxLXipT18ZNIq3rPQgvlpShVK4eJLw3LEA9jWmBjsP1eqF0mcsnFwBLcwpPig==
+"@splunk/async-dynamic-options-evaluator@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/async-dynamic-options-evaluator/-/async-dynamic-options-evaluator-26.3.0.tgz#34d7fd31a48c70ef25f950a9eea50817c03c4cf3"
+  integrity sha512-BXbvHYtu1vKGoIlTPqzBAuMWrw0S9G+N8IwztXZonXa1wB1OEwpfgYDUfPKb9W47XWs4hqnjOzd0bvyjxG1AbA==
   dependencies:
-    "@splunk/visualization-encoding" "^26.2.1"
+    "@splunk/visualization-encoding" "^26.3.0"
 
 "@splunk/babel-preset@^4.0.0":
   version "4.0.0"
@@ -2437,308 +2181,309 @@
     "@babel/preset-env" "^7.2.0"
     "@babel/preset-react" "^7.0.0"
 
-"@splunk/charting-bundle@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/charting-bundle/-/charting-bundle-26.2.1.tgz#7c1b5b7432020ee26781ba7be38e590817d262f8"
-  integrity sha512-BjQIOIcsal9ykiWavzVlaIkD9hqi0mC8uFHXSSyovLUjLzH0fAc372drSZR+IjRKp1eJkQarymyS/53SiWsrBA==
+"@splunk/charting-bundle@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/charting-bundle/-/charting-bundle-26.3.0.tgz#03b05004754a1968d8a9d271ffd89b397ab30014"
+  integrity sha512-R3Pes87jrgj8KMiOdXX2qQlVz+3iKmxkhA8BErkL3txpvFtkuEgoqUw2Djx/oDC4zbnfzbhPSeUy4JKWQqG47A==
 
-"@splunk/dashboard-action-buttons@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-action-buttons/-/dashboard-action-buttons-27.3.1.tgz#c6e93aa2d019dc4fc190e0e7a1ce5c831670828a"
-  integrity sha512-kIw+pQ3yJoE1dSOW2Jijsv4JCoCGrmwskhfZyEsUdIRXodoT9n+tIKQvdiBP4hKfuzjFWuHo1L/hjFp6rn0xKw==
+"@splunk/dashboard-action-buttons@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-action-buttons/-/dashboard-action-buttons-27.4.0.tgz#793d985b0de378c02f08d6223a96eb8b9abd87f6"
+  integrity sha512-xOBWesBwapx1Q2WUQ19N13PFK9Lr7h7bzD+b/ZlcxAuGymi47Jpo6oG36boajpeU971EIHBnzOhnHl5sdincDg==
   dependencies:
-    "@splunk/dashboard-icons" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-ui" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-icons" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-ui" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
     "@splunk/react-icons" "^4.6.0"
     "@splunk/react-toast-notifications" "^0.11.1"
     "@splunk/react-ui" "^4.32.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/ui-utils" "^1.4.0"
     lodash "^4.17.21"
     prop-types "^15.7.2"
 
-"@splunk/dashboard-context@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-context/-/dashboard-context-27.3.1.tgz#5f15fcc5f6b97436ef19b5190bb2996038cae25b"
-  integrity sha512-gwSDQuXVqHOsinctL3h3iq/s3T7fi/P+WNJtH0EVjmmnWZADuucXGBIZJQUgck7+20IQZ4bfb8COJoEsbAlPww==
+"@splunk/dashboard-context@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-context/-/dashboard-context-27.4.0.tgz#7c564ea40a00eb39c4a1436d164d150402fcb489"
+  integrity sha512-hKrrosiLEebGUCd/2fhRU2FO2CIipm5ag3SKuCTryDTg2ojNAWB3scR/Pyr60xo1JnsrEX8OyE//s5R24ORqVg==
   dependencies:
     "@dnd-kit/core" "^6.0.5"
     "@dnd-kit/sortable" "^7.0.1"
     "@dnd-kit/utilities" "^3.2.0"
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-icons" "^27.3.1"
-    "@splunk/dashboard-search" "^27.3.1"
-    "@splunk/dashboard-state" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/datasource-utils" "^27.3.1"
-    "@splunk/datasources" "^27.3.1"
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-icons" "^27.4.0"
+    "@splunk/dashboard-search" "^27.4.0"
+    "@splunk/dashboard-state" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/datasource-utils" "^27.4.0"
+    "@splunk/datasources" "^27.4.0"
     "@splunk/react-ui" "^4.32.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@types/mousetrap" "^1.6.5"
+    ctrl-keys "^1.0.3"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
-    mousetrap "^1.6.3"
+    memoize-one "^6.0.0"
     prop-types "^15.7.2"
 
-"@splunk/dashboard-core@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-core/-/dashboard-core-27.3.1.tgz#eb81b77e12ebaf468b29031d63fae66dfe14bf14"
-  integrity sha512-oLSpo8Pt4lUuQxzpNn7OdHkmXYWwA9lIF8d5gabx633vsRdZSLOoxsFrw1omUSqkxgUyM9ZqDZkHGZK5qMny8g==
+"@splunk/dashboard-core@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-core/-/dashboard-core-27.4.0.tgz#1a41ffca4f5ec741892742fc926172429ab03e37"
+  integrity sha512-EANaBfTbTYj3ZJGiZ76Mv0Gz8M6JtwtsK8DNIQ4vjnmUU9YfSuWqp4BcONyeGIuUfyIPbVrnZHrx7vp7cDzGeA==
   dependencies:
     "@dnd-kit/core" "^6.0.5"
     "@dnd-kit/sortable" "^7.0.1"
     "@dnd-kit/utilities" "^3.2.0"
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-layouts" "^27.3.1"
-    "@splunk/dashboard-search" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-ui" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/dashboard-validation" "^27.3.1"
-    "@splunk/datasource-utils" "^27.3.1"
-    "@splunk/datasources" "^27.3.1"
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-layouts" "^27.4.0"
+    "@splunk/dashboard-search" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-ui" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/dashboard-validation" "^27.4.0"
+    "@splunk/datasource-utils" "^27.4.0"
+    "@splunk/datasources" "^27.4.0"
     "@splunk/react-icons" "^4.6.0"
     "@splunk/react-ui" "^4.32.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-icons" "^26.2.1"
+    "@splunk/visualization-icons" "^26.3.0"
     hash-it "^5.0.0"
     lodash "^4.17.21"
     prop-types "^15.7.2"
     react-full-screen "^1.0.2"
     rxjs "^5.5.12"
 
-"@splunk/dashboard-definition@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-definition/-/dashboard-definition-27.3.1.tgz#0addac3689d3402136484a4a80006992afd885d2"
-  integrity sha512-HGgV5TY7EgtRkzUI1HoScHZFpR4zMuQ6QH9mF3oAaTblttniuLNi1z0vd9WNkDYHvmWQQgeA5oDi4Q/xaLuqTA==
+"@splunk/dashboard-definition@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-definition/-/dashboard-definition-27.4.0.tgz#099b58730acd70cf0e58e21c44de8ae33fdf0a1a"
+  integrity sha512-4oIM3i9wvWv9gBJGkSkWPnX3uepAIi8iCvAPz2GKd6rTyGTPvcjruwNkWai9j51gsBkXPlQQuzp3dSb+8cl+eg==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/dashboard-validation" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/dashboard-validation" "^27.4.0"
     "@splunk/ui-utils" "^1.4.0"
     ajv "^8.5.0"
     fast-json-patch "^3.1.1"
     hash-it "^5.0.0"
     lodash "^4.17.21"
 
-"@splunk/dashboard-event-handlers@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-event-handlers/-/dashboard-event-handlers-27.3.1.tgz#8d056761dda3065c8b5c29cb5c29eaeb4c2b349b"
-  integrity sha512-7I8pswMKHkhx4rOnLNCIzkwKroscJCTi5fXzwp7/jSeQE9lg+J6pgw8q1Ui3n1zPTMBd6vusJOUA7E0RX17OMQ==
+"@splunk/dashboard-event-handlers@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-event-handlers/-/dashboard-event-handlers-27.4.0.tgz#a9658e4079f1dd894e9f2466c5cca857feebb2d6"
+  integrity sha512-fGDETZfH73Ixw45yo4G9eItP1IcbtD5ntIUICJvJn3K3UGJbGu6FvsVlvnhhQhoK/0oaDsZIsn3XZ27oJYpwJA==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
 
-"@splunk/dashboard-icons@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-icons/-/dashboard-icons-27.3.1.tgz#34914e818681a19e5dd106a8b09ef83fea2a503f"
-  integrity sha512-vOi2WHavj9YghmoD5kuVBpj1K5L34D67laqWwUGi/yhzHS/OAd8rUhCWxjyTefv68HhrP4McVP7QsZ6jf9E5tw==
+"@splunk/dashboard-icons@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-icons/-/dashboard-icons-27.4.0.tgz#30ed03cb2bcbbaae9d5ce6129cd6ca0816c6b3f0"
+  integrity sha512-02uLjbRwhdAsdz/xxMsiNLZ/ddyEQIrBp7t0wm+DYMSdXYnGDYBQ2eqyOQxBuzvIpkVANcqsd41v7Hcu96AM5w==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
     "@splunk/react-icons" "^4.6.0"
     "@splunk/ui-utils" "^1.4.0"
-    prop-types "^15.7.2"
 
-"@splunk/dashboard-inputs@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-inputs/-/dashboard-inputs-27.3.1.tgz#72b12cf1cf4dfc284dac7725b6a1a5f6a1da9182"
-  integrity sha512-cndXmUj5NIvDLZ46KuW0oFje3bR1c2vJskEWZOJihz89GBGJ77nl0iTZvLsk+E2vgOTpdKDnMb8YlHan9zcRQw==
+"@splunk/dashboard-inputs@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-inputs/-/dashboard-inputs-27.4.0.tgz#1eb992a1dd8461777a6896f51de62a0ffb9ccf80"
+  integrity sha512-fB9BPxiLA/IrZwRiiBaSw3SvPW6IKstLWNgHb6SrXl6wvE2Mos7dk/4uxSv0h5EgHMXJnF2sDWskYzpS26qMPQ==
   dependencies:
-    "@splunk/dashboard-icons" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-ui" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-icons" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-ui" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
     "@splunk/moment" "^0.7.0"
     "@splunk/react-icons" "^4.6.0"
-    "@splunk/react-time-range" "^9.2.0"
+    "@splunk/react-time-range" "^9.3.1"
     "@splunk/react-ui" "^4.33.0"
     "@splunk/splunk-utils" "^3.1.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/time-range-utils" "^3.2.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-encoding" "^26.2.1"
-    "@splunk/visualization-encoding-parsers" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/visualization-encoding" "^26.3.0"
+    "@splunk/visualization-encoding-parsers" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
+    memoize-one "^6.0.0"
     prop-types "^15.7.2"
 
-"@splunk/dashboard-layouts@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-layouts/-/dashboard-layouts-27.3.1.tgz#d197da33da660880c6f7ace434622a1e494334ae"
-  integrity sha512-ZvjBndINRjum4DrQSesivYogAcr2UvDwRZ6cHgrJpp2moAYTcKiDfEx8k+BA1oAKS1b/f8GBR68K5BGEbk5FNA==
+"@splunk/dashboard-layouts@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-layouts/-/dashboard-layouts-27.4.0.tgz#ba36d9ebddd8b4b82bc1521573974709580a18c8"
+  integrity sha512-KNAuilSyFpqfTp77FibltL+qwmbj2Rkx4OWyRr7QI1dh9awqJaR8hGke+4XqlhHBEBJslIgp+kM6n1oWNZIMyA==
   dependencies:
     "@dnd-kit/core" "^6.0.5"
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-state" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-ui" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@dnd-kit/sortable" "^7.0.1"
+    "@dnd-kit/utilities" "^3.2.0"
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-state" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-ui" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
     "@splunk/react-icons" "^4.6.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-color-palettes" "^26.2.1"
-    "@splunk/visualization-encoding" "^26.2.1"
-    "@splunk/visualizations" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/visualization-color-palettes" "^26.3.0"
+    "@splunk/visualization-encoding" "^26.3.0"
+    "@splunk/visualizations" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
+    memoize-one "^6.0.0"
     prop-types "^15.7.2"
     rxjs "^5.5.12"
 
-"@splunk/dashboard-presets@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-presets/-/dashboard-presets-27.3.1.tgz#617343bde94227fa6befbd583f01d0cc608584a7"
-  integrity sha512-L3PzLIl3CSM22dIAFXsdM8HSRwlEcuA1/6sbIay7KJ/Kk9RHuCVt7+9DtsS/IUhJIMsxklHxGuCUbPBr6OaLrw==
-  dependencies:
-    "@splunk/dashboard-event-handlers" "^27.3.1"
-    "@splunk/dashboard-icons" "^27.3.1"
-    "@splunk/dashboard-inputs" "^27.3.1"
-    "@splunk/dashboard-layouts" "^27.3.1"
-    "@splunk/dashboard-ui" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/dashboard-visualizations" "^26.2.1"
-    "@splunk/datasources" "^27.3.1"
+"@splunk/dashboard-presets@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-presets/-/dashboard-presets-27.4.0.tgz#e3aedcc87c8436c9a96551c97adacfc687094ec6"
+  integrity sha512-rd8nZN9OE72wAMUyq5QJYmuE60f14FFv0mgsKHgrB9ALmJCCRDQx24i4JVKeaSFjoeEZiVw8H5f0WLcE2cdKZA==
+  dependencies:
+    "@splunk/dashboard-event-handlers" "^27.4.0"
+    "@splunk/dashboard-icons" "^27.4.0"
+    "@splunk/dashboard-inputs" "^27.4.0"
+    "@splunk/dashboard-layouts" "^27.4.0"
+    "@splunk/dashboard-ui" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/dashboard-visualizations" "^26.3.0"
+    "@splunk/datasources" "^27.4.0"
     "@splunk/react-icons" "^4.6.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-icons" "^26.2.1"
-    "@splunk/visualizations" "^26.2.1"
+    "@splunk/visualization-icons" "^26.3.0"
+    "@splunk/visualizations" "^26.3.0"
     lodash "^4.17.21"
 
-"@splunk/dashboard-search@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-search/-/dashboard-search-27.3.1.tgz#db3b1898bb88f614632fe38be06d616c11c1a830"
-  integrity sha512-Dtv/GrjyECX859kOjH3qX3PV2xhqo7KyDC0u2LF2UUleSqb2YugbxBPePaEGSbp9Xw8vrDd0vRG1yKsluxHk/Q==
+"@splunk/dashboard-search@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-search/-/dashboard-search-27.4.0.tgz#95b74a82cf3af70b1b07505e566116616e92e168"
+  integrity sha512-fSlCQO9gnT+x4+gQhh3wcm0G7QzA+A6SriX77BiFc6qby9Eu6X42QMp/dteabX5B9s3815Px+EtChbfOLv3+rQ==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/datasource-utils" "^27.3.1"
-    "@splunk/datasources" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/datasource-utils" "^27.4.0"
+    "@splunk/datasources" "^27.4.0"
     "@splunk/ui-utils" "^1.4.0"
     hash-it "^5.0.0"
     lodash "^4.17.21"
     rxjs "^5.5.12"
 
-"@splunk/dashboard-state@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-state/-/dashboard-state-27.3.1.tgz#fc92a42cb0c89d5ee8b4e172e6c3f0c40145a3eb"
-  integrity sha512-AkC7SdOi9on0KPc855zBSbpUea8st5q1aGLlMOjPQVsXHKKU3vhRI/RDlPGXydNx15Ck/IEL4J77Zh2P4+BJGw==
+"@splunk/dashboard-state@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-state/-/dashboard-state-27.4.0.tgz#48793d4387dff37ffc5afb00079d5d076ae167fb"
+  integrity sha512-YKx5GsHcyIGpBDbhGnwPugg3Qb72rKd8vLS4sGN8u/edYLWp0zDr3jc8eo601dxFxNSTpgOFsvJwX9i8LRY0HA==
   dependencies:
     "@reduxjs/toolkit" "^1.9.4"
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
     "@splunk/ui-utils" "^1.4.0"
     lodash "^4.17.21"
     react-redux "^8.0.5"
 
-"@splunk/dashboard-telemetry@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-telemetry/-/dashboard-telemetry-27.3.1.tgz#d66ae9cdaae3afcfc9d3af5041c1f0fb8ea30e37"
-  integrity sha512-TLkvIzMOP1+aCxSmX6OF8yyJABhZYuBVMbxROqDm7pQQ7yMJEmnwC419C74dZtG3qA7VAWQz3OzXjrgJ56fGPQ==
+"@splunk/dashboard-telemetry@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-telemetry/-/dashboard-telemetry-27.4.0.tgz#954fdd0a4267ee092d8a38a3d70a631ddcfc54a5"
+  integrity sha512-TWAeStYa5wr4FUdn58ylhrV8PPgv5cI+oLQ5m93csq2yPbWMAVuEUI6LL2AjNt2k/WKoTHbqHUAhmwljvsGmlg==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
     lodash "^4.17.21"
 
-"@splunk/dashboard-types@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-types/-/dashboard-types-27.3.1.tgz#9423d797f6870d22c15f6f0400a0c077647170af"
-  integrity sha512-dn3tJ8pCe76rTrga2KCaNec2A3UXco+U/M+v0JMIS7Kp3NOpjp2l45TkZtd/1Le6CxNquIbRwuWM7aZKTLRgyQ==
-
-"@splunk/dashboard-ui@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-ui/-/dashboard-ui-27.3.1.tgz#c23bb058c1219a9476fa80b2593e7018d169b91b"
-  integrity sha512-Qe9eNz1aGSEAqXIHRcLH4IjUK58SDUCw3QBuptMX+AKuqgD+Q9WXyAqjK9M0hebWi3u7ka6NmQZZHQpbKAf9hg==
-  dependencies:
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-icons" "^27.3.1"
-    "@splunk/dashboard-telemetry" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/datasource-utils" "^27.3.1"
+"@splunk/dashboard-types@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-types/-/dashboard-types-27.4.0.tgz#3878fbc587ccf8b30a8053a150ca6789eed3bb77"
+  integrity sha512-GPY31OhsdFR6ZbH9kXLKswAzicYf9R+ah1eEmeoF/ubeskWD7+oKrquXnY6vvw2EVzVzlVkR85EyNxUki7Hgnw==
+
+"@splunk/dashboard-ui@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-ui/-/dashboard-ui-27.4.0.tgz#2adbf44a77fc1bd486bba656fdc9bede48c53ff0"
+  integrity sha512-5SLC5Gepmkj32hEsEqMZVTFX+yhPEFn/9ZWh7p610OW9umaja0GdSu+wevVVPwwqamYRASOydCRB13lhOK0mNA==
+  dependencies:
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-icons" "^27.4.0"
+    "@splunk/dashboard-telemetry" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/datasource-utils" "^27.4.0"
     "@splunk/moment" "^0.7.0"
     "@splunk/react-icons" "^4.6.0"
     "@splunk/react-search" "^5.0.0"
     "@splunk/react-ui" "^4.33.0"
     "@splunk/splunk-utils" "^3.1.0"
-    "@splunk/themes" "^0.20.0"
+    "@splunk/themes" "^0.21.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-icons" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/visualization-icons" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
     hoist-non-react-statics "^3.3.2"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
+    memoize-one "^6.0.0"
     prop-types "^15.7.2"
     resize-observer-polyfill "^1.5.1"
     tinycolor2 "^1.4.1"
 
-"@splunk/dashboard-utils@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-utils/-/dashboard-utils-27.3.1.tgz#68e9b8195f8c37839c7b520f5f5ed6fc8e39bab9"
-  integrity sha512-xKbLORre38V0e4aLGi/by9QDhTfE2iy6zfHk57vzRhQDwxSIRLYQ0pHXrN7rhsOQaUApISYyeyfWy7ix9yndGg==
+"@splunk/dashboard-utils@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-utils/-/dashboard-utils-27.4.0.tgz#2d96600f029581f24f3384f393d6e6176b81cde9"
+  integrity sha512-5NHa3r2mHDYUrBE/IhH1ZINkavKwCYoaqr3sNJx9nf12vvoj3MQyPkK/iz9qpxX4MDxnMThUD9pMouvCqgLFRQ==
   dependencies:
     "@splunk/moment" "^0.7.0"
     "@splunk/splunk-utils" "^3.1.0"
     "@splunk/ui-utils" "^1.4.0"
-    "@splunk/visualization-migrations" "^26.2.1"
+    "@splunk/visualization-migrations" "^26.3.0"
     ajv "^8.5.0"
     crypto-js "^4.0.0"
-    jspdf "2.5.1"
+    jspdf "2.5.2"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
+    memoize-one "^6.0.0"
 
-"@splunk/dashboard-validation@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-validation/-/dashboard-validation-27.3.1.tgz#6a9a652a5a6c99815aae04702d94a62d828a2b6c"
-  integrity sha512-78nJ+NJ8gaC7sgMMBeiaoo8G73YK3lurClfwwJAvJzq31JKhxZi+6Ke5r4nuc1STC4uHQQ10mWntwQRMb5VXnQ==
+"@splunk/dashboard-validation@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-validation/-/dashboard-validation-27.4.0.tgz#2d6ad52d5a9311afbb12e87c0fea0df13df6d0a6"
+  integrity sha512-OX7OwXASiYvZah8yN96jh5Y58ZNSveLV2oJ3JzsaOMz6vdn6G8FiHVfbB+XWTroOIk3nyKjZYdJOOnszBJlmpA==
   dependencies:
     "@splunk/ui-utils" "^1.4.0"
     ajv "^8.5.0"
     ajv-errors "^3.0.0"
 
-"@splunk/dashboard-visualizations@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/dashboard-visualizations/-/dashboard-visualizations-26.2.1.tgz#b99cefead0328248f8e34b7f3dcf10f89ce74ff7"
-  integrity sha512-yadU74iLlK2r8zEoceDz2Bn93exGuJYNLNWNH8Wb+mKlcD53lCqPDndA2vYYL/NkI9/t/PmFiYZfZaZTIZ2T7g==
+"@splunk/dashboard-visualizations@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/dashboard-visualizations/-/dashboard-visualizations-26.3.0.tgz#7c4c6af7b9b033e5197270414afc85f10b340351"
+  integrity sha512-uty5cEQO3uQI9byclQ25WKFoMhPp/BPblbvPWuEuktZ04Eq0sTCSAr0Yznqhq2TVqldfGeXvAhJtikMeVZ2Quw==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/charting-bundle" "^26.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/charting-bundle" "^26.3.0"
     "@splunk/moment" "^0.6.0"
-    "@splunk/react-icons" "^4.6.0"
-    "@splunk/react-sparkline" "^0.6.2"
-    "@splunk/react-ui" "^4.33.0"
-    "@splunk/react-visualizations" "^26.2.1"
-    "@splunk/themes" "^0.19.0"
-    "@splunk/ui-utils" "^1.2.1"
-    "@splunk/visualization-color-palettes" "^26.2.1"
-    "@splunk/visualization-encoding-parsers" "^26.2.1"
-    "@splunk/visualization-icons" "^26.2.1"
-    "@splunk/visualization-themes" "^26.2.1"
-    "@splunk/visualizations" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/react-icons" "^4.7.0"
+    "@splunk/react-sparkline" "^0.6.3"
+    "@splunk/react-ui" "^4.37.0"
+    "@splunk/react-visualizations" "^26.3.0"
+    "@splunk/themes" "^0.21.0"
+    "@splunk/ui-utils" "^1.7.1"
+    "@splunk/visualization-color-palettes" "^26.3.0"
+    "@splunk/visualization-encoding-parsers" "^26.3.0"
+    "@splunk/visualization-icons" "^26.3.0"
+    "@splunk/visualization-schemas" "^26.3.0"
+    "@splunk/visualization-themes" "^26.3.0"
+    "@splunk/visualizations" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
     chroma-js "^2.0.0"
     lodash "^4.17.21"
     numeral "^2.0.6"
     react-event-listener "^0.6.4"
     xmlserializer "^0.6.1"
 
-"@splunk/datasource-utils@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/datasource-utils/-/datasource-utils-27.3.1.tgz#6fba09cb9ffd0c1e538ba927850d6f338cef05b8"
-  integrity sha512-Wf8xyoifbdSgnMeyL9tpz69K2F2jZm/6AfNxMa5hCIAydwREoOwUKdnJ3SXfXLWXneOj00WyRdZ56z4Z8vEqqQ==
+"@splunk/datasource-utils@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/datasource-utils/-/datasource-utils-27.4.0.tgz#23f03b81fb712cde27854f113bfa419b3876403d"
+  integrity sha512-f04nGf9C6rsdPQCWUpqi8kTREscjG/soXJq608TsjlEJfWk/6bI50pcplsxHiPhAuY1atFI1InQk3rRYXVHSLw==
   dependencies:
-    "@splunk/dashboard-utils" "^27.3.1"
+    "@splunk/dashboard-utils" "^27.4.0"
     lodash "^4.17.21"
 
-"@splunk/datasources@^27.3.1":
-  version "27.3.1"
-  resolved "https://registry.npmjs.org/@splunk/datasources/-/datasources-27.3.1.tgz#d4a29b1799349678ed8ba8321655f93e46ac5138"
-  integrity sha512-S3TjaQpKyPdIVEzbn0PG/lwXWoLIiFtgJvNWQ+p4m+lofJUebejIGuGuR9g9bJTeA5bmyXKIjvbJEH8cYKwkLA==
+"@splunk/datasources@^27.4.0":
+  version "27.4.0"
+  resolved "https://registry.npmjs.org/@splunk/datasources/-/datasources-27.4.0.tgz#14126f6913fe98930154f14b7fdab31f8becd318"
+  integrity sha512-fCzHdmpU9NsHNOBV9WtCuBJqWf6tt0bLMcMalF73LtqCpwZZDkupYZ1Eibyrawvc3vCGfL3GabCZGOr/K5cQxA==
   dependencies:
-    "@splunk/dashboard-definition" "^27.3.1"
-    "@splunk/dashboard-utils" "^27.3.1"
-    "@splunk/datasource-utils" "^27.3.1"
+    "@splunk/dashboard-definition" "^27.4.0"
+    "@splunk/dashboard-utils" "^27.4.0"
+    "@splunk/datasource-utils" "^27.4.0"
     "@splunk/moment" "^0.7.0"
     "@splunk/search-job" "^3.1.0"
     "@splunk/splunk-utils" "^3.1.0"
@@ -2746,7 +2491,7 @@
     "@splunkdev/cloud-sdk" "^15.0.0"
     hash-it "^5.0.0"
     lodash "^4.17.21"
-    memoize-one "^5.2.1"
+    memoize-one "^6.0.0"
     moment "^2.29.4"
     query-string "^6.13.8"
     rxjs "^5.5.12"
@@ -2801,21 +2546,12 @@
     prop-types "^15.6.0"
     react-is "^16.10.0"
 
-"@splunk/react-icons@^4.0.1", "@splunk/react-icons@^4.2.0", "@splunk/react-icons@^4.6.0":
-  version "4.6.0"
-  resolved "https://registry.npmjs.org/@splunk/react-icons/-/react-icons-4.6.0.tgz#102613beb23099ac39d095923b2464a314d1d751"
-  integrity sha512-BE09UwENIHC9yH7t2ixEnW5TBkhFU/y9816f4+SQoLBLSVm4gns2ga98mK50k00kiwyvmz4IS+ah1peZn3aEaw==
-  dependencies:
-    "@splunk/ui-utils" "^1.6.0"
-    lodash "^4.17.14"
-    prop-types "^15.6.2"
-
-"@splunk/react-icons@^4.7.0":
-  version "4.7.0"
-  resolved "https://registry.npmjs.org/@splunk/react-icons/-/react-icons-4.7.0.tgz#3c9767208fc9c58e5501709860aafe5f91ecbb22"
-  integrity sha512-8ZdavfLCZMLjuA0mDQYaB5JzkIqE5S1GbwxF0WNhcJh//0CdV6kCp9MfSQUEX9rlD8ajOqlj4uW+roTT6tQe/w==
+"@splunk/react-icons@^4.0.1", "@splunk/react-icons@^4.2.0", "@splunk/react-icons@^4.6.0", "@splunk/react-icons@^4.7.0", "@splunk/react-icons@^4.8.0":
+  version "4.8.0"
+  resolved "https://registry.npmjs.org/@splunk/react-icons/-/react-icons-4.8.0.tgz#822de88fb83328852ff4d648a654760cc2522c0f"
+  integrity sha512-61P3SG9UP4+5DrVN0OhBhwal+mSbLSGL4QF7RcT54vLy9TEcVf36A6YC+NbrsReoHp1LRQ9Pf71IAUENUgCC1Q==
   dependencies:
-    "@splunk/ui-utils" "^1.7.0"
+    "@splunk/ui-utils" "^1.7.1"
     lodash "^4.17.14"
     prop-types "^15.6.2"
 
@@ -2845,7 +2581,7 @@
     ace-builds "^1.17.0"
     prop-types "^15.6.0"
 
-"@splunk/react-sparkline@^0.6.2":
+"@splunk/react-sparkline@^0.6.3":
   version "0.6.3"
   resolved "https://registry.npmjs.org/@splunk/react-sparkline/-/react-sparkline-0.6.3.tgz#7f3e13d2d3a55a1fd8b0bc9ac73eb04acc206949"
   integrity sha512-7ie1wbEFs+jpVQ6Z/1E25rfAVuuz4x5tjFKDD86h6oi0lW3zYIWH9/dgnSjp8rXFMReh//NU2M7WM/xkXVAmAQ==
@@ -2855,10 +2591,10 @@
     lodash "^4.17.14"
     prop-types "^15.6.2"
 
-"@splunk/react-time-range@^9.2.0":
-  version "9.2.0"
-  resolved "https://registry.npmjs.org/@splunk/react-time-range/-/react-time-range-9.2.0.tgz#c92c21ee6bbc9497db4c0b8d3a5beec71b3b8f85"
-  integrity sha512-F5lo+ydydUugjKv9nGgLldG2CmLVxhD//fkIc8Nw9BT3a/q5pmf8dGmFOkU6sEqcUHM50E+sFt6LlZl0f1JJZQ==
+"@splunk/react-time-range@^9.2.0", "@splunk/react-time-range@^9.3.1":
+  version "9.3.1"
+  resolved "https://registry.npmjs.org/@splunk/react-time-range/-/react-time-range-9.3.1.tgz#e07e42be74463dd3c0fb44d805fb41d28f6bfa15"
+  integrity sha512-semUdV7ywJ+grBzq3xhbxJW6pu0xKaYjhwFFGaXJrPVLgRdFq7uc9+NZafhE6952voSZOQAUpSQLIsVd4VLqsw==
   dependencies:
     "@babel/runtime" "^7.14.0"
     "@splunk/moment" "^0.6.0"
@@ -2883,40 +2619,17 @@
     prop-types "^15.6.2"
     react-flip-move "^3.0.1"
 
-"@splunk/react-ui@^4.17.1", "@splunk/react-ui@^4.19.0", "@splunk/react-ui@^4.23.0", "@splunk/react-ui@^4.32.0", "@splunk/react-ui@^4.33.0":
-  version "4.33.0"
-  resolved "https://registry.npmjs.org/@splunk/react-ui/-/react-ui-4.33.0.tgz#23a66871e98bccb3d14b8d6766ed8cefeacc0321"
-  integrity sha512-fXGCNdoMuj1ce/O5aNrvSc3XlSQQpbZUr5OmHBg7vAZIPbXlryoFq3+IqIKdtF5N9XqgiDfG0W8yLiXJSPgiPQ==
-  dependencies:
-    "@dnd-kit/core" "^6.1.0"
-    "@dnd-kit/modifiers" "^7.0.0"
-    "@dnd-kit/sortable" "^8.0.0"
-    "@dnd-kit/utilities" "^3.2.2"
-    "@splunk/react-icons" "^4.6.0"
-    "@splunk/themes" "^0.19.0"
-    "@splunk/ui-utils" "^1.6.0"
-    commonmark "^0.30.0"
-    commonmark-react-renderer "^4.3.2"
-    decimal.js-light "^2.2.3"
-    lodash "^4.17.14"
-    moment "^2.29.4"
-    prop-types "^15.6.2"
-    react-resize-detector "^3.2.1"
-    react-spring "9.2.4"
-    tinycolor2 "^1.4.1"
-    use-typed-event-listener "^3.0.0"
-
-"@splunk/react-ui@^4.37.0":
-  version "4.37.0"
-  resolved "https://registry.npmjs.org/@splunk/react-ui/-/react-ui-4.37.0.tgz#5fe8c500ace5cfcb31cee96905ea579060664e0f"
-  integrity sha512-lEvxXsKxndPCTlJrUMDlEqcfa49qf8NTo0+1ZmD5kk7e1xn72H03hRczPZnDyuM3LkIdzplGJc9pN05tWPgTGg==
+"@splunk/react-ui@^4.17.1", "@splunk/react-ui@^4.19.0", "@splunk/react-ui@^4.23.0", "@splunk/react-ui@^4.32.0", "@splunk/react-ui@^4.33.0", "@splunk/react-ui@^4.37.0", "@splunk/react-ui@^4.38.0":
+  version "4.38.0"
+  resolved "https://registry.npmjs.org/@splunk/react-ui/-/react-ui-4.38.0.tgz#802cd17ae6f904e811be10e8a8c6f2769269f677"
+  integrity sha512-7t5coOECgmpbez9+1wy/I8xv+/6dmJ08a39ST5WN0Qwet9zbFRmmA2Ntt+rZ39zWv4So4T1Cc7GQYIOZ47EKaA==
   dependencies:
     "@dnd-kit/core" "^6.1.0"
     "@dnd-kit/modifiers" "^7.0.0"
     "@dnd-kit/sortable" "^8.0.0"
     "@dnd-kit/utilities" "^3.2.2"
-    "@splunk/react-icons" "^4.7.0"
-    "@splunk/themes" "^0.21.0"
+    "@splunk/react-icons" "^4.8.0"
+    "@splunk/themes" "^0.22.0"
     "@splunk/ui-utils" "^1.7.1"
     commonmark "^0.30.0"
     commonmark-react-renderer "^4.3.2"
@@ -2929,19 +2642,19 @@
     tinycolor2 "^1.4.1"
     use-typed-event-listener "^3.0.0"
 
-"@splunk/react-visualizations@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/react-visualizations/-/react-visualizations-26.2.1.tgz#c193e427a4283be854b0b0e9655ed237bba8f692"
-  integrity sha512-tkLBSkuaTxKHi0nt4mXO0/LSo5XFQ7zE7IKAzyBdI6TX6GAdkZlGNareD0LfJg7iXHmXWTaxXoT6MMxRhS75Mw==
+"@splunk/react-visualizations@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/react-visualizations/-/react-visualizations-26.3.0.tgz#c47a540b0c86c9de5e8ebae399c3abce9fee1d67"
+  integrity sha512-5GMVUR87tx7g2whVJExhWVoQ+TFuDszO6ao0Dn/eIJP2aE2Xcg+MZA2yNTyqKPc3XvrNPSxWjuYKIM3uuR0q5A==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/charting-bundle" "^26.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/charting-bundle" "^26.3.0"
     "@splunk/moment" "^0.6.0"
-    "@splunk/ui-utils" "^1.2.1"
-    "@splunk/visualization-color-palettes" "^26.2.1"
-    "@splunk/visualization-themes" "^26.2.1"
-    "@splunk/visualizations" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/ui-utils" "^1.7.1"
+    "@splunk/visualization-color-palettes" "^26.3.0"
+    "@splunk/visualization-themes" "^26.3.0"
+    "@splunk/visualizations" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
     "@turf/bbox-clip" "^6.0.3"
     "@turf/helpers" "^6.1.4"
     chroma-js "^2.0.0"
@@ -3002,25 +2715,25 @@
     lodash "^4.17.14"
     tinycolor2 "^1.4.1"
 
-"@splunk/themes@^0.20.0":
-  version "0.20.0"
-  resolved "https://registry.npmjs.org/@splunk/themes/-/themes-0.20.0.tgz#fc6384fb8a808352c43c91a0c96f8e96acd73186"
-  integrity sha512-R4TWxzJD2gV2y/E8DsQe+yF7jJUokyYTuczmCU266A+Ov+DXWJRfyTtc7FzSBUxxWtvSPobDVWKMIqG/vVyZmg==
+"@splunk/themes@^0.21.0":
+  version "0.21.0"
+  resolved "https://registry.npmjs.org/@splunk/themes/-/themes-0.21.0.tgz#cbe4af2922ef654c4a931ce1723c44416a56b07c"
+  integrity sha512-1HdlZNiwijjb8BWSsYlnNpkDNmgYFg45+ySqaP0eSpeZNvUk9yethHS5CMUQe5cxw7Nz7zpUoY9IlpvBL6v2SA==
   dependencies:
     color-blend "^2.0.9"
     lodash "^4.17.14"
     tinycolor2 "^1.4.1"
 
-"@splunk/themes@^0.21.0":
-  version "0.21.0"
-  resolved "https://registry.npmjs.org/@splunk/themes/-/themes-0.21.0.tgz#cbe4af2922ef654c4a931ce1723c44416a56b07c"
-  integrity sha512-1HdlZNiwijjb8BWSsYlnNpkDNmgYFg45+ySqaP0eSpeZNvUk9yethHS5CMUQe5cxw7Nz7zpUoY9IlpvBL6v2SA==
+"@splunk/themes@^0.22.0":
+  version "0.22.0"
+  resolved "https://registry.npmjs.org/@splunk/themes/-/themes-0.22.0.tgz#405697459748a222ac43b414c1028f79de5aea50"
+  integrity sha512-U4/PO3KzJLv18TGq8omO8alUTWrABU5Ruxu4ywBV1IfYPHVET+SSqAAl8iapboZR+IoFnrSpxxsjQhgPMNhtLA==
   dependencies:
     color-blend "^2.0.9"
     lodash "^4.17.14"
     tinycolor2 "^1.4.1"
 
-"@splunk/time-range-utils@^3.0.1", "@splunk/time-range-utils@^3.2.0":
+"@splunk/time-range-utils@^3.2.0":
   version "3.2.0"
   resolved "https://registry.npmjs.org/@splunk/time-range-utils/-/time-range-utils-3.2.0.tgz#6c13f8ff4a152428c2a932841f70d75ce728c531"
   integrity sha512-25l8IL9vL4tBRWSu2CByvVaTpf+IVWOoHX/4zrTq+RipYOF4ilpAqDSh+IDrI5/YV6YfzdyLBB7FdXOdfZeQBw==
@@ -3031,23 +2744,7 @@
     "@splunk/ui-utils" "^1.5.0"
     lodash "^4.17.19"
 
-"@splunk/ui-utils@^1.2.1", "@splunk/ui-utils@^1.4.0", "@splunk/ui-utils@^1.5.0", "@splunk/ui-utils@^1.5.2", "@splunk/ui-utils@^1.6.0":
-  version "1.6.0"
-  resolved "https://registry.npmjs.org/@splunk/ui-utils/-/ui-utils-1.6.0.tgz#66576bdf80830fb0ec8b0f9e48031ce61eb54e7c"
-  integrity sha512-6uMStGhXno5LluvKZtO34K1LO50T6m9hgoC2FvQ5KEtFLz1MID8XkW3vLjh4zcxU/7ntgQBAlteBLRqi38AF7A==
-  dependencies:
-    keycode "^2.1.9"
-    lodash "^4.17.21"
-
-"@splunk/ui-utils@^1.7.0":
-  version "1.7.0"
-  resolved "https://registry.npmjs.org/@splunk/ui-utils/-/ui-utils-1.7.0.tgz#a84fb35b2f5ecc19439fda877faa3650d54e3398"
-  integrity sha512-YGyrvwQ328yvUFczod8jTdqFWjWwOCVTBC2BZ8cUsZ3YlXOBBJBM+E+vP+NDbJQnEbjbT86qb12OHPp5TAjntw==
-  dependencies:
-    keycode "^2.1.9"
-    lodash "^4.17.21"
-
-"@splunk/ui-utils@^1.7.1":
+"@splunk/ui-utils@^1.4.0", "@splunk/ui-utils@^1.5.0", "@splunk/ui-utils@^1.5.2", "@splunk/ui-utils@^1.6.0", "@splunk/ui-utils@^1.7.1":
   version "1.7.1"
   resolved "https://registry.npmjs.org/@splunk/ui-utils/-/ui-utils-1.7.1.tgz#aa248358656f9f3678cd946ffaec2c2d44de2a06"
   integrity sha512-LSnlKMzUa2RlAZecGm9V8e+OtcceDU4ofxjrUjKMEfL5wp4AmgJrkB7LVepjOEmmrXLOHlEzJeoiAOacN4sJbQ==
@@ -3055,124 +2752,132 @@
     keycode "^2.1.9"
     lodash "^4.17.21"
 
-"@splunk/visualization-color-palettes@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-color-palettes/-/visualization-color-palettes-26.2.1.tgz#6837b3913e5e1153afd953afef8c9f0ddc705f3f"
-  integrity sha512-djSMpT/Y/obYRg5LeQSaTWnAeSpuF/3AZhGkimL8ixYGpi06ZwgszN0o4A4PRT64ac6BrUxLwiBIh0TZ9F/aGA==
+"@splunk/visualization-color-palettes@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-color-palettes/-/visualization-color-palettes-26.3.0.tgz#ecaebc6b9e558317ef9102e8fa44dc5a40552484"
+  integrity sha512-UddwC6AkDWtymGbngxODuiytPLTaIGeMfKMyNjx0TTSJ3832RmiZSUMDPsBJ5+3lQbrn0ddajObFgClIoyKrkQ==
   dependencies:
-    "@babel/runtime" "^7.13.0"
+    "@babel/runtime" "^7.25.6"
 
-"@splunk/visualization-context@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-context/-/visualization-context-26.2.1.tgz#db191e66025a4114c75ecb46a709803f3db56ffa"
-  integrity sha512-fPROsk+gTCQdfQwTGVHSXspv4dGMF11OL8KDRRvLOSxqNf6cEEzxaCnhZFsLb9bPhlCil6YUdL0bOzChLUSFoA==
+"@splunk/visualization-context@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-context/-/visualization-context-26.3.0.tgz#1eb5e094f71d05b4a9c6bad0dcf310c69e93be41"
+  integrity sha512-sIY9cuivY4usbXdCHyYxFj6wKuRI/WZoACo77f0z4XERUYora0TFAbOXdJyllPzH2zfIqCeQbawHLcqPsxuvtQ==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/ui-utils" "^1.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/ui-utils" "^1.7.1"
     uuid-v4 "^0.1.0"
 
-"@splunk/visualization-encoding-parsers@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-encoding-parsers/-/visualization-encoding-parsers-26.2.1.tgz#6e714123d12dcaafd448dcc742869dbad5d85caa"
-  integrity sha512-UggkFz0xtdGbfZm+rkWB2BZgcNFibHkpLEkmbOAQgLhiouZAfL+x5Pwq5nW5GgrMrwUiny0IC4IiqByQsNC8yg==
+"@splunk/visualization-encoding-parsers@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-encoding-parsers/-/visualization-encoding-parsers-26.3.0.tgz#c005281adaf881a74385e53befe80390abbe60e3"
+  integrity sha512-nCFOkTxJ3HxNJJYe+tjff4Ld4qKnE2c0JAtMJQZ1iqZIbjiOC4NfdIG4yUbhrPRB88eAg3irVA0up/uDXYoSZw==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/visualizations-shared" "^26.3.0"
     chroma-js "^2.0.0"
     lodash "^4.17.21"
 
-"@splunk/visualization-encoding@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-encoding/-/visualization-encoding-26.2.1.tgz#8f4d72aa41fd453ece3e88a2cb50fa7793e9429c"
-  integrity sha512-iK0393yKHFtJU3myyo6vB/7cv0pgv0b7yyJjgzGTalpxC4CpVrPplEp7JJDL03EjOsA1TRCSCtG7xEP0GfAAvA==
+"@splunk/visualization-encoding@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-encoding/-/visualization-encoding-26.3.0.tgz#28a811cd2d0c0e281513c3546096cc64e421dc62"
+  integrity sha512-JLhwptroSR/2EdwxzfPHLnhAAI4yxryt5NiFbmrX0NpsKdvhAAN1CHHXRhwOhp4K9uUPmPr2bvhls1uEtx6vMw==
   dependencies:
     "@splunk/moment" "^0.6.1"
-    "@splunk/visualizations-shared" "^26.2.1"
+    "@splunk/visualizations-shared" "^26.3.0"
     chroma-js "^2.0.0"
     lodash "^4.17.21"
     nearley "^2.19.1"
     numbro "2.5.0"
 
-"@splunk/visualization-icons@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-icons/-/visualization-icons-26.2.1.tgz#af692a7ccf2e513c987efc81ae3ebfff49c0f190"
-  integrity sha512-9swSQo3Zkg8U308LBrfdxTqwa58MzekI6qzKu7vostY1AoUNNtXEmKzCbMw5dGDfQTQ6TVHC/+SvQAgFW9QOhA==
+"@splunk/visualization-icons@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-icons/-/visualization-icons-26.3.0.tgz#14f8f13f47aa57e088aefd427b05c0598859dc82"
+  integrity sha512-i/BtySOky+StSbX0OoiBfMqK5J4EKlyHNIXZgnvtmEtlIN07TJOVR48UGwylokvPEApjQMOt6YQc51wggMy/1w==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/react-icons" "^4.6.0"
-    "@splunk/ui-utils" "^1.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/react-icons" "^4.7.0"
+    "@splunk/ui-utils" "^1.7.1"
 
-"@splunk/visualization-migrations@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-migrations/-/visualization-migrations-26.2.1.tgz#5c1f78fb7ca629e6c2f95bf3b5ef952527ae1cf1"
-  integrity sha512-xqFrKMLpVOdGcHN+h28Fq+Khqcv8rrgpNjk94iBcJTcb1MhB3tJ8TYzOEzgTj+pnLcl2tpz+X3XSWrD1Sn2WUg==
+"@splunk/visualization-migrations@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-migrations/-/visualization-migrations-26.3.0.tgz#b762e5a1c160d98fba82d6c1d1cd279ed6869326"
+  integrity sha512-c7zf0291/PAilza9cL2i0Izc9raRWRcpUS2PgPTBBWYEnBB7EiYSAxzOtB97J+eTBSi3dBxALWP7vOllv4C2kA==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/visualization-encoding" "^26.2.1"
-    "@splunk/visualization-encoding-parsers" "^26.2.1"
-    "@splunk/visualizations" "^26.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/visualization-encoding" "^26.3.0"
+    "@splunk/visualization-encoding-parsers" "^26.3.0"
+    "@splunk/visualization-schemas" "^26.3.0"
     lodash "^4.17.21"
 
-"@splunk/visualization-themes@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualization-themes/-/visualization-themes-26.2.1.tgz#c38cc8190069993dfc8ebf5f0e0f8bd09a26b49a"
-  integrity sha512-PYoWVsMNOAIcnT0NQsfNJZFpPqP1VEItefnZsD8+EIJcfl2cIfOumZlS/NRSdKnJ1eKOiLHzew02EvJDPPwRwA==
+"@splunk/visualization-schemas@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-schemas/-/visualization-schemas-26.3.0.tgz#77734577cd2249187cb9690ec2617cc99c4ab83d"
+  integrity sha512-UL3Ufy9RJjl0P+1la7pCvMa0mLoKhcesJbShIjgIhW4FFkr8DquufpUhRhF9fWCb/1ZpjGY3c5SExECzezrMtQ==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@splunk/themes" "^0.19.0"
+    "@babel/runtime" "^7.25.6"
+    "@splunk/visualization-color-palettes" "^26.3.0"
+
+"@splunk/visualization-themes@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualization-themes/-/visualization-themes-26.3.0.tgz#7ed562275aba634d7c48169773019f75cea83f74"
+  integrity sha512-Atfo09Z7iG4BVyW6qmRO6DP13A2iu+6PHVhQsyLSApPsynysDjgLJOxWu82v3L9nmO3YuxzR4FTGs/iBtYIrKg==
+  dependencies:
+    "@babel/runtime" "^7.25.6"
+    "@splunk/themes" "^0.21.0"
 
-"@splunk/visualizations-shared@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualizations-shared/-/visualizations-shared-26.2.1.tgz#5012f1e34884f6494c879fa8148ea709dfaa45aa"
-  integrity sha512-vYl+JbI+pKCfJ6F/ci2rkaFRf2Lv5tcm/BSLFozmEDCIey5/fVoSPQwZGM26dJRdvaTl8yxHacVycweqmMFneA==
+"@splunk/visualizations-shared@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualizations-shared/-/visualizations-shared-26.3.0.tgz#bf9dce55babcc5b5ea0775f993f3bf494bb4872b"
+  integrity sha512-jb00GyyrugRuJFgaNFLnJjTwhQGu4/57QshigPMWf/7YfjEP8XIyE8z4h26m+gnhyUX01nVY3rYI1OyFAAD6sQ==
   dependencies:
-    "@babel/runtime" "^7.13.0"
+    "@babel/runtime" "^7.25.6"
     "@splunk/moment" "^0.6.1"
-    "@splunk/react-icons" "^4.6.0"
-    "@splunk/react-ui" "^4.33.0"
-    "@splunk/themes" "^0.19.0"
-    "@splunk/ui-utils" "^1.2.1"
-    element-resize-detector "^1.1.14"
+    "@splunk/react-icons" "^4.7.0"
+    "@splunk/react-ui" "^4.37.0"
+    "@splunk/themes" "^0.21.0"
+    "@splunk/ui-utils" "^1.7.1"
+    "@splunk/visualization-schemas" "^26.3.0"
+    element-resize-detector "^1.2.4"
     lodash "^4.17.21"
     numeral "^2.0.6"
     xmlserializer "^0.6.1"
 
-"@splunk/visualizations@^26.2.1":
-  version "26.2.1"
-  resolved "https://registry.npmjs.org/@splunk/visualizations/-/visualizations-26.2.1.tgz#1ff1ec954863456860505a1ebd2a7bc7e295c171"
-  integrity sha512-jyJvVUbH2+Mo7FV7mNENKBIGQILB3QsuD7787JEZEn7cHHxeyJne9URBm/CYDWE1CpghrNe9474/NuKRy46JNQ==
+"@splunk/visualizations@^26.3.0":
+  version "26.3.0"
+  resolved "https://registry.npmjs.org/@splunk/visualizations/-/visualizations-26.3.0.tgz#e25fe91ebfcc41d3c4e2f89478fb7f4c5de48ba3"
+  integrity sha512-mDadE2XOJMbyBrXaZmHKxTPwJu5D76CldzbjZZBkjbTrYpH4e7YEijpTQdKq79D/O7xtfG/UtnbbOE8EDJi8ow==
   dependencies:
-    "@babel/runtime" "^7.13.0"
-    "@mdhnpm/rgb-hex-converter" "^1.0.3"
-    "@splunk/async-dynamic-options-evaluator" "^26.2.1"
-    "@splunk/charting-bundle" "^26.2.1"
+    "@babel/runtime" "^7.25.6"
+    "@mdhnpm/rgb-hex-converter" "^1.2.0"
+    "@splunk/async-dynamic-options-evaluator" "^26.3.0"
+    "@splunk/charting-bundle" "^26.3.0"
     "@splunk/moment" "^0.6.1"
     "@splunk/react-events-viewer" "^5.4.6"
     "@splunk/react-field-summary" "^0.11.0"
-    "@splunk/react-icons" "^4.6.0"
-    "@splunk/react-ui" "^4.33.0"
-    "@splunk/themes" "^0.19.0"
-    "@splunk/time-range-utils" "^3.0.1"
-    "@splunk/ui-utils" "^1.2.1"
-    "@splunk/visualization-color-palettes" "^26.2.1"
-    "@splunk/visualization-encoding" "^26.2.1"
-    "@splunk/visualization-icons" "^26.2.1"
-    "@splunk/visualization-themes" "^26.2.1"
-    "@splunk/visualizations-shared" "^26.2.1"
-    "@xmldom/xmldom" "^0.8.4"
+    "@splunk/react-icons" "^4.7.0"
+    "@splunk/react-ui" "^4.37.0"
+    "@splunk/themes" "^0.21.0"
+    "@splunk/time-range-utils" "^3.2.0"
+    "@splunk/ui-utils" "^1.7.1"
+    "@splunk/visualization-color-palettes" "^26.3.0"
+    "@splunk/visualization-encoding" "^26.3.0"
+    "@splunk/visualization-icons" "^26.3.0"
+    "@splunk/visualization-themes" "^26.3.0"
+    "@splunk/visualizations-shared" "^26.3.0"
+    "@xmldom/xmldom" "^0.8.10"
     cssesc "3.0.0"
-    d3-array "^2.12.1"
+    d3-array "^3.2.4"
     d3-axis "^2.1.0"
     d3-brush "^2.1.0"
     d3-collection "^1.0.7"
     d3-drag "^2.0.0"
-    d3-format "^3.0.1"
     d3-interpolate "^3.0.1"
     d3-scale "^3.3.0"
     d3-selection "^2.0.0"
     jexl "^2.2.2"
     lodash "^4.17.21"
-    maplibre-gl "^3.0.0"
+    maplibre-gl "^3.6.2"
     prop-types "^15.7.2"
     react-event-listener "^0.6.6"
     xpath "^0.0.32"
@@ -3191,18 +2896,18 @@
   resolved "https://registry.npmjs.org/@splunkdev/cloud-sdk/-/cloud-sdk-15.0.0.tgz#30a49eb2e8f26eb1569c4e97402a473dc7f96883"
   integrity sha512-6oqdH9ljEpnnt6TjkkZuCo3w0IBJH6fiTKMsVIVjaZDBPaoUhxSdRFuXOO+SI/8qf21p+xaGYbepeKZ1ne2HTQ==
 
-"@storybook/addon-a11y@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.1.tgz#bdfc07f6ad4a51b5301e8b549584bb89e1c046dc"
-  integrity sha512-/Xu0v6kk2xugXdB4EJCbrVZDEt/rtJwHDb+MHhxsxp2FYF/ZRDKHinJzyUMMM4BIoJVZQ8BgFjp7P1hprS7yug==
+"@storybook/addon-a11y@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-8.3.5.tgz#b40d519013961c87af8c1394253a2651d90793ae"
+  integrity sha512-/19UO8IXbyfcYK5K8ejSYF+hC+EK79c0bBPHMNeYSFOHSqQM3KoMo+TLIcLsuhuRClmlM+4Zs+VSIYDwc+d3ig==
   dependencies:
-    "@storybook/addon-highlight" "8.3.1"
+    "@storybook/addon-highlight" "8.3.5"
     axe-core "^4.2.0"
 
-"@storybook/addon-actions@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.1.tgz#17998b880d6db75140752a4762b7e355f1cd9cd0"
-  integrity sha512-f00NxBNBcsMHqtwsOpRbZKrNMLdUjnSg1G6zYdVxAG7NwxzgpqPZm37I36ebFmgz/WO2XQ3ihxzfV2IKFuiZ6g==
+"@storybook/addon-actions@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.3.5.tgz#03fdb891114439ed47cb7df6ef21826530449db7"
+  integrity sha512-t8D5oo+4XfD+F8091wLa2y/CDd/W2lExCeol5Vm1tp5saO+u6f2/d7iykLhTowWV84Uohi3D073uFeyTAlGebg==
   dependencies:
     "@storybook/global" "^5.0.0"
     "@types/uuid" "^9.0.1"
@@ -3210,35 +2915,35 @@
     polished "^4.2.2"
     uuid "^9.0.0"
 
-"@storybook/addon-backgrounds@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.1.tgz#687c6543f49a8826fdcec7e368fadc75080e40f9"
-  integrity sha512-HPQElHIi5SMWJTOimYt27QaiPrrwTprVShVfq3gQKpUcDJhT4qMpI3Bn3JCtthPlXlUA+miZcNdNRTIc2XzhSA==
+"@storybook/addon-backgrounds@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.3.5.tgz#479ecb6181441e7f8429569bd7cefdb74058c12f"
+  integrity sha512-IQGjDujuw8+iSqKREdkL8I5E/5CAHZbfOWd4A75PQK2D6qZ0fu/xRwTOQOH4jP6xn/abvfACOdL6A0d5bU90ag==
   dependencies:
     "@storybook/global" "^5.0.0"
     memoizerific "^1.11.3"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-controls@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.1.tgz#82fb4a5f174a805db364c98ea27abdaafaa78570"
-  integrity sha512-zqVNRGQ2GS1ReDZ6YTAl+pLmnrOWwE3OUsByRfzHCYlmO55TxYi92HBTSbAXyWRKyqVUKH69PmbKGukc83aX2Q==
+"@storybook/addon-controls@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.3.5.tgz#d9b7aec16e2673a473ab018b3b453cd114628181"
+  integrity sha512-2eCVobUUvY1Rq7sp1U8Mx8t44VXwvi0E+hqyrsqOx5TTSC/FUQ+hNAX6GSYUcFIyQQ1ORpKNlUjAAdjxBv1ZHQ==
   dependencies:
     "@storybook/global" "^5.0.0"
     dequal "^2.0.2"
     lodash "^4.17.21"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-docs@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.1.tgz#b33fc3d9a18159c0ac95ad1597132216442ddb22"
-  integrity sha512-8ES7ThajpKDoMheAthnDDg/lXUsIxzV+EdHuE4WnRoiw+25XfYr9WIEuEpytRz/drouJhunOgOJV0kCPxZ3XgQ==
+"@storybook/addon-docs@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.3.5.tgz#df9e3310b7a63355184f5a2a7f2e2aa396588765"
+  integrity sha512-MOVfo1bY8kXTzbvmWnx3UuSO4WNykFz7Edvb3mxltNyuW7UDRZGuIuSe32ddT/EtLJfurrC9Ja3yBy4KBUGnMA==
   dependencies:
     "@mdx-js/react" "^3.0.0"
-    "@storybook/blocks" "8.3.1"
-    "@storybook/csf-plugin" "8.3.1"
+    "@storybook/blocks" "8.3.5"
+    "@storybook/csf-plugin" "8.3.5"
     "@storybook/global" "^5.0.0"
-    "@storybook/react-dom-shim" "8.3.1"
+    "@storybook/react-dom-shim" "8.3.5"
     "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0"
     fs-extra "^11.1.0"
     react "^16.8.0 || ^17.0.0 || ^18.0.0"
@@ -3247,74 +2952,74 @@
     rehype-slug "^6.0.0"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-essentials@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.1.tgz#1a1c9478e2e71b2235f269134d23c30ddd6f9fe8"
-  integrity sha512-5dNlKKJveBYqe1OT4dSE7V7ZjhULWnL238oeHz6wabjfL/l7W9MgLke5mxir4xSaAKf5sOg+QFK+RSmYYih4pg==
-  dependencies:
-    "@storybook/addon-actions" "8.3.1"
-    "@storybook/addon-backgrounds" "8.3.1"
-    "@storybook/addon-controls" "8.3.1"
-    "@storybook/addon-docs" "8.3.1"
-    "@storybook/addon-highlight" "8.3.1"
-    "@storybook/addon-measure" "8.3.1"
-    "@storybook/addon-outline" "8.3.1"
-    "@storybook/addon-toolbars" "8.3.1"
-    "@storybook/addon-viewport" "8.3.1"
+"@storybook/addon-essentials@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.3.5.tgz#59599a75e3f72d1048d715f3ec35a4c07149b2f8"
+  integrity sha512-hXTtPuN4/IsXjUrkMPAuz1qKAl8DovdXpjQgjQs7jSAVx3kc4BZaGqJ3gaVenKtO8uDchmA92BoQygpkc8eWhw==
+  dependencies:
+    "@storybook/addon-actions" "8.3.5"
+    "@storybook/addon-backgrounds" "8.3.5"
+    "@storybook/addon-controls" "8.3.5"
+    "@storybook/addon-docs" "8.3.5"
+    "@storybook/addon-highlight" "8.3.5"
+    "@storybook/addon-measure" "8.3.5"
+    "@storybook/addon-outline" "8.3.5"
+    "@storybook/addon-toolbars" "8.3.5"
+    "@storybook/addon-viewport" "8.3.5"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-highlight@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.1.tgz#27520e5374d3952a436985e6966f3e6c67a643b9"
-  integrity sha512-hEB4O1a76SGEJypjPwjvBT8e9+pWptAD6VY995gtsOrMLaV0213DJV8aEGJRXhELEk2sr8WUaoYhzxxtgD97KA==
+"@storybook/addon-highlight@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.3.5.tgz#62293e7b39844ded33bb4ba7ee79c3c96d997fe2"
+  integrity sha512-ku0epul9aReCR3Gv/emwYnsqg3vgux5OmYMjoDcJC7s+LyfweSzLV/f5t9gSHazikJElh5TehtVkWbC4QfbGSw==
   dependencies:
     "@storybook/global" "^5.0.0"
 
-"@storybook/addon-interactions@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.1.tgz#0f636b691c28e027c14b2aaedd8fc42199f7c35e"
-  integrity sha512-EQiemx7ZvI9r4WrWmKB7hvoh9XO+YJh61LNEBLrdnSnRITJKGFrJtqnfuSrvQXWxFVi6U1PtSqDzCV8z0IwK2g==
+"@storybook/addon-interactions@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.3.5.tgz#c971925937aeb6d66bf108dc27a90a4a9cbbf8f4"
+  integrity sha512-GtTy/A+mG7vDOahQr2avT4dpWtCRiFDSYcWyuQOZm10y8VDDw157HQM+FuhxjV9Owrrohy9F24oBUwRG8H3b5A==
   dependencies:
     "@storybook/global" "^5.0.0"
-    "@storybook/instrumenter" "8.3.1"
-    "@storybook/test" "8.3.1"
+    "@storybook/instrumenter" "8.3.5"
+    "@storybook/test" "8.3.5"
     polished "^4.2.2"
     ts-dedent "^2.2.0"
 
-"@storybook/addon-links@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.1.tgz#48823e23334e934cd6b3ddd1564ae683e6885016"
-  integrity sha512-xhd1cXpHKn9mr87ImcEOV+YexDZcITzxFQoW2m5ocGkMyVFotK6NjOk/f9xsZAGIp4T7axsdEmwFNSovHgw91A==
+"@storybook/addon-links@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.3.5.tgz#1621afd8be06af6de5e942644053d5136cc5bb83"
+  integrity sha512-giRCpn6cfJMYPnVJkojoQDO5ae6098fgY9YgAhwaJej/9dufNcioFdbiyfK1vyzbG6TGeTmJ9ncWCXgWRtzxPQ==
   dependencies:
     "@storybook/csf" "^0.1.11"
     "@storybook/global" "^5.0.0"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-measure@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.1.tgz#a17bcb4608526bfa2e4eaccac1b35cf32545199a"
-  integrity sha512-XL7Rph0K0vggVcY7mxGws9SNzLJlCvzrPJdz1xZBKBLLd0fdpbR5Y+1oP1w/7qhZ9Xrg44VRVs4yUzCYUeK2OQ==
+"@storybook/addon-measure@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.3.5.tgz#4eef622137f9ee615eb179e5e2af050ea0f7ab8b"
+  integrity sha512-6GVehgbHhFIFS69xSfRV+12VK0cnuIAtZdp1J3eUCc2ATrcigqVjTM6wzZz6kBuX6O3dcusr7Wg46KtNliqLqg==
   dependencies:
     "@storybook/global" "^5.0.0"
     tiny-invariant "^1.3.1"
 
-"@storybook/addon-outline@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.1.tgz#18aba35ea9f610884dcd6225f72d0409be886d4a"
-  integrity sha512-bpxiffkMjWbrVAmbonzkGaTQp3zCECOP5B4Uw0oRfH7YVZgUsj1brRjVsMvBB1bwDP/ijj46X12OcZjqVEJP5Q==
+"@storybook/addon-outline@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.3.5.tgz#274a497b9a6b391bf3c47aa61e19ddc28cbae395"
+  integrity sha512-dwmK6GzjEnQP9Yo0VnBUQtJkXZlXdfjWyskZ/IlUVc+IFdeeCtIiMyA92oMfHo8eXt0k1g21ZqMaIn7ZltOuHw==
   dependencies:
     "@storybook/global" "^5.0.0"
     ts-dedent "^2.0.0"
 
-"@storybook/addon-toolbars@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.1.tgz#bdc58c9ef012300effc1a85eb51582ffe44be347"
-  integrity sha512-bjlQP9a56O4OCI4g9tDNm51frBcHaFpHma3MJ1vg302oj/XOQrec/am2sA0E6L1l4Hih2PkRYTamo3+GmQRJug==
+"@storybook/addon-toolbars@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.3.5.tgz#7328fed0f4a24c6828ba23e06b9cddd0d3e00e2b"
+  integrity sha512-Ml2gc9q8WbteDvmuAZGgBxt5SqWMXzuTkMjlsA8EB53hlkN1w9esX4s8YtBeNqC3HKoUzcdq8uexSBqU8fDbSA==
 
-"@storybook/addon-viewport@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.1.tgz#98b26bd6efd8833473171fecf62f6b404e63dd78"
-  integrity sha512-Z0Ls3ThjOx56KE4I5ampOtfK7G4/AAa0bOoaFq7+bLOomXMtZsC3yyXyrm5YQ6ZHmeP2XaXmOe52HDsvq+ko2Q==
+"@storybook/addon-viewport@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.3.5.tgz#10f10871eba32cf6c484db199241122184a4324b"
+  integrity sha512-FSWydoPiVWFXEittG7O1YgvuaqoU9Vb+qoq9XfP/hvQHHMDcMZvC40JaV8AnJeTXaM7ngIjcn9XDEfGbFfOzXw==
   dependencies:
     memoizerific "^1.11.3"
 
@@ -3326,10 +3031,10 @@
     "@babel/core" "^7.23.7"
     babel-loader "^9.1.3"
 
-"@storybook/blocks@8.3.1", "@storybook/blocks@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.1.tgz#08c1480a11b09807bbdf4933479ca70deb371a6e"
-  integrity sha512-/wNLRVWR/edzHQAFvSW68VxHYmBcfXpL/XdO46I5Z1X/tXUd0rtgGZmliQ2jZ242FqxcT8guqqFGehbeYUns5w==
+"@storybook/blocks@8.3.5", "@storybook/blocks@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.3.5.tgz#35e20efb0c13a235832dd945520ff8ac61f40717"
+  integrity sha512-8cHTdTywolTHlgwN8I7YH7saWAIjGzV617AwjhJ95AKlC0VtpO1gAFcAgCqr4DU9eMc+LZuvbnaU/RSvA5eCCQ==
   dependencies:
     "@storybook/csf" "^0.1.11"
     "@storybook/global" "^5.0.0"
@@ -3346,12 +3051,12 @@
     ts-dedent "^2.0.0"
     util-deprecate "^1.0.2"
 
-"@storybook/builder-webpack5@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.1.tgz#fbf0a2cd6630bd012d7f3bb80d1115bc168208f8"
-  integrity sha512-H0KvdNCtsOuezcrqKmvjgNkwgIsT9TU+VWJkeRRXEARr+urN0A6cTYvka2ZXPVqdGfPa4XiCkjr3MX27Z8drZg==
+"@storybook/builder-webpack5@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.3.5.tgz#86eba6b8f3546aa1a4b264bb0253e8444b69c6f8"
+  integrity sha512-rhmfdiSlDn3Arki7IMYk11PO29rYuYM4LZ8GlNqREU7VUl/8Vngo/jFIa4pKaIns3ql1RrwzO1wm9JvuL/4ydA==
   dependencies:
-    "@storybook/core-webpack" "8.3.1"
+    "@storybook/core-webpack" "8.3.5"
     "@types/node" "^22.0.0"
     "@types/semver" "^7.3.4"
     browser-assert "^1.2.1"
@@ -3379,33 +3084,28 @@
     webpack-hot-middleware "^2.25.1"
     webpack-virtual-modules "^0.6.0"
 
-"@storybook/components@^8":
-  version "8.2.6"
-  resolved "https://registry.npmjs.org/@storybook/components/-/components-8.2.6.tgz#742ff3d9ebff763af8c8a1e2e2c991112e2a27ba"
-  integrity sha512-H8ckH1AnLkHtMtvJ3J8LxnmDtHxkJ7NJacGctHMRrsBIvdKTVwlT4su5nAVVJlan/PrEou+jESfw+OjjBYE5PA==
-
-"@storybook/components@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.1.tgz#b40a16691462a032945ecb37194e6f713da6f680"
-  integrity sha512-/CMqX40CpNOKow58oLyO/OvMhHiHCIvOGf/65lXHk/D9qECMvchFfA2/MH8H7HiJUIqoSPit194miBENK5kqdw==
+"@storybook/components@^8", "@storybook/components@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/components/-/components-8.3.5.tgz#6a8e7f95f1b1f45df7ffcbdeeb3eef3c6cce0d3f"
+  integrity sha512-Rq28YogakD3FO4F8KwAtGpo1g3t4V/gfCLqTQ8B6oQUFoxLqegkWk/DlwCzvoJndXuQJfdSyM6+r1JcA4Nql5A==
 
 "@storybook/core-common@^8.0.0":
-  version "8.2.6"
-  resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.2.6.tgz#9e91485ac149f032bbcfad412d0d1e5214f8e9aa"
-  integrity sha512-PLBaCpX2FuuVNEaW3rOI2YtRJ5SSHhfB890ShKX/9XyD1rCjT3C11dgCNZ3Im1GLF/T6vKvfGc+5fie7W2Rjtg==
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.3.5.tgz#366af0eff857e01504fc648b0387d66761733210"
+  integrity sha512-Dz91pcUH4mGgKRyo5AKiD6bhjC511d7J30SmMs5lgQl7nJWlepqon7Qhy+SzsEWTWtFTgRGPs//lKTmEaVT9ug==
 
-"@storybook/core-webpack@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.1.tgz#b3dba740ab9fb5b9d505eacef3517a98d33e5a06"
-  integrity sha512-SrHycFCejWopqtxN/Smj9kI0aTkDo6vmtJWW0Rvgp+V8/83ikSJapN+TzRbq+zhSHhAfpvr5NmaFUwYzbwO/rw==
+"@storybook/core-webpack@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.3.5.tgz#3e058fdb4bd73ca5deee5b3ce5621f599dfa248d"
+  integrity sha512-mN8BHNc6lSGUf/nKgDr6XoTt1cX+Tap9RnKMUiROCDzfVlJPeJBrG4qrTOok7AwObzeDl9DNFyun6+pVgXJe7A==
   dependencies:
     "@types/node" "^22.0.0"
     ts-dedent "^2.0.0"
 
-"@storybook/core@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.1.tgz#8e991bdff670709de7b164c67cd9adcebe8b8d70"
-  integrity sha512-L8YTtUipcBvl4F8jFNnXU3NM1hnLwZ3Ge2l+SRVKUGoAZzdf/I8O/0eOeZ+3LM3PvDn8bC9x+qjhNyDgtT+ieQ==
+"@storybook/core@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/core/-/core-8.3.5.tgz#d77c93bb67c2df12e3bf84ae7def4693891b225d"
+  integrity sha512-GOGfTvdioNa/n+Huwg4u/dsyYyBcM+gEcdxi3B7i5x4yJ3I912KoVshumQAOF2myKSRdI8h8aGWdx7nnjd0+5Q==
   dependencies:
     "@storybook/csf" "^0.1.11"
     "@types/express" "^4.17.21"
@@ -3421,17 +3121,17 @@
     util "^0.12.5"
     ws "^8.2.3"
 
-"@storybook/csf-plugin@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.1.tgz#3c6390c830e2d76074aec515564bd2c9f34d12e4"
-  integrity sha512-K3JWJf79+BkJAbOnAns5KGQ9h0NCqWht/1B05frj9LuAD/U+0sikpByiC2QvJ+qtX4fODhqjRYvrv2jgP8o3mA==
+"@storybook/csf-plugin@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.3.5.tgz#198946c438be8915b63abde04a19f26610a6d88a"
+  integrity sha512-ODVqNXwJt90hG7QW8I9w/XUyOGlr0l7XltmIJgXwB/2cYDvaGu3JV5Ybg7O0fxPV8uXk7JlRuUD8ZYv5Low6pA==
   dependencies:
     unplugin "^1.3.1"
 
 "@storybook/csf-tools@^8.0.0":
-  version "8.2.6"
-  resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.2.6.tgz#f1e49c41469aa451a91aa1292839877fd67d5e64"
-  integrity sha512-gmPuSeX7zwulg8kViY4Cpi18P91psqrRdeO64PJdYqasLmKbsdWRSNFSKeGoV3tRUADSz6uIlEeaJGd7AZPEDw==
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.3.5.tgz#9227655a641427ff98f7b8ad88367ca12e297a89"
+  integrity sha512-vx+8FYwrSNbaotHVbKTO7aKjtQ5ghvMRXNYYoYve2YZ/vm7Os4hbfmEjR90+XcJR5LgOQ4adlhiPWCf+pU8sEg==
 
 "@storybook/csf@^0.0.1":
   version "0.0.1"
@@ -3453,36 +3153,31 @@
   integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==
 
 "@storybook/icons@^1.2.10":
-  version "1.2.10"
-  resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.10.tgz#d3d44912a3a88f3f04f77ce2c23a7e47e796f766"
-  integrity sha512-310apKdDcjbbX2VSLWPwhEwAgjxTzVagrwucVZIdGPErwiAppX8KvBuWZgPo+rQLVrtH8S+pw1dbUwjcE6d7og==
+  version "1.2.12"
+  resolved "https://registry.npmjs.org/@storybook/icons/-/icons-1.2.12.tgz#3e4c939113b67df7ab17b78f805dbb57f4acf0db"
+  integrity sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==
 
-"@storybook/instrumenter@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.1.tgz#47f6539a443467489f56f4feacf32b52f37e61ef"
-  integrity sha512-TtECvALgEPLafdy+YHXz2+xBPobiSMHj532nS7tkqxD9aRD1+Ocy6pWWNaP9+iiWWnHIWlTQ0M/7UEoCxV+Ksg==
+"@storybook/instrumenter@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.3.5.tgz#ba3c6adcd928ef98859ac4ed1e5addb1164659ea"
+  integrity sha512-NLDXai5y2t1ITgHVK9chyL0rMFZbICCOGcnTbyWhkLbiEWZKPJ8FuB8+g+Ba6zwtCve1A1Cnb4O2LOWy7TgWQw==
   dependencies:
     "@storybook/global" "^5.0.0"
     "@vitest/utils" "^2.0.5"
     util "^0.12.4"
 
-"@storybook/manager-api@^8":
-  version "8.2.6"
-  resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.2.6.tgz#87172bcac1deb5378246deb96d68c1d3357ff58e"
-  integrity sha512-uv36h/b5RhlajWtEg4cVPBYV8gZs6juux0nIE+6G9i7vt8Ild6gM9tW1KNabgZcaHFiyWJYCNWxJZoKjgUmXDg==
-
-"@storybook/manager-api@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.1.tgz#ad6097b71b708b2de76850f7a8f8e46e69a19ee8"
-  integrity sha512-GHJr1/nNAfkzNs4P8z31zBN8ZBucMfl+aSH6ciCy12jN3dOmEfb67mx3aes2PmBJjY3K8HG2lgsO9tNKIyDJXQ==
+"@storybook/manager-api@^8", "@storybook/manager-api@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.3.5.tgz#73560ffc3774901e503e31aefac91cd4a1579bbb"
+  integrity sha512-fEQoKKi7h7pzh2z9RfuzatJxubrsfL/CB99fNXQ0wshMSY/7O4ckd18pK4fzG9ErnCtLAO9qsim4N/4eQC+/8Q==
 
-"@storybook/preset-react-webpack@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.1.tgz#3b36cecab6c391dd13334c1bed923ed425076019"
-  integrity sha512-XsnavmDMspA/c9b14d63JHUh1FGvP5veA1DUwz6kIR+XxcNGit5ukb/7oq0IoBGnuK2eto5uy9JtvQ1708phFA==
+"@storybook/preset-react-webpack@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.3.5.tgz#5886d265027e7854cb4d15d8ca728990894ac4f8"
+  integrity sha512-laS9CiZrZ4CSnBTBfkBba3hmlDhzcjIfCvx8/rk3SZ+zh93NpqXixzRt6m0UH2po63dpdu21nXrsW5Cfs88Ypw==
   dependencies:
-    "@storybook/core-webpack" "8.3.1"
-    "@storybook/react" "8.3.1"
+    "@storybook/core-webpack" "8.3.5"
+    "@storybook/react" "8.3.5"
     "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0"
     "@types/node" "^22.0.0"
     "@types/semver" "^7.3.4"
@@ -3495,15 +3190,10 @@
     tsconfig-paths "^4.2.0"
     webpack "5"
 
-"@storybook/preview-api@^8", "@storybook/preview-api@^8.0.0":
-  version "8.2.6"
-  resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.2.6.tgz#8cb1f84d73bc83b9522ad15596084ef46b602575"
-  integrity sha512-5vTj2ndX5ng4nDntZYe+r8UwLjCIGFymhq5/r2adAvRKL+Bo4zQDWGO7bhvGJk16do2THb2JvPz49ComW9LLZw==
-
-"@storybook/preview-api@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.1.tgz#ab48b7e2fae37786fc2b70e2e910205ffd838574"
-  integrity sha512-mpeeQi0DiK6lGiFEa/iAXNQykZB/wv9UiI5MYwxfgVTCCIh7skeBQsu/7Ye+C+KyXgrNmH5YAP3CjYfkFVimhQ==
+"@storybook/preview-api@^8", "@storybook/preview-api@^8.0.0", "@storybook/preview-api@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.3.5.tgz#d30debc89793a912cdd26aea1e18b92527f2cf76"
+  integrity sha512-VPqpudE8pmjTLvdNJoW/2//nqElDgUOmIn3QxbbCmdZTHDg5tFtxuqwdlNfArF0TxvTSBDIulXt/Q6K56TAfTg==
 
 "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0":
   version "1.0.6--canary.9.0c3f3b7.0"
@@ -3518,32 +3208,32 @@
     react-docgen-typescript "^2.2.2"
     tslib "^2.0.0"
 
-"@storybook/react-dom-shim@8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.1.tgz#13f351d149b1d87766c3757ddd49bc5bffc09e39"
-  integrity sha512-nHMhXkt3FAm8c08QTTU70vpYhsAu65RpCv/uhYZ89H5OWvmLFHn36iJQPzlpWFtJHJ5+bAV/bfgNODR3BV1gRg==
+"@storybook/react-dom-shim@8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.3.5.tgz#dda5356d3bf55623b9b1429fac7bf185e59c58fd"
+  integrity sha512-Hf0UitJ/K0C7ajooooUK/PxOR4ihUWqsC7iCV1Gqth8U37dTeLMbaEO4PBwu0VQ+Ufg0N8BJLWfg7o6G4hrODw==
 
-"@storybook/react-webpack5@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.3.1.tgz#62e2998ab3d99e4f48f406c0ac6e22c76799fc5e"
-  integrity sha512-ciyKa/RImHFk7o+GzX8RN59m7VE3BBCMc5cyjjRzOskkrZIg22s87Flji8eXGoYfGum9/Dwwp4tK//7fI2tcvw==
+"@storybook/react-webpack5@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.3.5.tgz#31556eb7a7d296be9489adde71a9c1da83d0044b"
+  integrity sha512-J7jCxjCuWvRJrAtOwe4ij8rjfTGm1Dpsfbz8xar4ItVw7ikiyALr34E3FJzfgq7M40uGXZhvCl2IVRdGeiLmzg==
   dependencies:
-    "@storybook/builder-webpack5" "8.3.1"
-    "@storybook/preset-react-webpack" "8.3.1"
-    "@storybook/react" "8.3.1"
+    "@storybook/builder-webpack5" "8.3.5"
+    "@storybook/preset-react-webpack" "8.3.5"
+    "@storybook/react" "8.3.5"
     "@types/node" "^22.0.0"
 
-"@storybook/react@8.3.1", "@storybook/react@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.1.tgz#8873dc4cab4ffa9caa2b444f36ea0fb660e8a446"
-  integrity sha512-uxr5o5TzUHB1vFMgdayxatDTYUYWJxDse4hcpr+D2E5QMrMCKBk/KRYgJtnPhmEBASoT40lcZvYmEWnP973KWA==
+"@storybook/react@8.3.5", "@storybook/react@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/react/-/react-8.3.5.tgz#d4e333b09f275f06b38fb1367234ad1619fbe4fa"
+  integrity sha512-kuBPe/wBin10SWr4EWPKxiTRGQ4RD2etGEVWVQLqVpOuJp/J2hVvXQHtCfZXU4TZT5x4PBbPRswbr58+XlF+kQ==
   dependencies:
-    "@storybook/components" "^8.3.1"
+    "@storybook/components" "^8.3.5"
     "@storybook/global" "^5.0.0"
-    "@storybook/manager-api" "^8.3.1"
-    "@storybook/preview-api" "^8.3.1"
-    "@storybook/react-dom-shim" "8.3.1"
-    "@storybook/theming" "^8.3.1"
+    "@storybook/manager-api" "^8.3.5"
+    "@storybook/preview-api" "^8.3.5"
+    "@storybook/react-dom-shim" "8.3.5"
+    "@storybook/theming" "^8.3.5"
     "@types/escodegen" "^0.0.6"
     "@types/estree" "^0.0.51"
     "@types/node" "^22.0.0"
@@ -3587,14 +3277,14 @@
     nyc "^15.1.0"
     playwright "^1.14.0"
 
-"@storybook/test@8.3.1", "@storybook/test@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.1.tgz#53d391b47fd35a441a50e5e2088be87089a009aa"
-  integrity sha512-/ZZFZHr+jsO7oBrLFrrCkgkJrh1/AgHBqO8QR0zdTiR0NK0vo2l9v9FXat/VFhSaYTIpVU/NQdNKiPGTKIfAVw==
+"@storybook/test@8.3.5", "@storybook/test@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/test/-/test-8.3.5.tgz#0dffc9d4a1eaa9552e69457b16b5085e36883c8a"
+  integrity sha512-1BXWsUGWk9FiKKelZZ55FDJdeoL8uRBHbjTYBRM2xJLhdNSvGzI4Tb3bkmxPpGn72Ua6AyldhlTxr2BpUFKOHA==
   dependencies:
     "@storybook/csf" "^0.1.11"
     "@storybook/global" "^5.0.0"
-    "@storybook/instrumenter" "8.3.1"
+    "@storybook/instrumenter" "8.3.5"
     "@testing-library/dom" "10.4.0"
     "@testing-library/jest-dom" "6.5.0"
     "@testing-library/user-event" "14.5.2"
@@ -3602,79 +3292,79 @@
     "@vitest/spy" "2.0.5"
     util "^0.12.4"
 
-"@storybook/theming@^8.3.1":
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.1.tgz#762cf6dd337ccf05adf751d3e7560f8cdae21fd6"
-  integrity sha512-R6YZnIdN9P9gTauVkZfVmob0/i6/yaAQxnwfMgRLCaFD0TFQ+UQ2pCz40zPAUp3BcNPwMD168GVxmheBb8cGag==
-
-"@swc/core-darwin-arm64@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.2.tgz#102d4a546b4e78b6ea3ca9006f4377e2c8615f61"
-  integrity sha512-Zb8KiGaESzOgh5HBnp6Vhs2fRpngHIT81JOfIo0oaGlzAckamnG7UAXC/yK6cQ8q2KXc78utJ/yq/NM2yVKLqw==
-
-"@swc/core-darwin-x64@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.2.tgz#12e4d2f9f41e0592ab622585de2a106ec13b539e"
-  integrity sha512-qb0HY9GEexpPm46Hb3OY7E6xb4r+eniiThm+0Gcnhf19EZV2ZlsCC8Rdbhmav33x++ZqSDzZ44fxMY2vnN5VDg==
-
-"@swc/core-linux-arm-gnueabihf@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.2.tgz#cd02959f7e1c39ed1fc2ce38ded0127b2aba9fc9"
-  integrity sha512-x2+MOK3RzH3yEkaukKtpDW/udM1x9GoYtXaLNqlq6ovAzZPQ9FDFI0pm1asL4akHUw3s7YTh1aUY7QscstJAHQ==
-
-"@swc/core-linux-arm64-gnu@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.2.tgz#6feb78cfa0dedcb389c9c5cf6cc88bad9ecbef24"
-  integrity sha512-4J3HGEDus7a9xnrJUFGyJJgvj4w+BFGiZvs08xbw4Z1ZN4uHJQiJiDsQEAWWciKUxrOndP3SocUq/GhEGiDm0g==
-
-"@swc/core-linux-arm64-musl@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.2.tgz#63071726eb6ab55952323842899314bc4043302a"
-  integrity sha512-4FhQmYbj8SCmir4pHRLSn8IIFmRKHTL3eZFtOpm26RLME7rXL7Yt33DpzIeTRoHFIesI5NEfaR38WU5mY7P1pA==
-
-"@swc/core-linux-x64-gnu@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.2.tgz#17b49cf337d6e68112812c746541f957fe55e4ad"
-  integrity sha512-Loz10Hy6z5mBIAOe6OInOVsYu+PVxyknCB3thtr7QH+uqEz6dcXhU2ERrO2Lf4dsTsFs/Wb80rv8zTSwB8dpsw==
-
-"@swc/core-linux-x64-musl@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.2.tgz#ccbac5e7aa1d54d4ebb6c0bcbfcb4a3b4c08ac73"
-  integrity sha512-8p8qNWaLcTa+qHX4NSv1KNm8BQ6zPoLXuOBo9DtOEqc+K60IISGKPCAS7TJlCcv0q20JnmxZ/cEWW5Qo4TR4XQ==
-
-"@swc/core-win32-arm64-msvc@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.2.tgz#73a2684072c4da25a599ef24d49f4f423806c493"
-  integrity sha512-eNWAYOalBlFrhv/IVSQ1dxu7qIGuhxlUJZTYa8jsgLnKt93vAFd2cjLtKZ85k1OibBnq9PkKQyo4NKVr4hBavw==
-
-"@swc/core-win32-ia32-msvc@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.2.tgz#9134e55e34b70416377d79941e45537257163633"
-  integrity sha512-BbpaCPCnbQHCzpQ9yDH3qp1Y5Ijd0NSMNk4qqESN2WWx0ojV2uBTjPou5NC2MZxk8fM3iJpJ05enf+IeaXuh6A==
-
-"@swc/core-win32-x64-msvc@1.7.2":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.2.tgz#232d1944cf1573d1e8821ab15a9229de28ca42a8"
-  integrity sha512-21mf4Jg9Arx0lUnmRQtYd8IQB4WkY4LHJrvcz3EmKbwCTCXI5rQ6Ifnjk7EmG3Tizv0giHqQBQLu5NXWBz45Mg==
+"@storybook/theming@^8.3.5":
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/@storybook/theming/-/theming-8.3.5.tgz#c6b807193099a8f9d1afb5d71a59037c0ef54e85"
+  integrity sha512-9HmDDyC691oqfg4RziIM9ElsS2HITaxmH7n/yeUPtuirkPdAQzqOzhvH/Sa0qOhifzs8VjR+Gd/a/ZQ+S38r7w==
+
+"@swc/core-darwin-arm64@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.35.tgz#695fe6cff7b429513f0e942f242156ab1f69bc7b"
+  integrity sha512-BQSSozVxjxS+SVQz6e3GC/+OBWGIK3jfe52pWdANmycdjF3ch7lrCKTHTU7eHwyoJ96mofszPf5AsiVJF34Fwg==
+
+"@swc/core-darwin-x64@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.35.tgz#c15c0fb11fb44e748d86d949911a6e416c7d36c9"
+  integrity sha512-44TYdKN/EWtkU88foXR7IGki9JzhEJzaFOoPevfi9Xe7hjAD/x2+AJOWWqQNzDPMz9+QewLdUVLyR6s5okRgtg==
+
+"@swc/core-linux-arm-gnueabihf@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.35.tgz#e40a31cbbef31b4ec0fa294eae4c51bf28f1622b"
+  integrity sha512-ccfA5h3zxwioD+/z/AmYtkwtKz9m4rWTV7RoHq6Jfsb0cXHrd6tbcvgqRWXra1kASlE+cDWsMtEZygs9dJRtUQ==
+
+"@swc/core-linux-arm64-gnu@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.35.tgz#538d367d06d7f2cbee05b9e1357583574eb57601"
+  integrity sha512-hx65Qz+G4iG/IVtxJKewC5SJdki8PAPFGl6gC/57Jb0+jA4BIoGLD/J3Q3rCPeoHfdqpkCYpahtyUq8CKx41Jg==
+
+"@swc/core-linux-arm64-musl@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.35.tgz#752e6b74c10113e1759e418906f48138dfd01a9f"
+  integrity sha512-kL6tQL9No7UEoEvDRuPxzPTpxrvbwYteNRbdChSSP74j13/55G2/2hLmult5yFFaWuyoyU/2lvzjRL/i8OLZxg==
+
+"@swc/core-linux-x64-gnu@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.35.tgz#0cbade76e5abce7d13802d6c55dc0c21213f5d3d"
+  integrity sha512-Ke4rcLQSwCQ2LHdJX1FtnqmYNQ3IX6BddKlUtS7mcK13IHkQzZWp0Dcu6MgNA3twzb/dBpKX5GLy07XdGgfmyw==
+
+"@swc/core-linux-x64-musl@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.35.tgz#ac60b88972cdbd2856cbe7b5b5ef1a1f54d906f6"
+  integrity sha512-T30tlLnz0kYyDFyO5RQF5EQ4ENjW9+b56hEGgFUYmfhFhGA4E4V67iEx7KIG4u0whdPG7oy3qjyyIeTb7nElEw==
+
+"@swc/core-win32-arm64-msvc@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.35.tgz#366f3e8cc387c539579e91a4ccf8a2b9a0083889"
+  integrity sha512-CfM/k8mvtuMyX+okRhemfLt784PLS0KF7Q9djA8/Dtavk0L5Ghnq+XsGltO3d8B8+XZ7YOITsB14CrjehzeHsg==
+
+"@swc/core-win32-ia32-msvc@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.35.tgz#07fbda3ca8ac58f28cd441aa9ba082a3ea6d84fb"
+  integrity sha512-ATB3uuH8j/RmS64EXQZJSbo2WXfRNpTnQszHME/sGaexsuxeijrp3DTYSFAA3R2Bu6HbIIX6jempe1Au8I3j+A==
+
+"@swc/core-win32-x64-msvc@1.7.35":
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.35.tgz#043a54aaeb9b24f4f2405ac2cfa48891508ff1a6"
+  integrity sha512-iDGfQO1571NqWUXtLYDhwIELA/wadH42ioGn+J9R336nWx40YICzy9UQyslWRhqzhQ5kT+QXAW/MoCWc058N6Q==
 
 "@swc/core@^1.5.22":
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/@swc/core/-/core-1.7.2.tgz#03dd10d1f04476b025d70bce448691f8c4d0207a"
-  integrity sha512-mjIlT0e6ygKR8LZ1TjtNrDVMhnB8qpyYAdwexhuVHY255yDdDQCpuPGi20odwnE82QhFBSIWs4HcENDVO/yiMw==
+  version "1.7.35"
+  resolved "https://registry.npmjs.org/@swc/core/-/core-1.7.35.tgz#8a24041c8ef96477dd91aef9287d5fff79276e79"
+  integrity sha512-3cUteCTbr2r5jqfgx0r091sfq5Mgh6F1SQh8XAOnSvtKzwv2bC31mvBHVAieD1uPa2kHJhLav20DQgXOhpEitw==
   dependencies:
     "@swc/counter" "^0.1.3"
-    "@swc/types" "^0.1.12"
+    "@swc/types" "^0.1.13"
   optionalDependencies:
-    "@swc/core-darwin-arm64" "1.7.2"
-    "@swc/core-darwin-x64" "1.7.2"
-    "@swc/core-linux-arm-gnueabihf" "1.7.2"
-    "@swc/core-linux-arm64-gnu" "1.7.2"
-    "@swc/core-linux-arm64-musl" "1.7.2"
-    "@swc/core-linux-x64-gnu" "1.7.2"
-    "@swc/core-linux-x64-musl" "1.7.2"
-    "@swc/core-win32-arm64-msvc" "1.7.2"
-    "@swc/core-win32-ia32-msvc" "1.7.2"
-    "@swc/core-win32-x64-msvc" "1.7.2"
+    "@swc/core-darwin-arm64" "1.7.35"
+    "@swc/core-darwin-x64" "1.7.35"
+    "@swc/core-linux-arm-gnueabihf" "1.7.35"
+    "@swc/core-linux-arm64-gnu" "1.7.35"
+    "@swc/core-linux-arm64-musl" "1.7.35"
+    "@swc/core-linux-x64-gnu" "1.7.35"
+    "@swc/core-linux-x64-musl" "1.7.35"
+    "@swc/core-win32-arm64-msvc" "1.7.35"
+    "@swc/core-win32-ia32-msvc" "1.7.35"
+    "@swc/core-win32-x64-msvc" "1.7.35"
 
 "@swc/counter@^0.1.3":
   version "0.1.3"
@@ -3690,10 +3380,10 @@
     "@swc/counter" "^0.1.3"
     jsonc-parser "^3.2.0"
 
-"@swc/types@^0.1.12":
-  version "0.1.12"
-  resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.12.tgz#7f632c06ab4092ce0ebd046ed77ff7557442282f"
-  integrity sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==
+"@swc/types@^0.1.13":
+  version "0.1.13"
+  resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz#441734f8bfa6e9e738f1c68e98be6da282ecc7db"
+  integrity sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==
   dependencies:
     "@swc/counter" "^0.1.3"
 
@@ -3886,21 +3576,41 @@
   integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
 
 "@types/estree@^1.0.0", "@types/estree@^1.0.5":
-  version "1.0.5"
-  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
-  integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
+  version "1.0.6"
+  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
+  integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0":
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz#91f06cda1049e8f17eeab364798ed79c97488a1c"
+  integrity sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==
+  dependencies:
+    "@types/node" "*"
+    "@types/qs" "*"
+    "@types/range-parser" "*"
+    "@types/send" "*"
 
-"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33":
-  version "4.19.5"
-  resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6"
-  integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==
+"@types/express-serve-static-core@^4.17.33":
+  version "4.19.6"
+  resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267"
+  integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==
   dependencies:
     "@types/node" "*"
     "@types/qs" "*"
     "@types/range-parser" "*"
     "@types/send" "*"
 
-"@types/express@*", "@types/express@^4.17.21":
+"@types/express@*":
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/@types/express/-/express-5.0.0.tgz#13a7d1f75295e90d19ed6e74cab3678488eaa96c"
+  integrity sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==
+  dependencies:
+    "@types/body-parser" "*"
+    "@types/express-serve-static-core" "^5.0.0"
+    "@types/qs" "*"
+    "@types/serve-static" "*"
+
+"@types/express@^4.17.21":
   version "4.17.21"
   resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz#c26d4a151e60efe0084b23dc3369ebc631ed192d"
   integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
@@ -3948,9 +3658,9 @@
   integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
 
 "@types/http-proxy@^1.17.8":
-  version "1.17.14"
-  resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz#57f8ccaa1c1c3780644f8a94f9c6b5000b5e2eec"
-  integrity sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==
+  version "1.17.15"
+  resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36"
+  integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==
   dependencies:
     "@types/node" "*"
 
@@ -4006,9 +3716,9 @@
   integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==
 
 "@types/lodash@^4.14.156", "@types/lodash@^4.14.167":
-  version "4.17.7"
-  resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz#2f776bcb53adc9e13b2c0dfd493dfcbd7de43612"
-  integrity sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==
+  version "4.17.10"
+  resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz#64f3edf656af2fe59e7278b73d3e62404144a6e6"
+  integrity sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==
 
 "@types/mapbox__point-geometry@*", "@types/mapbox__point-geometry@^0.1.4":
   version "0.1.4"
@@ -4039,11 +3749,6 @@
   resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e"
   integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==
 
-"@types/mousetrap@^1.6.5":
-  version "1.6.15"
-  resolved "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.15.tgz#f144a0c539a4cef553a631824651d48267e53c86"
-  integrity sha512-qL0hyIMNPow317QWW/63RvL1x5MVMV+Ru3NaY9f/CuEpCqrmb7WeuK2071ZY5hczOnm38qExWM2i2WtkXLSqFw==
-
 "@types/mute-stream@^0.0.4":
   version "0.0.4"
   resolved "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478"
@@ -4058,31 +3763,17 @@
   dependencies:
     "@types/node" "*"
 
-"@types/node@*":
-  version "22.5.1"
-  resolved "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz#de01dce265f6b99ed32b295962045d10b5b99560"
-  integrity sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==
-  dependencies:
-    undici-types "~6.19.2"
-
-"@types/node@^20.14.11":
-  version "20.14.12"
-  resolved "https://registry.npmjs.org/@types/node/-/node-20.14.12.tgz#129d7c3a822cb49fc7ff661235f19cfefd422b49"
-  integrity sha512-r7wNXakLeSsGT0H1AU863vS2wa5wBOK4bWMjZz2wj+8nBx+m5PeIn0k8AloSLpRuiwdRQZwarZqHE4FNArPuJQ==
-  dependencies:
-    undici-types "~5.26.4"
-
-"@types/node@^20.16.5":
-  version "20.16.5"
-  resolved "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz#d43c7f973b32ffdf9aa7bd4f80e1072310fd7a53"
-  integrity sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==
+"@types/node@*", "@types/node@^22.0.0", "@types/node@^22.5.5":
+  version "22.7.5"
+  resolved "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b"
+  integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==
   dependencies:
     undici-types "~6.19.2"
 
-"@types/node@^22.0.0":
-  version "22.5.5"
-  resolved "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz#52f939dd0f65fc552a4ad0b392f3c466cc5d7a44"
-  integrity sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==
+"@types/node@^20.16.11":
+  version "20.16.11"
+  resolved "https://registry.npmjs.org/@types/node/-/node-20.16.11.tgz#9b544c3e716b1577ac12e70f9145193f32750b33"
+  integrity sha512-y+cTCACu92FyA5fgQSAI8A1H429g7aSK2HsO7K4XYUWc4dY5IUz55JSDIYT6/VsOLfGy8vmvQYC2hfb0iF16Uw==
   dependencies:
     undici-types "~6.19.2"
 
@@ -4102,14 +3793,14 @@
   integrity sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==
 
 "@types/prop-types@*":
-  version "15.7.12"
-  resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6"
-  integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+  version "15.7.13"
+  resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
+  integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
 
 "@types/qs@*":
-  version "6.9.15"
-  resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz#adde8a060ec9c305a82de1babc1056e73bd64dce"
-  integrity sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==
+  version "6.9.16"
+  resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz#52bba125a07c0482d26747d5d4947a64daf8f794"
+  integrity sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==
 
 "@types/raf@^3.4.0":
   version "3.4.3"
@@ -4128,10 +3819,10 @@
   dependencies:
     "@types/react" "^17"
 
-"@types/react@*", "@types/react@^16.14.61", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.38", "@types/react@^17":
-  version "16.14.61"
-  resolved "https://registry.npmjs.org/@types/react/-/react-16.14.61.tgz#ce498029a046d17908001e6e563f3febbaf41e7f"
-  integrity sha512-CK3zd17pDWAEMnN5TdzwQJQlto2dK/lb0WZsI74owWgQ8PR60WRk0sCeBxLWuSuuqqDZKqeUcxod/8yECqrP/g==
+"@types/react@*", "@types/react@^16.14.62", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.38", "@types/react@^17":
+  version "16.14.62"
+  resolved "https://registry.npmjs.org/@types/react/-/react-16.14.62.tgz#449e4e81caaf132d0c2c390644e577702db1dd9e"
+  integrity sha512-BWf7hqninZav6nerxXj+NeZT/mTpDeG6Lk2zREHAy63CrnXoOGPGtNqTFYFN/sqpSaREDP5otVV88axIXmKfGA==
   dependencies:
     "@types/prop-types" "*"
     "@types/scheduler" "^0.16"
@@ -4225,9 +3916,9 @@
   integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==
 
 "@types/unist@*", "@types/unist@^3.0.0":
-  version "3.0.2"
-  resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20"
-  integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==
+  version "3.0.3"
+  resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c"
+  integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==
 
 "@types/use-sync-external-store@^0.0.3":
   version "0.0.3"
@@ -4252,9 +3943,9 @@
   integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==
 
 "@types/ws@^8.5.10":
-  version "8.5.11"
-  resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz#90ad17b3df7719ce3e6bc32f83ff954d38656508"
-  integrity sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==
+  version "8.5.12"
+  resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e"
+  integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==
   dependencies:
     "@types/node" "*"
 
@@ -4264,9 +3955,9 @@
   integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==
 
 "@types/yargs@^17.0.8":
-  version "17.0.32"
-  resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz#030774723a2f7faafebf645f4e5a48371dca6229"
-  integrity sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==
+  version "17.0.33"
+  resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
+  integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
   dependencies:
     "@types/yargs-parser" "*"
 
@@ -4314,13 +4005,13 @@
     "@typescript-eslint/types" "6.21.0"
     "@typescript-eslint/visitor-keys" "6.21.0"
 
-"@typescript-eslint/scope-manager@8.2.0":
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz#4a4bd7e7df5522acc8795c3b6f21e8c41b951138"
-  integrity sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==
+"@typescript-eslint/scope-manager@8.9.0":
+  version "8.9.0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.9.0.tgz#c98fef0c4a82a484e6a1eb610a55b154d14d46f3"
+  integrity sha512-bZu9bUud9ym1cabmOYH9S6TnbWRzpklVmwqICeOulTCZ9ue2/pczWzQvt/cGj2r2o1RdKoZbuEMalJJSYw3pHQ==
   dependencies:
-    "@typescript-eslint/types" "8.2.0"
-    "@typescript-eslint/visitor-keys" "8.2.0"
+    "@typescript-eslint/types" "8.9.0"
+    "@typescript-eslint/visitor-keys" "8.9.0"
 
 "@typescript-eslint/type-utils@6.21.0":
   version "6.21.0"
@@ -4342,10 +4033,10 @@
   resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz#205724c5123a8fef7ecd195075fa6e85bac3436d"
   integrity sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==
 
-"@typescript-eslint/types@8.2.0":
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz#dfe9895a2812f7c6bf7af863054c22a67060420c"
-  integrity sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==
+"@typescript-eslint/types@8.9.0":
+  version "8.9.0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.9.0.tgz#b733af07fb340b32e962c6c63b1062aec2dc0fe6"
+  integrity sha512-SjgkvdYyt1FAPhU9c6FiYCXrldwYYlIQLkuc+LfAhCna6ggp96ACncdtlbn8FmnG72tUkXclrDExOpEYf1nfJQ==
 
 "@typescript-eslint/typescript-estree@5.62.0":
   version "5.62.0"
@@ -4374,15 +4065,15 @@
     semver "^7.5.4"
     ts-api-utils "^1.0.1"
 
-"@typescript-eslint/typescript-estree@8.2.0":
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz#fbdb93a1c7ac7f1f96ae2de4fc97cd64c60ae894"
-  integrity sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==
+"@typescript-eslint/typescript-estree@8.9.0":
+  version "8.9.0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.9.0.tgz#1714f167e9063062dc0df49c1d25afcbc7a96199"
+  integrity sha512-9iJYTgKLDG6+iqegehc5+EqE6sqaee7kb8vWpmHZ86EqwDjmlqNNHeqDVqb9duh+BY6WCNHfIGvuVU3Tf9Db0g==
   dependencies:
-    "@typescript-eslint/types" "8.2.0"
-    "@typescript-eslint/visitor-keys" "8.2.0"
+    "@typescript-eslint/types" "8.9.0"
+    "@typescript-eslint/visitor-keys" "8.9.0"
     debug "^4.3.4"
-    globby "^11.1.0"
+    fast-glob "^3.3.2"
     is-glob "^4.0.3"
     minimatch "^9.0.4"
     semver "^7.6.0"
@@ -4416,14 +4107,14 @@
     semver "^7.3.7"
 
 "@typescript-eslint/utils@^6.0.0 || ^7.0.0 || ^8.0.0":
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.2.0.tgz#02d442285925f28d520587185f295f932702e733"
-  integrity sha512-O46eaYKDlV3TvAVDNcoDzd5N550ckSe8G4phko++OCSC1dYIb9LTc3HDGYdWqWIAT5qDUKphO6sd9RrpIJJPfg==
+  version "8.9.0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.9.0.tgz#748bbe3ea5bee526d9786d9405cf1b0df081c299"
+  integrity sha512-PKgMmaSo/Yg/F7kIZvrgrWa1+Vwn036CdNUvYFEkYbPwOH4i8xvkaRlu148W3vtheWK9ckKRIz7PBP5oUlkrvQ==
   dependencies:
     "@eslint-community/eslint-utils" "^4.4.0"
-    "@typescript-eslint/scope-manager" "8.2.0"
-    "@typescript-eslint/types" "8.2.0"
-    "@typescript-eslint/typescript-estree" "8.2.0"
+    "@typescript-eslint/scope-manager" "8.9.0"
+    "@typescript-eslint/types" "8.9.0"
+    "@typescript-eslint/typescript-estree" "8.9.0"
 
 "@typescript-eslint/visitor-keys@5.62.0":
   version "5.62.0"
@@ -4441,12 +4132,12 @@
     "@typescript-eslint/types" "6.21.0"
     eslint-visitor-keys "^3.4.1"
 
-"@typescript-eslint/visitor-keys@8.2.0":
-  version "8.2.0"
-  resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz#f6abb3b6508898a117175ddc11f9b9869cc96834"
-  integrity sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==
+"@typescript-eslint/visitor-keys@8.9.0":
+  version "8.9.0"
+  resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.9.0.tgz#5f11f4d9db913f37da42776893ffe0dd1ae78f78"
+  integrity sha512-Ht4y38ubk4L5/U8xKUBfKNYGmvKvA1CANoxiTRMM+tOLk3lbF3DvzZCxJCRSE+2GdCMSh6zq9VZJc3asc1XuAA==
   dependencies:
-    "@typescript-eslint/types" "8.2.0"
+    "@typescript-eslint/types" "8.9.0"
     eslint-visitor-keys "^3.4.3"
 
 "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0":
@@ -4471,10 +4162,10 @@
   dependencies:
     tinyrainbow "^1.2.0"
 
-"@vitest/pretty-format@2.1.1":
-  version "2.1.1"
-  resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.1.tgz#fea25dd4e88c3c1329fbccd1d16b1d607eb40067"
-  integrity sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==
+"@vitest/pretty-format@2.1.3":
+  version "2.1.3"
+  resolved "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.3.tgz#48b9b03de75507d1d493df7beb48dc39a1946a3e"
+  integrity sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==
   dependencies:
     tinyrainbow "^1.2.0"
 
@@ -4496,11 +4187,11 @@
     tinyrainbow "^1.2.0"
 
 "@vitest/utils@^2.0.5":
-  version "2.1.1"
-  resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.1.tgz#284d016449ecb4f8704d198d049fde8360cc136e"
-  integrity sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==
+  version "2.1.3"
+  resolved "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.3.tgz#e52aa5745384091b151cbdf79bb5a3ad2bea88d2"
+  integrity sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==
   dependencies:
-    "@vitest/pretty-format" "2.1.1"
+    "@vitest/pretty-format" "2.1.3"
     loupe "^3.1.1"
     tinyrainbow "^1.2.0"
 
@@ -4640,7 +4331,7 @@
   resolved "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e"
   integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==
 
-"@xmldom/xmldom@^0.8.4":
+"@xmldom/xmldom@^0.8.10":
   version "0.8.10"
   resolved "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
   integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==
@@ -4669,9 +4360,9 @@ accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
     negotiator "0.6.3"
 
 ace-builds@^1.17.0:
-  version "1.35.4"
-  resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.35.4.tgz#f41d7ef57c3a7d424cd7e3300bef0cbef905c84f"
-  integrity sha512-r0KQclhZ/uk5a4zOqRYQkJuQuu4vFMiA6VTj54Tk4nI1TUR3iEMMppZkWbNoWEgWwv4ciDloObb9Rf4V55Qgjw==
+  version "1.36.2"
+  resolved "https://registry.npmjs.org/ace-builds/-/ace-builds-1.36.2.tgz#9499bd59e839a335ac4850e74549ca8d849dc554"
+  integrity sha512-eqqfbGwx/GKjM/EnFu4QtQ+d2NNBu84MGgxoG8R5iyFpcVeQ4p9YlTL+ZzdEJqhdkASqoqOxCSNNGyB6lvMm+A==
 
 acorn-globals@^7.0.0:
   version "7.0.1"
@@ -4697,9 +4388,9 @@ acorn-walk@^7.2.0:
   integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
 
 acorn-walk@^8.0.2, acorn-walk@^8.1.1:
-  version "8.3.3"
-  resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz#9caeac29eefaa0c41e3d4c65137de4d6f34df43e"
-  integrity sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==
+  version "8.3.4"
+  resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7"
+  integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==
   dependencies:
     acorn "^8.11.0"
 
@@ -4857,13 +4548,18 @@ aria-query@5.1.3, aria-query@~5.1.3:
   dependencies:
     deep-equal "^2.0.5"
 
-aria-query@5.3.0, aria-query@^5.0.0:
+aria-query@5.3.0:
   version "5.3.0"
   resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e"
   integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
   dependencies:
     dequal "^2.0.3"
 
+aria-query@^5.0.0:
+  version "5.3.2"
+  resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59"
+  integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==
+
 arr-union@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
@@ -5024,26 +4720,12 @@ available-typed-arrays@^1.0.7:
   dependencies:
     possible-typed-array-names "^1.0.0"
 
-axe-core@^4.10.0:
+axe-core@^4.10.0, axe-core@^4.2.0:
   version "4.10.0"
   resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz#d9e56ab0147278272739a000880196cdfe113b59"
   integrity sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==
 
-axe-core@^4.2.0:
-  version "4.9.1"
-  resolved "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae"
-  integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==
-
-axios@^1.6.1:
-  version "1.7.4"
-  resolved "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz#4c8ded1b43683c8dd362973c393f3ede24052aa2"
-  integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
-  dependencies:
-    follow-redirects "^1.15.6"
-    form-data "^4.0.0"
-    proxy-from-env "^1.1.0"
-
-axios@^1.7.7:
+axios@^1.6.1, axios@^1.7.7:
   version "1.7.7"
   resolved "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
   integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
@@ -5093,9 +4775,9 @@ babel-loader@^8.4.1:
     schema-utils "^2.6.5"
 
 babel-loader@^9.1.3:
-  version "9.1.3"
-  resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a"
-  integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==
+  version "9.2.1"
+  resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b"
+  integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==
   dependencies:
     find-cache-dir "^4.0.0"
     schema-utils "^4.0.0"
@@ -5130,14 +4812,6 @@ babel-plugin-polyfill-corejs2@^0.4.10:
     "@babel/helper-define-polyfill-provider" "^0.6.2"
     semver "^6.3.1"
 
-babel-plugin-polyfill-corejs3@^0.10.4:
-  version "0.10.4"
-  resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77"
-  integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==
-  dependencies:
-    "@babel/helper-define-polyfill-provider" "^0.6.1"
-    core-js-compat "^3.36.1"
-
 babel-plugin-polyfill-corejs3@^0.10.6:
   version "0.10.6"
   resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7"
@@ -5165,22 +4839,25 @@ babel-plugin-polyfill-regenerator@^0.6.1:
     picomatch "^2.3.1"
 
 babel-preset-current-node-syntax@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
-  integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30"
+  integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==
   dependencies:
     "@babel/plugin-syntax-async-generators" "^7.8.4"
     "@babel/plugin-syntax-bigint" "^7.8.3"
-    "@babel/plugin-syntax-class-properties" "^7.8.3"
-    "@babel/plugin-syntax-import-meta" "^7.8.3"
+    "@babel/plugin-syntax-class-properties" "^7.12.13"
+    "@babel/plugin-syntax-class-static-block" "^7.14.5"
+    "@babel/plugin-syntax-import-attributes" "^7.24.7"
+    "@babel/plugin-syntax-import-meta" "^7.10.4"
     "@babel/plugin-syntax-json-strings" "^7.8.3"
-    "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
+    "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
     "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-    "@babel/plugin-syntax-numeric-separator" "^7.8.3"
+    "@babel/plugin-syntax-numeric-separator" "^7.10.4"
     "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
     "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
     "@babel/plugin-syntax-optional-chaining" "^7.8.3"
-    "@babel/plugin-syntax-top-level-await" "^7.8.3"
+    "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
+    "@babel/plugin-syntax-top-level-await" "^7.14.5"
 
 babel-preset-jest@^29.6.3:
   version "29.6.3"
@@ -5237,10 +4914,10 @@ binary-extensions@^2.0.0:
   resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522"
   integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
 
-body-parser@1.20.2:
-  version "1.20.2"
-  resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
-  integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+body-parser@1.20.3:
+  version "1.20.3"
+  resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
+  integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
   dependencies:
     bytes "3.1.2"
     content-type "~1.0.5"
@@ -5250,7 +4927,7 @@ body-parser@1.20.2:
     http-errors "2.0.0"
     iconv-lite "0.4.24"
     on-finished "2.4.1"
-    qs "6.11.0"
+    qs "6.13.0"
     raw-body "2.5.2"
     type-is "~1.6.18"
     unpipe "1.0.0"
@@ -5310,26 +4987,16 @@ browser-assert@^1.2.1:
   resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200"
   integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==
 
-browserslist@^4.21.10, browserslist@^4.23.3:
-  version "4.23.3"
-  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
-  integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
+browserslist@^4.21.10, browserslist@^4.23.3, browserslist@^4.24.0:
+  version "4.24.0"
+  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4"
+  integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
   dependencies:
-    caniuse-lite "^1.0.30001646"
-    electron-to-chromium "^1.5.4"
+    caniuse-lite "^1.0.30001663"
+    electron-to-chromium "^1.5.28"
     node-releases "^2.0.18"
     update-browserslist-db "^1.1.0"
 
-browserslist@^4.23.0, browserslist@^4.23.1:
-  version "4.23.2"
-  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz#244fe803641f1c19c28c48c4b6ec9736eb3d32ed"
-  integrity sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==
-  dependencies:
-    caniuse-lite "^1.0.30001640"
-    electron-to-chromium "^1.4.820"
-    node-releases "^2.0.14"
-    update-browserslist-db "^1.1.0"
-
 bser@2.1.1:
   version "2.1.1"
   resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
@@ -5447,10 +5114,10 @@ camelize@^1.0.0:
   resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3"
   integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==
 
-caniuse-lite@^1.0.30001640, caniuse-lite@^1.0.30001646:
-  version "1.0.30001653"
-  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz#b8af452f8f33b1c77f122780a4aecebea0caca56"
-  integrity sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==
+caniuse-lite@^1.0.30001663:
+  version "1.0.30001668"
+  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz#98e214455329f54bf7a4d70b49c9794f0fbedbed"
+  integrity sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==
 
 canvg@^3.0.6:
   version "3.0.10"
@@ -5527,7 +5194,7 @@ check-error@^2.1.1:
   resolved "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc"
   integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==
 
-"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.3, chokidar@^3.6.0:
+chokidar@^3.5.3, chokidar@^3.6.0:
   version "3.6.0"
   resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
   integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@@ -5542,10 +5209,17 @@ check-error@^2.1.1:
   optionalDependencies:
     fsevents "~2.3.2"
 
+chokidar@^4.0.0:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz#4a6dff66798fb0f72a94f616abbd7e1a19f31d41"
+  integrity sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==
+  dependencies:
+    readdirp "^4.0.1"
+
 chroma-js@^2.0.0:
-  version "2.4.2"
-  resolved "https://registry.npmjs.org/chroma-js/-/chroma-js-2.4.2.tgz#dffc214ed0c11fa8eefca2c36651d8e57cbfb2b0"
-  integrity sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==
+  version "2.6.0"
+  resolved "https://registry.npmjs.org/chroma-js/-/chroma-js-2.6.0.tgz#578743dd359698a75067a19fa5571dec54d0b70b"
+  integrity sha512-BLHvCB9s8Z1EV4ethr6xnkl/P2YRFOGqfgvuMG/MyCbZPrTA+NeiByY6XvgF0zP4/2deU2CXnWyMa3zu1LqQ3A==
 
 chrome-trace-event@^1.0.2:
   version "1.0.4"
@@ -5558,9 +5232,9 @@ ci-info@^3.2.0:
   integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
 
 cjs-module-lexer@^1.0.0, cjs-module-lexer@^1.2.3:
-  version "1.3.1"
-  resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz#c485341ae8fd999ca4ee5af2d7a1c9ae01e0099c"
-  integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==
+  version "1.4.1"
+  resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz#707413784dbb3a72aa11c2f2b042a0bef4004170"
+  integrity sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==
 
 classnames@^2.5.1:
   version "2.5.1"
@@ -5579,11 +5253,6 @@ clean-stack@^2.0.0:
   resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
   integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
 
-cli-spinners@^2.9.2:
-  version "2.9.2"
-  resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
-  integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
-
 cli-width@^4.1.0:
   version "4.1.0"
   resolved "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5"
@@ -5799,24 +5468,17 @@ cookie-signature@1.0.6:
   resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
   integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
 
-cookie@0.6.0:
-  version "0.6.0"
-  resolved "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
-  integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+cookie@0.7.1:
+  version "0.7.1"
+  resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
+  integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
 
 cookie@^0.5.0:
   version "0.5.0"
   resolved "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
   integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
 
-core-js-compat@^3.36.1, core-js-compat@^3.37.1:
-  version "3.37.1"
-  resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee"
-  integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==
-  dependencies:
-    browserslist "^4.23.0"
-
-core-js-compat@^3.38.0:
+core-js-compat@^3.38.0, core-js-compat@^3.38.1:
   version "3.38.1"
   resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09"
   integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==
@@ -5824,9 +5486,9 @@ core-js-compat@^3.38.0:
     browserslist "^4.23.3"
 
 core-js@^3.6.0, core-js@^3.8.3:
-  version "3.37.1"
-  resolved "https://registry.npmjs.org/core-js/-/core-js-3.37.1.tgz#d21751ddb756518ac5a00e4d66499df981a62db9"
-  integrity sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==
+  version "3.38.1"
+  resolved "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz#aa375b79a286a670388a1a363363d53677c0383e"
+  integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==
 
 core-util-is@~1.0.0:
   version "1.0.3"
@@ -5899,9 +5561,9 @@ css-color-keywords@^1.0.0:
   integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==
 
 css-functions-list@^3.1.0:
-  version "3.2.2"
-  resolved "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz#9a54c6dd8416ed25c1079cd88234e927526c1922"
-  integrity sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==
+  version "3.2.3"
+  resolved "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz#95652b0c24f0f59b291a9fc386041a19d4f40dbe"
+  integrity sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==
 
 css-line-break@^2.1.0:
   version "2.1.0"
@@ -5995,6 +5657,11 @@ csstype@^3.0.2:
   resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
   integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
 
+ctrl-keys@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/ctrl-keys/-/ctrl-keys-1.0.3.tgz#e039c6691d2add598ca1029fada0fd004f6c1ecb"
+  integrity sha512-Kcb05/xUNra57fxpsLOflECWYbjQEQ9ZuQEthB3cgESN5zMLJ364twA9h2kqz8n06RnTY/+rKWM3UbkOWKeEJg==
+
 cwd@^0.10.0:
   version "0.10.0"
   resolved "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz#172400694057c22a13b0cf16162c7e4b7a7fe567"
@@ -6003,13 +5670,20 @@ cwd@^0.10.0:
     find-pkg "^0.1.2"
     fs-exists-sync "^0.1.0"
 
-d3-array@2, d3-array@^2.12.1, d3-array@^2.3.0:
+d3-array@2, d3-array@^2.3.0:
   version "2.12.1"
   resolved "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81"
   integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==
   dependencies:
     internmap "^1.0.0"
 
+d3-array@^3.2.4:
+  version "3.2.4"
+  resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5"
+  integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
+  dependencies:
+    internmap "1 - 2"
+
 d3-axis@^2.1.0:
   version "2.1.0"
   resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-2.1.0.tgz#978db534092711117d032fad5d733d206307f6a0"
@@ -6031,12 +5705,7 @@ d3-collection@^1.0.7:
   resolved "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz#349bd2aa9977db071091c13144d5e4f16b5b310e"
   integrity sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==
 
-"d3-color@1 - 2":
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz#8d625cab42ed9b8f601a1760a389f7ea9189d62e"
-  integrity sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==
-
-"d3-color@1 - 3":
+"d3-color@1 - 2", "d3-color@1 - 3", d3-color@^3.1.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2"
   integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==
@@ -6064,19 +5733,7 @@ d3-drag@2, d3-drag@^2.0.0:
   resolved "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz#a10bcc0f986c372b729ba447382413aabf5b0767"
   integrity sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==
 
-d3-format@^3.0.1:
-  version "3.1.0"
-  resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641"
-  integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==
-
-"d3-interpolate@1 - 2", "d3-interpolate@1.2.0 - 2":
-  version "2.0.1"
-  resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz#98be499cfb8a3b94d4ff616900501a64abc91163"
-  integrity sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==
-  dependencies:
-    d3-color "1 - 2"
-
-d3-interpolate@^3.0.1:
+"d3-interpolate@1 - 2", "d3-interpolate@1.2.0 - 2", d3-interpolate@^3.0.1:
   version "3.0.1"
   resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d"
   integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==
@@ -6177,12 +5834,12 @@ debug@2.6.9:
   dependencies:
     ms "2.0.0"
 
-debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
-  version "4.3.5"
-  resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
-  integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.5:
+  version "4.3.7"
+  resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
+  integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
   dependencies:
-    ms "2.1.2"
+    ms "^2.1.3"
 
 debug@^3.1.0, debug@^3.2.7:
   version "3.2.7"
@@ -6191,13 +5848,6 @@ debug@^3.1.0, debug@^3.2.7:
   dependencies:
     ms "^2.1.1"
 
-debug@^4.3.5:
-  version "4.3.7"
-  resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
-  integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
-  dependencies:
-    ms "^2.1.3"
-
 decamelize-keys@^1.1.0:
   version "1.1.1"
   resolved "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8"
@@ -6367,6 +6017,11 @@ destroy@1.2.0:
   resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
   integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
 
+detect-libc@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
+  integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==
+
 detect-newline@^3.0.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
@@ -6492,10 +6147,10 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
   dependencies:
     domelementtype "^2.2.0"
 
-dompurify@^2.2.0:
-  version "2.5.6"
-  resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz#8402b501611eaa7fb3786072297fcbe2787f8592"
-  integrity sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==
+dompurify@^2.5.4:
+  version "2.5.7"
+  resolved "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz#6e0d36b9177db5a99f18ade1f28579db5ab839d7"
+  integrity sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==
 
 domutils@^1.5.1:
   version "1.7.0"
@@ -6532,12 +6187,12 @@ ee-first@1.1.1:
   resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
   integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
 
-electron-to-chromium@^1.4.820, electron-to-chromium@^1.5.4:
-  version "1.5.13"
-  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6"
-  integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==
+electron-to-chromium@^1.5.28:
+  version "1.5.38"
+  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz#c6a14e1506717c5a46d439580d7424d8d5860180"
+  integrity sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==
 
-element-resize-detector@^1.1.14:
+element-resize-detector@^1.2.4:
   version "1.2.4"
   resolved "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz#3e6c5982dd77508b5fa7e6d5c02170e26325c9b1"
   integrity sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==
@@ -6569,6 +6224,11 @@ encodeurl@~1.0.2:
   resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
   integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
 
+encodeurl@~2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+  integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
 endent@^2.0.1:
   version "2.1.0"
   resolved "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz#5aaba698fb569e5e18e69e1ff7a28ff35373cd88"
@@ -6596,7 +6256,7 @@ entities@^2.0.0:
   resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
   integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
 
-entities@^4.4.0:
+entities@^4.5.0:
   version "4.5.0"
   resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
   integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
@@ -6607,9 +6267,9 @@ entities@~2.0:
   integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==
 
 envinfo@^7.7.3:
-  version "7.13.0"
-  resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31"
-  integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==
+  version "7.14.0"
+  resolved "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae"
+  integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==
 
 err-code@^2.0.2:
   version "2.0.3"
@@ -6710,9 +6370,9 @@ es-get-iterator@^1.1.3:
     stop-iteration-iterator "^1.0.0"
 
 es-iterator-helpers@^1.0.19:
-  version "1.0.19"
-  resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8"
-  integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz#f6d745d342aea214fe09497e7152170dc333a7a6"
+  integrity sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==
   dependencies:
     call-bind "^1.0.7"
     define-properties "^1.2.1"
@@ -6721,12 +6381,12 @@ es-iterator-helpers@^1.0.19:
     es-set-tostringtag "^2.0.3"
     function-bind "^1.1.2"
     get-intrinsic "^1.2.4"
-    globalthis "^1.0.3"
+    globalthis "^1.0.4"
     has-property-descriptors "^1.0.2"
     has-proto "^1.0.3"
     has-symbols "^1.0.3"
     internal-slot "^1.0.7"
-    iterator.prototype "^1.1.2"
+    iterator.prototype "^1.1.3"
     safe-array-concat "^1.1.2"
 
 es-module-lexer@^1.2.1, es-module-lexer@^1.5.0:
@@ -6836,10 +6496,10 @@ esbuild@^0.17.18:
     "@esbuild/win32-ia32" "0.23.1"
     "@esbuild/win32-x64" "0.23.1"
 
-escalade@^3.1.1, escalade@^3.1.2:
-  version "3.1.2"
-  resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
-  integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+escalade@^3.1.1, escalade@^3.2.0:
+  version "3.2.0"
+  resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
+  integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
 
 escape-html@~1.0.3:
   version "1.0.3"
@@ -6918,17 +6578,17 @@ eslint-import-resolver-typescript@^3.6.3:
     is-bun-module "^1.0.2"
     is-glob "^4.0.3"
 
-eslint-module-utils@^2.8.1, eslint-module-utils@^2.9.0:
-  version "2.11.0"
-  resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz#b99b211ca4318243f09661fae088f373ad5243c4"
-  integrity sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==
+eslint-module-utils@^2.12.0, eslint-module-utils@^2.8.1:
+  version "2.12.0"
+  resolved "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b"
+  integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==
   dependencies:
     debug "^3.2.7"
 
-eslint-plugin-import@^2.30.0:
-  version "2.30.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz#21ceea0fc462657195989dd780e50c92fe95f449"
-  integrity sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==
+eslint-plugin-import@^2.31.0:
+  version "2.31.0"
+  resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7"
+  integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==
   dependencies:
     "@rtsao/scc" "^1.1.0"
     array-includes "^3.1.8"
@@ -6938,7 +6598,7 @@ eslint-plugin-import@^2.30.0:
     debug "^3.2.7"
     doctrine "^2.1.0"
     eslint-import-resolver-node "^0.3.9"
-    eslint-module-utils "^2.9.0"
+    eslint-module-utils "^2.12.0"
     hasown "^2.0.2"
     is-core-module "^2.15.1"
     is-glob "^4.0.3"
@@ -6947,6 +6607,7 @@ eslint-plugin-import@^2.30.0:
     object.groupby "^1.0.3"
     object.values "^1.2.0"
     semver "^6.3.1"
+    string.prototype.trimend "^1.0.8"
     tsconfig-paths "^3.15.0"
 
 eslint-plugin-jest@^28.8.3:
@@ -6990,10 +6651,10 @@ eslint-plugin-react-hooks@^4.6.2:
   resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz#c829eb06c0e6f484b3fbb85a97e57784f328c596"
   integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
 
-eslint-plugin-react@^7.36.1:
-  version "7.36.1"
-  resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz#f1dabbb11f3d4ebe8b0cf4e54aff4aee81144ee5"
-  integrity sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==
+eslint-plugin-react@^7.37.1:
+  version "7.37.1"
+  resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz#56493d7d69174d0d828bc83afeffe96903fdadbd"
+  integrity sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==
   dependencies:
     array-includes "^3.1.8"
     array.prototype.findlast "^1.2.5"
@@ -7014,10 +6675,10 @@ eslint-plugin-react@^7.36.1:
     string.prototype.matchall "^4.0.11"
     string.prototype.repeat "^1.0.0"
 
-eslint-plugin-storybook@^0.8.0:
-  version "0.8.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.8.0.tgz#23185ecabdc289cae55248c090f0c1d8fbae6c41"
-  integrity sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==
+eslint-plugin-storybook@^0.9.0:
+  version "0.9.0"
+  resolved "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.9.0.tgz#8f985899b957748d5780f8e6eb5d37c705976bc8"
+  integrity sha512-qOT/2vQBo0VqrG/BhZv8IdSsKQiyzJw+2Wqq+WFCiblI/PfxLSrGkF/buiXF+HumwfsCyBdaC94UhqhmYFmAvA==
   dependencies:
     "@storybook/csf" "^0.0.1"
     "@typescript-eslint/utils" "^5.62.0"
@@ -7208,36 +6869,36 @@ expect@^29.0.0, expect@^29.7.0:
     jest-util "^29.7.0"
 
 express@^4.19.2:
-  version "4.19.2"
-  resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
-  integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
+  version "4.21.1"
+  resolved "https://registry.npmjs.org/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281"
+  integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==
   dependencies:
     accepts "~1.3.8"
     array-flatten "1.1.1"
-    body-parser "1.20.2"
+    body-parser "1.20.3"
     content-disposition "0.5.4"
     content-type "~1.0.4"
-    cookie "0.6.0"
+    cookie "0.7.1"
     cookie-signature "1.0.6"
     debug "2.6.9"
     depd "2.0.0"
-    encodeurl "~1.0.2"
+    encodeurl "~2.0.0"
     escape-html "~1.0.3"
     etag "~1.8.1"
-    finalhandler "1.2.0"
+    finalhandler "1.3.1"
     fresh "0.5.2"
     http-errors "2.0.0"
-    merge-descriptors "1.0.1"
+    merge-descriptors "1.0.3"
     methods "~1.1.2"
     on-finished "2.4.1"
     parseurl "~1.3.3"
-    path-to-regexp "0.1.7"
+    path-to-regexp "0.1.10"
     proxy-addr "~2.0.7"
-    qs "6.11.0"
+    qs "6.13.0"
     range-parser "~1.2.1"
     safe-buffer "5.2.1"
-    send "0.18.0"
-    serve-static "1.15.0"
+    send "0.19.0"
+    serve-static "1.16.2"
     setprototypeof "1.2.0"
     statuses "2.0.1"
     type-is "~1.6.18"
@@ -7301,9 +6962,9 @@ fast-levenshtein@^2.0.6:
   integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
 fast-uri@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134"
-  integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz#d78b298cf70fd3b752fd951175a3da6a7b48f024"
+  integrity sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==
 
 fastest-levenshtein@^1.0.12, fastest-levenshtein@^1.0.16:
   version "1.0.16"
@@ -7338,10 +6999,10 @@ fb-watchman@^2.0.0:
   dependencies:
     bser "2.1.1"
 
-fflate@^0.4.8:
-  version "0.4.8"
-  resolved "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz#f90b82aefbd8ac174213abb338bd7ef848f0f5ae"
-  integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==
+fflate@^0.8.1:
+  version "0.8.2"
+  resolved "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea"
+  integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==
 
 file-entry-cache@^6.0.1:
   version "6.0.1"
@@ -7362,13 +7023,13 @@ filter-obj@^1.1.0:
   resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b"
   integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==
 
-finalhandler@1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
-  integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+finalhandler@1.3.1:
+  version "1.3.1"
+  resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
+  integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
   dependencies:
     debug "2.6.9"
-    encodeurl "~1.0.2"
+    encodeurl "~2.0.0"
     escape-html "~1.0.3"
     on-finished "2.4.1"
     parseurl "~1.3.3"
@@ -7460,9 +7121,9 @@ flatted@^3.2.9:
   integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
 
 follow-redirects@^1.0.0, follow-redirects@^1.15.6:
-  version "1.15.6"
-  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
-  integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
+  version "1.15.9"
+  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+  integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
 
 for-each@^0.3.3:
   version "0.3.3"
@@ -7516,9 +7177,9 @@ fork-ts-checker-webpack-plugin@^9.0.2:
     tapable "^2.2.1"
 
 form-data@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
-  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48"
+  integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==
   dependencies:
     asynckit "^0.4.0"
     combined-stream "^1.0.8"
@@ -7592,7 +7253,7 @@ function-bind@^1.1.2:
   resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
   integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
 
-function.prototype.name@^1.1.5, function.prototype.name@^1.1.6:
+function.prototype.name@^1.1.6:
   version "1.1.6"
   resolved "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd"
   integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==
@@ -7622,11 +7283,6 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5:
   resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
   integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
 
-get-func-name@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
-  integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
-
 get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4:
   version "1.2.4"
   resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
@@ -7663,9 +7319,9 @@ get-symbol-description@^1.0.2:
     get-intrinsic "^1.2.4"
 
 get-tsconfig@^4.7.5:
-  version "4.8.0"
-  resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.0.tgz#125dc13a316f61650a12b20c97c11b8fd996fedd"
-  integrity sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==
+  version "4.8.1"
+  resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz#8995eb391ae6e1638d251118c7b56de7eb425471"
+  integrity sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==
   dependencies:
     resolve-pkg-maps "^1.0.0"
 
@@ -7754,7 +7410,7 @@ globals@^13.19.0:
   dependencies:
     type-fest "^0.20.2"
 
-globalthis@^1.0.3:
+globalthis@^1.0.3, globalthis@^1.0.4:
   version "1.0.4"
   resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
   integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
@@ -7890,9 +7546,9 @@ hast-util-is-element@^3.0.0:
     "@types/hast" "^3.0.0"
 
 hast-util-to-string@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz#2a131948b4b1b26461a2c8ac876e2c88d02946bd"
-  integrity sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==
+  version "3.0.1"
+  resolved "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz#a4f15e682849326dd211c97129c94b0c3e76527c"
+  integrity sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==
   dependencies:
     "@types/hast" "^3.0.0"
 
@@ -8059,9 +7715,9 @@ http-proxy-agent@^5.0.0:
     debug "4"
 
 http-proxy-middleware@^2.0.3:
-  version "2.0.6"
-  resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
-  integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
+  version "2.0.7"
+  resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz#915f236d92ae98ef48278a95dedf17e991936ec6"
+  integrity sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==
   dependencies:
     "@types/http-proxy" "^1.17.8"
     http-proxy "^1.18.1"
@@ -8121,9 +7777,9 @@ ieee754@^1.1.12:
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
 
 ignore@^5.2.0, ignore@^5.2.1, ignore@^5.2.4:
-  version "5.3.1"
-  resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef"
-  integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
+  version "5.3.2"
+  resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5"
+  integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
 
 immer@^9.0.21:
   version "9.0.21"
@@ -8216,6 +7872,11 @@ internal-slot@^1.0.4, internal-slot@^1.0.7:
     hasown "^2.0.0"
     side-channel "^1.0.4"
 
+"internmap@1 - 2":
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009"
+  integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==
+
 internmap@^1.0.0:
   version "1.0.1"
   resolved "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95"
@@ -8303,14 +7964,7 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
   resolved "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
   integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
 
-is-core-module@^2.13.0, is-core-module@^2.5.0:
-  version "2.15.0"
-  resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz#71c72ec5442ace7e76b306e9d48db361f22699ea"
-  integrity sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==
-  dependencies:
-    hasown "^2.0.2"
-
-is-core-module@^2.15.1:
+is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.5.0:
   version "2.15.1"
   resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37"
   integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==
@@ -8662,10 +8316,10 @@ istanbul-reports@^3.0.2, istanbul-reports@^3.1.3:
     html-escaper "^2.0.0"
     istanbul-lib-report "^3.0.0"
 
-iterator.prototype@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0"
-  integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==
+iterator.prototype@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz#016c2abe0be3bbdb8319852884f60908ac62bf9c"
+  integrity sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==
   dependencies:
     define-properties "^1.2.1"
     get-intrinsic "^1.2.1"
@@ -9201,15 +8855,10 @@ jsdom@^20.0.0:
     ws "^8.11.0"
     xml-name-validator "^4.0.0"
 
-jsesc@^2.5.1:
-  version "2.5.2"
-  resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
-  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
-
-jsesc@~0.5.0:
-  version "0.5.0"
-  resolved "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
-  integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
+jsesc@^3.0.2, jsesc@~3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
+  integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
 
 json-buffer@3.0.1:
   version "3.0.1"
@@ -9272,19 +8921,19 @@ jsonfile@^6.0.1:
   optionalDependencies:
     graceful-fs "^4.1.6"
 
-jspdf@2.5.1:
-  version "2.5.1"
-  resolved "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz#00c85250abf5447a05f3b32ab9935ab4a56592cc"
-  integrity sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==
+jspdf@2.5.2:
+  version "2.5.2"
+  resolved "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz#3c35bb1063ee3ad9428e6353852b0d685d1f923a"
+  integrity sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==
   dependencies:
-    "@babel/runtime" "^7.14.0"
+    "@babel/runtime" "^7.23.2"
     atob "^2.1.2"
     btoa "^1.2.1"
-    fflate "^0.4.8"
+    fflate "^0.8.1"
   optionalDependencies:
     canvg "^3.0.6"
     core-js "^3.6.0"
-    dompurify "^2.2.0"
+    dompurify "^2.5.4"
     html2canvas "^1.0.0-rc.5"
 
 "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
@@ -9342,9 +8991,9 @@ language-tags@^1.0.9:
     language-subtag-registry "^0.3.20"
 
 launch-editor@^2.6.1:
-  version "2.8.0"
-  resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz#7255d90bdba414448e2138faa770a74f28451305"
-  integrity sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==
+  version "2.9.1"
+  resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.9.1.tgz#253f173bd441e342d4344b4dae58291abb425047"
+  integrity sha512-Gcnl4Bd+hRO9P9icCP/RVVT2o8SFlPXofuCxvA2SaZuH45whSvf5p8x5oih5ftLiVhEI4sp5xDY+R+b3zJBh5w==
   dependencies:
     picocolors "^1.0.0"
     shell-quote "^1.8.1"
@@ -9467,11 +9116,9 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
     js-tokens "^3.0.0 || ^4.0.0"
 
 loupe@^3.1.0, loupe@^3.1.1:
-  version "3.1.1"
-  resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.1.tgz#71d038d59007d890e3247c5db97c1ec5a92edc54"
-  integrity sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==
-  dependencies:
-    get-func-name "^2.0.1"
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz#c86e0696804a02218f2206124c45d8b15291a240"
+  integrity sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==
 
 lower-case@^2.0.2:
   version "2.0.2"
@@ -9500,11 +9147,11 @@ lz-string@^1.5.0:
   integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
 
 magic-string@^0.30.5:
-  version "0.30.10"
-  resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e"
-  integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==
+  version "0.30.12"
+  resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz#9eb11c9d072b9bcb4940a5b2c2e1a217e4ee1a60"
+  integrity sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==
   dependencies:
-    "@jridgewell/sourcemap-codec" "^1.4.15"
+    "@jridgewell/sourcemap-codec" "^1.5.0"
 
 make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
   version "3.1.0"
@@ -9547,7 +9194,7 @@ map-or-similar@^1.5.0:
   resolved "https://registry.npmjs.org/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08"
   integrity sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==
 
-maplibre-gl@^3.0.0:
+maplibre-gl@^3.6.2:
   version "3.6.2"
   resolved "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-3.6.2.tgz#abc2f34bddecabef8c20028eff06d62e36d75ccc"
   integrity sha512-krg2KFIdOpLPngONDhP6ixCoWl5kbdMINP0moMSJFVX7wX1Clm2M9hlNKXS8vBGlVWwR5R3ZfI6IPrYz7c+aCQ==
@@ -9579,9 +9226,9 @@ maplibre-gl@^3.0.0:
     vt-pbf "^3.1.3"
 
 markdown-to-jsx@^7.4.5:
-  version "7.4.7"
-  resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz#740ee7ec933865ef5cc683a0992797685a75e2ee"
-  integrity sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==
+  version "7.5.0"
+  resolved "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.5.0.tgz#42ece0c71e842560a7d8bd9f81e7a34515c72150"
+  integrity sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==
 
 mathml-tag-names@^2.1.3:
   version "2.1.3"
@@ -9606,19 +9253,19 @@ memfs@^3.4.1, memfs@^3.4.12:
     fs-monkey "^1.0.4"
 
 memfs@^4.6.0:
-  version "4.9.4"
-  resolved "https://registry.npmjs.org/memfs/-/memfs-4.9.4.tgz#803eb7f2091d1c6198ec9ba9b582505ad8699c9e"
-  integrity sha512-Xlj8b2rU11nM6+KU6wC7cuWcHQhVINWCUgdPS4Ar9nPxLaOya3RghqK7ALyDW2QtGebYAYs6uEdEVnwPVT942A==
+  version "4.14.0"
+  resolved "https://registry.npmjs.org/memfs/-/memfs-4.14.0.tgz#48d5e85a03ea0b428280003212fbca3063531be3"
+  integrity sha512-JUeY0F/fQZgIod31Ja1eJgiSxLn7BfQlCnqhwXFBzFHEw63OdLK7VJUJ7bnzNsWgCyoUP5tEp1VRY8rDaYzqOA==
   dependencies:
     "@jsonjoy.com/json-pack" "^1.0.3"
-    "@jsonjoy.com/util" "^1.1.2"
+    "@jsonjoy.com/util" "^1.3.0"
     tree-dump "^1.0.1"
     tslib "^2.0.0"
 
-memoize-one@^5.2.1:
-  version "5.2.1"
-  resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e"
-  integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==
+memoize-one@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
+  integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
 
 memoizerific@^1.11.3:
   version "1.11.3"
@@ -9645,10 +9292,10 @@ meow@^9.0.0:
     type-fest "^0.18.0"
     yargs-parser "^20.2.3"
 
-merge-descriptors@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
-  integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+merge-descriptors@1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
+  integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
 
 merge-stream@^2.0.0:
   version "2.0.0"
@@ -9666,9 +9313,9 @@ methods@~1.1.2:
   integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
 
 micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
-  version "4.0.7"
-  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
-  integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
+  version "4.0.8"
+  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
+  integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
   dependencies:
     braces "^3.0.3"
     picomatch "^2.3.1"
@@ -9767,21 +9414,11 @@ moo@^0.5.0:
   resolved "https://registry.npmjs.org/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c"
   integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==
 
-mousetrap@^1.6.3:
-  version "1.6.5"
-  resolved "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz#8a766d8c272b08393d5f56074e0b5ec183485bf9"
-  integrity sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==
-
 ms@2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
   integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
 
-ms@2.1.2:
-  version "2.1.2"
-  resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
-  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
 ms@2.1.3, ms@^2.1.1, ms@^2.1.3:
   version "2.1.3"
   resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
@@ -9794,16 +9431,16 @@ msw-storybook-addon@^2.0.3:
   dependencies:
     is-node-process "^1.0.1"
 
-msw@2.4.8:
-  version "2.4.8"
-  resolved "https://registry.npmjs.org/msw/-/msw-2.4.8.tgz#306b6ba1ae09d0d09bac08009a83eeb622578d73"
-  integrity sha512-a+FUW1m5yT8cV9GBy0L/cbNg0EA4//SKEzgu3qFrpITrWYeZmqfo7dqtM74T2lAl69jjUjjCaEhZKaxG2Ns8DA==
+msw@2.4.11:
+  version "2.4.11"
+  resolved "https://registry.npmjs.org/msw/-/msw-2.4.11.tgz#17001366c7c8de1540436d06d194f8facffed0f4"
+  integrity sha512-TVEw9NOPTc6ufOQLJ53234S9NBRxQbu7xFMxs+OCP43JQcNEIOKiZHxEm2nDzYIrwccoIhUxUf8wr99SukD76A==
   dependencies:
     "@bundled-es-modules/cookie" "^2.0.0"
     "@bundled-es-modules/statuses" "^1.0.1"
     "@bundled-es-modules/tough-cookie" "^0.1.6"
     "@inquirer/confirm" "^3.0.0"
-    "@mswjs/interceptors" "^0.35.6"
+    "@mswjs/interceptors" "^0.35.8"
     "@open-draft/until" "^2.1.0"
     "@types/cookie" "^0.6.0"
     "@types/statuses" "^2.0.4"
@@ -9811,10 +9448,10 @@ msw@2.4.8:
     graphql "^16.8.1"
     headers-polyfill "^4.0.2"
     is-node-process "^1.2.0"
-    outvariant "^1.4.2"
+    outvariant "^1.4.3"
     path-to-regexp "^6.3.0"
     strict-event-emitter "^0.5.1"
-    type-fest "^4.9.0"
+    type-fest "^4.26.1"
     yargs "^17.7.2"
 
 multicast-dns@^7.2.5:
@@ -9878,6 +9515,11 @@ node-abort-controller@^3.0.1:
   resolved "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
   integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==
 
+node-addon-api@^7.0.0:
+  version "7.1.1"
+  resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558"
+  integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==
+
 node-forge@^1:
   version "1.3.1"
   resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -9895,7 +9537,7 @@ node-preload@^0.2.1:
   dependencies:
     process-on-spawn "^1.0.0"
 
-node-releases@^2.0.14, node-releases@^2.0.18:
+node-releases@^2.0.18:
   version "2.0.18"
   resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
   integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
@@ -9983,9 +9625,9 @@ numeral@^2.0.6:
   integrity sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==
 
 nwsapi@^2.2.2:
-  version "2.2.12"
-  resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz#fb6af5c0ec35b27b4581eb3bbad34ec9e5c696f8"
-  integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==
+  version "2.2.13"
+  resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz#e56b4e98960e7a040e5474536587e599c4ff4655"
+  integrity sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==
 
 nyc@^15.1.0:
   version "15.1.0"
@@ -10162,7 +9804,7 @@ os-homedir@^1.0.1:
   resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
   integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==
 
-outvariant@^1.4.0, outvariant@^1.4.2, outvariant@^1.4.3:
+outvariant@^1.4.0, outvariant@^1.4.3:
   version "1.4.3"
   resolved "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873"
   integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==
@@ -10278,11 +9920,11 @@ parse-passwd@^1.0.0:
   integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
 
 parse5@^7.0.0, parse5@^7.1.1:
-  version "7.1.2"
-  resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
-  integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+  version "7.2.0"
+  resolved "https://registry.npmjs.org/parse5/-/parse5-7.2.0.tgz#8a0591ce9b7c5e2027173ab737d4d3fc3d826fab"
+  integrity sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==
   dependencies:
-    entities "^4.4.0"
+    entities "^4.5.0"
 
 parseurl@~1.3.2, parseurl@~1.3.3:
   version "1.3.3"
@@ -10332,10 +9974,10 @@ path-parse@^1.0.7:
   resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
   integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
-path-to-regexp@0.1.7:
-  version "0.1.7"
-  resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
-  integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+path-to-regexp@0.1.10:
+  version "0.1.10"
+  resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
+  integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
 
 path-to-regexp@^6.3.0:
   version "6.3.0"
@@ -10365,12 +10007,7 @@ performance-now@^2.1.0:
   resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
   integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
 
-picocolors@^1.0.0, picocolors@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
-  integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
-
-picocolors@^1.1.0:
+picocolors@^1.0.0, picocolors@^1.1.0:
   version "1.1.0"
   resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
   integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
@@ -10406,17 +10043,17 @@ pkg-dir@^7.0.0:
   dependencies:
     find-up "^6.3.0"
 
-playwright-core@1.45.3, playwright-core@>=1.2.0:
-  version "1.45.3"
-  resolved "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.3.tgz#e77bc4c78a621b96c3e629027534ee1d25faac93"
-  integrity sha512-+ym0jNbcjikaOwwSZycFbwkWgfruWvYlJfThKYAlImbxUgdWFO2oW70ojPm4OpE4t6TAo2FY/smM+hpVTtkhDA==
+playwright-core@1.48.0, playwright-core@>=1.2.0:
+  version "1.48.0"
+  resolved "https://registry.npmjs.org/playwright-core/-/playwright-core-1.48.0.tgz#34d209dd4aba8fccd4a96116f1c4f7630f868722"
+  integrity sha512-RBvzjM9rdpP7UUFrQzRwR8L/xR4HyC1QXMzGYTbf1vjw25/ya9NRAVnXi/0fvFopjebvyPzsmoK58xxeEOaVvA==
 
 playwright@^1.14.0:
-  version "1.45.3"
-  resolved "https://registry.npmjs.org/playwright/-/playwright-1.45.3.tgz#75143f73093a6e1467f7097083d2f0846fb8dd2f"
-  integrity sha512-QhVaS+lpluxCaioejDZ95l4Y4jSFCsBvl2UZkpeXlzxmqS+aABr5c82YmfMHrL6x27nvrvykJAFpkzT2eWdJww==
+  version "1.48.0"
+  resolved "https://registry.npmjs.org/playwright/-/playwright-1.48.0.tgz#00855d9a25f1991d422867f1c32af5d90f457b48"
+  integrity sha512-qPqFaMEHuY/ug8o0uteYJSRfMGFikhUysk8ZvAtfKmUK3kc/6oNl/y3EczF8OFGYIi/Ex2HspMfzYArk6+XQSA==
   dependencies:
-    playwright-core "1.45.3"
+    playwright-core "1.48.0"
   optionalDependencies:
     fsevents "2.3.2"
 
@@ -10485,9 +10122,9 @@ postcss-modules-values@^4.0.0:
     icss-utils "^5.0.0"
 
 postcss-resolve-nested-selector@^0.1.1:
-  version "0.1.4"
-  resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.4.tgz#0068767902fb40f0e6cd7b24faee4fa4bc14a5da"
-  integrity sha512-R6vHqZWgVnTAPq0C+xjyHfEZqfIYboCBVSy24MjxEDm+tIh1BU4O6o7DP7AA7kHzf136d+Qc5duI4tlpHjixDw==
+  version "0.1.6"
+  resolved "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#3d84dec809f34de020372c41b039956966896686"
+  integrity sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==
 
 postcss-safe-parser@^6.0.0:
   version "6.0.0"
@@ -10495,9 +10132,9 @@ postcss-safe-parser@^6.0.0:
   integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==
 
 postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
-  version "6.1.1"
-  resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38"
-  integrity sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==
+  version "6.1.2"
+  resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de"
+  integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
   dependencies:
     cssesc "^3.0.0"
     util-deprecate "^1.0.2"
@@ -10654,17 +10291,10 @@ pure-rand@^6.0.0:
   resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2"
   integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
 
-qs@6.11.0:
-  version "6.11.0"
-  resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
-  integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
-  dependencies:
-    side-channel "^1.0.4"
-
-qs@^6.12.3, qs@^6.4.0:
-  version "6.12.3"
-  resolved "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz#e43ce03c8521b9c7fd7f1f13e514e5ca37727754"
-  integrity sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==
+qs@6.13.0, qs@^6.12.3, qs@^6.4.0:
+  version "6.13.0"
+  resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+  integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
   dependencies:
     side-channel "^1.0.6"
 
@@ -10874,20 +10504,20 @@ react-resize-detector@^3.2.1:
     prop-types "^15.6.2"
     resize-observer-polyfill "^1.5.1"
 
-react-router-dom@^6.26.2:
-  version "6.26.2"
-  resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz#a6e3b0cbd6bfd508e42b9342099d015a0ac59680"
-  integrity sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==
+react-router-dom@^6.27.0:
+  version "6.27.0"
+  resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz#8d7972a425fd75f91c1e1ff67e47240c5752dc3f"
+  integrity sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==
   dependencies:
-    "@remix-run/router" "1.19.2"
-    react-router "6.26.2"
+    "@remix-run/router" "1.20.0"
+    react-router "6.27.0"
 
-react-router@6.26.2:
-  version "6.26.2"
-  resolved "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz#2f0a68999168954431cdc29dd36cec3b6fa44a7e"
-  integrity sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==
+react-router@6.27.0:
+  version "6.27.0"
+  resolved "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz#db292474926c814c996c0ff3ef0162d1f9f60ed4"
+  integrity sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==
   dependencies:
-    "@remix-run/router" "1.19.2"
+    "@remix-run/router" "1.20.0"
 
 react-spring@9.2.4:
   version "9.2.4"
@@ -10958,6 +10588,11 @@ readable-stream@^3.0.6, readable-stream@^3.1.1:
     string_decoder "^1.1.1"
     util-deprecate "^1.0.1"
 
+readdirp@^4.0.1:
+  version "4.0.2"
+  resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz#388fccb8b75665da3abffe2d8f8ed59fe74c230a"
+  integrity sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==
+
 readdirp@~3.6.0:
   version "3.6.0"
   resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -11016,10 +10651,10 @@ reflect.getprototypeof@^1.0.4:
     globalthis "^1.0.3"
     which-builtin-type "^1.1.3"
 
-regenerate-unicode-properties@^10.1.0:
-  version "10.1.1"
-  resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480"
-  integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==
+regenerate-unicode-properties@^10.2.0:
+  version "10.2.0"
+  resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0"
+  integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==
   dependencies:
     regenerate "^1.4.2"
 
@@ -11046,33 +10681,38 @@ regenerator-transform@^0.15.2:
     "@babel/runtime" "^7.8.4"
 
 regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
-  version "1.5.2"
-  resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz#138f644a3350f981a858c44f6bb1a61ff59be334"
-  integrity sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==
+  version "1.5.3"
+  resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42"
+  integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==
   dependencies:
-    call-bind "^1.0.6"
+    call-bind "^1.0.7"
     define-properties "^1.2.1"
     es-errors "^1.3.0"
-    set-function-name "^2.0.1"
+    set-function-name "^2.0.2"
 
-regexpu-core@^5.3.1:
-  version "5.3.2"
-  resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b"
-  integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==
+regexpu-core@^6.1.1:
+  version "6.1.1"
+  resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac"
+  integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==
   dependencies:
-    "@babel/regjsgen" "^0.8.0"
     regenerate "^1.4.2"
-    regenerate-unicode-properties "^10.1.0"
-    regjsparser "^0.9.1"
+    regenerate-unicode-properties "^10.2.0"
+    regjsgen "^0.8.0"
+    regjsparser "^0.11.0"
     unicode-match-property-ecmascript "^2.0.0"
     unicode-match-property-value-ecmascript "^2.1.0"
 
-regjsparser@^0.9.1:
-  version "0.9.1"
-  resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709"
-  integrity sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==
+regjsgen@^0.8.0:
+  version "0.8.0"
+  resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab"
+  integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
+
+regjsparser@^0.11.0:
+  version "0.11.1"
+  resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz#ae55c74f646db0c8fcb922d4da635e33da405149"
+  integrity sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==
   dependencies:
-    jsesc "~0.5.0"
+    jsesc "~3.0.2"
 
 rehype-external-links@^3.0.0:
   version "3.0.0"
@@ -11325,11 +10965,12 @@ safe-regex-test@^1.0.3:
   integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
 
 sass@^1.62.1:
-  version "1.77.8"
-  resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz#9f18b449ea401759ef7ec1752a16373e296b52bd"
-  integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
+  version "1.79.5"
+  resolved "https://registry.npmjs.org/sass/-/sass-1.79.5.tgz#646c627601cd5f84c64f7b1485b9292a313efae4"
+  integrity sha512-W1h5kp6bdhqFh2tk3DsI771MoEJjvrSY/2ihJRJS4pjIyfJCw0nTsxqhnrUzaLMOJjFchj8rOvraI/YUVjtx5g==
   dependencies:
-    chokidar ">=3.0.0 <4.0.0"
+    "@parcel/watcher" "^2.4.1"
+    chokidar "^4.0.0"
     immutable "^4.0.0"
     source-map-js ">=0.6.2 <2.0.0"
 
@@ -11406,10 +11047,10 @@ selfsigned@^2.4.1:
   resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
   integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
 
-send@0.18.0:
-  version "0.18.0"
-  resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
-  integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+send@0.19.0:
+  version "0.19.0"
+  resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+  integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
   dependencies:
     debug "2.6.9"
     depd "2.0.0"
@@ -11445,15 +11086,15 @@ serve-index@^1.9.1:
     mime-types "~2.1.17"
     parseurl "~1.3.2"
 
-serve-static@1.15.0:
-  version "1.15.0"
-  resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
-  integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+serve-static@1.16.2:
+  version "1.16.2"
+  resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
+  integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
   dependencies:
-    encodeurl "~1.0.2"
+    encodeurl "~2.0.0"
     escape-html "~1.0.3"
     parseurl "~1.3.3"
-    send "0.18.0"
+    send "0.19.0"
 
 set-blocking@^2.0.0:
   version "2.0.0"
@@ -11606,12 +11247,7 @@ sort-object@^3.0.3:
     sort-desc "^0.2.0"
     union-value "^1.0.1"
 
-"source-map-js@>=0.6.2 <2.0.0":
-  version "1.2.0"
-  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
-  integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-
-source-map-js@^1.2.1:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.1:
   version "1.2.1"
   resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
   integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
@@ -11686,9 +11322,9 @@ spdx-expression-parse@^3.0.0:
     spdx-license-ids "^3.0.0"
 
 spdx-license-ids@^3.0.0:
-  version "3.0.18"
-  resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz#22aa922dcf2f2885a6494a261f2d8b75345d0326"
-  integrity sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==
+  version "3.0.20"
+  resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz#e44ed19ed318dd1e5888f93325cee800f0f51b89"
+  integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==
 
 spdy-transport@^3.0.0:
   version "3.0.0"
@@ -11764,12 +11400,12 @@ stop-iteration-iterator@^1.0.0:
   dependencies:
     internal-slot "^1.0.4"
 
-storybook@^8.3.1:
-  version "8.3.1"
-  resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.1.tgz#4f52975bb0b7895eb4ad8125b37c0b3bba33b555"
-  integrity sha512-CYqt5KOpaTgb8OczNo2+EtMi8YNDPi4vNVebVlLDOroWxyulb8I7MIOH9gALczcIOb+TZUArPztjoa8rkXTaDQ==
+storybook@^8.3.5:
+  version "8.3.5"
+  resolved "https://registry.npmjs.org/storybook/-/storybook-8.3.5.tgz#aef0542c08e245b7ac22742c1e1633a125063b8e"
+  integrity sha512-hYQVtP2l+3kO8oKDn4fjXXQYxgTRsj/LaV6lUMJH0zt+OhVmDXKJLxmdUP4ieTm0T8wEbSYosFavgPcQZlxRfw==
   dependencies:
-    "@storybook/core" "8.3.1"
+    "@storybook/core" "8.3.5"
 
 strict-event-emitter@^0.5.1:
   version "0.5.1"
@@ -11812,12 +11448,13 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
     strip-ansi "^6.0.1"
 
 string.prototype.includes@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f"
-  integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz#eceef21283640761a81dbe16d6c7171a4edf7d92"
+  integrity sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==
   dependencies:
-    define-properties "^1.1.3"
-    es-abstract "^1.17.5"
+    call-bind "^1.0.7"
+    define-properties "^1.2.1"
+    es-abstract "^1.23.3"
 
 string.prototype.matchall@^4.0.11:
   version "4.0.11"
@@ -12113,20 +11750,10 @@ terser-webpack-plugin@^5.3.1, terser-webpack-plugin@^5.3.10:
     serialize-javascript "^6.0.1"
     terser "^5.26.0"
 
-terser@^5.10.0:
-  version "5.31.3"
-  resolved "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz#b24b7beb46062f4653f049eea4f0cd165d0f0c38"
-  integrity sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==
-  dependencies:
-    "@jridgewell/source-map" "^0.3.3"
-    acorn "^8.8.2"
-    commander "^2.20.0"
-    source-map-support "~0.5.20"
-
-terser@^5.26.0:
-  version "5.31.6"
-  resolved "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1"
-  integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==
+terser@^5.10.0, terser@^5.26.0:
+  version "5.34.1"
+  resolved "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz#af40386bdbe54af0d063e0670afd55c3105abeb6"
+  integrity sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==
   dependencies:
     "@jridgewell/source-map" "^0.3.3"
     acorn "^8.8.2"
@@ -12309,9 +11936,9 @@ tslib@^1.8.1:
   integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
 
 tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0:
-  version "2.6.3"
-  resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0"
-  integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
+  version "2.7.0"
+  resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
+  integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
 
 tsutils@^3.21.0:
   version "3.21.0"
@@ -12362,10 +11989,10 @@ type-fest@^2.19.0, type-fest@~2.19:
   resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
   integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
 
-type-fest@^4.9.0:
-  version "4.23.0"
-  resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.23.0.tgz#8196561a6b835175473be744f3e41e2dece1496b"
-  integrity sha512-ZiBujro2ohr5+Z/hZWHESLz3g08BBdrdLMieYFULJO+tWc437sn8kQsWLJoZErY8alNhxre9K4p3GURAG11n+w==
+type-fest@^4.26.1:
+  version "4.26.1"
+  resolved "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e"
+  integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==
 
 type-is@~1.6.18:
   version "1.6.18"
@@ -12426,10 +12053,10 @@ typedarray-to-buffer@^3.1.5:
   dependencies:
     is-typedarray "^1.0.0"
 
-typescript@^5.6.2:
-  version "5.6.2"
-  resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0"
-  integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==
+typescript@^5.6.3:
+  version "5.6.3"
+  resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
+  integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
 
 typewise-core@^1.2, typewise-core@^1.2.0:
   version "1.2.0"
@@ -12453,11 +12080,6 @@ unbox-primitive@^1.0.2:
     has-symbols "^1.0.3"
     which-boxed-primitive "^1.0.2"
 
-undici-types@~5.26.4:
-  version "5.26.5"
-  resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
-  integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
 undici-types@~6.19.2:
   version "6.19.8"
   resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"
@@ -12471,9 +12093,9 @@ undici@^5.28.4:
     "@fastify/busboy" "^2.0.0"
 
 unicode-canonical-property-names-ecmascript@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc"
-  integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2"
+  integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==
 
 unicode-match-property-ecmascript@^2.0.0:
   version "2.0.0"
@@ -12484,9 +12106,9 @@ unicode-match-property-ecmascript@^2.0.0:
     unicode-property-aliases-ecmascript "^2.0.0"
 
 unicode-match-property-value-ecmascript@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
-  integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71"
+  integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==
 
 unicode-property-aliases-ecmascript@^2.0.0:
   version "2.1.0"
@@ -12543,22 +12165,20 @@ unpipe@1.0.0, unpipe@~1.0.0:
   integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
 
 unplugin@^1.3.1:
-  version "1.12.0"
-  resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.12.0.tgz#a11d3eb565602190748b1f95ecc8590b0f7dcbb4"
-  integrity sha512-KeczzHl2sATPQUx1gzo+EnUkmN4VmGBYRRVOZSGvGITE9rGHRDGqft6ONceP3vgXcyJ2XjX5axG5jMWUwNCYLw==
+  version "1.14.1"
+  resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.14.1.tgz#c76d6155a661e43e6a897bce6b767a1ecc344c1a"
+  integrity sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==
   dependencies:
     acorn "^8.12.1"
-    chokidar "^3.6.0"
-    webpack-sources "^3.2.3"
     webpack-virtual-modules "^0.6.2"
 
 update-browserslist-db@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
-  integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
+  integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
   dependencies:
-    escalade "^3.1.2"
-    picocolors "^1.0.1"
+    escalade "^3.2.0"
+    picocolors "^1.1.0"
 
 uri-js@^4.2.2:
   version "4.4.1"
@@ -12888,10 +12508,10 @@ webpack-virtual-modules@^0.6.0, webpack-virtual-modules@^0.6.2:
   resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
   integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
 
-webpack@5, webpack@^5.94.0:
-  version "5.94.0"
-  resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz#77a6089c716e7ab90c1c67574a28da518a20970f"
-  integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==
+webpack@5, webpack@^5.95.0:
+  version "5.95.0"
+  resolved "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz#8fd8c454fa60dad186fbe36c400a55848307b4c0"
+  integrity sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==
   dependencies:
     "@types/estree" "^1.0.5"
     "@webassemblyjs/ast" "^1.12.1"
@@ -12963,12 +12583,12 @@ which-boxed-primitive@^1.0.2:
     is-symbol "^1.0.3"
 
 which-builtin-type@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b"
-  integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==
+  version "1.1.4"
+  resolved "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz#592796260602fc3514a1b5ee7fa29319b72380c3"
+  integrity sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==
   dependencies:
-    function.prototype.name "^1.1.5"
-    has-tostringtag "^1.0.0"
+    function.prototype.name "^1.1.6"
+    has-tostringtag "^1.0.2"
     is-async-function "^2.0.0"
     is-date-object "^1.0.5"
     is-finalizationregistry "^1.0.2"
@@ -12977,10 +12597,10 @@ which-builtin-type@^1.1.3:
     is-weakref "^1.0.2"
     isarray "^2.0.5"
     which-boxed-primitive "^1.0.2"
-    which-collection "^1.0.1"
-    which-typed-array "^1.1.9"
+    which-collection "^1.0.2"
+    which-typed-array "^1.1.15"
 
-which-collection@^1.0.1:
+which-collection@^1.0.1, which-collection@^1.0.2:
   version "1.0.2"
   resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
   integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
@@ -12995,7 +12615,7 @@ which-module@^2.0.0:
   resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409"
   integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
 
-which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2, which-typed-array@^1.1.9:
+which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2:
   version "1.1.15"
   resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d"
   integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==


Test patch:
diff --git a/.github/workflows/build-test-release.yml b/.github/workflows/build-test-release.yml
index 3ba1a58a4..92a0954f7 100644
--- a/.github/workflows/build-test-release.yml
+++ b/.github/workflows/build-test-release.yml
@@ -16,7 +16,7 @@ concurrency:
 
 jobs:
   meta:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     outputs:
       matrix_supportedSplunk: ${{ steps.matrix.outputs.supportedSplunk }}
     steps:
@@ -26,7 +26,7 @@ jobs:
 
   fossa-scan:
     continue-on-error: true
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - run: |
@@ -54,7 +54,7 @@ jobs:
       failed: ${{ env.failed }}
 
   pre-commit:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-python@v5
@@ -68,7 +68,7 @@ jobs:
       SEMGREP_KEY: ${{ secrets.SEMGREP_PUBLISH_TOKEN }}
 
   compliance-copyrights:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - uses: apache/skywalking-eyes@v0.6.0
@@ -104,7 +104,7 @@ jobs:
     needs:
       - fossa-scan
       - build-ui
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-python@v5
@@ -133,7 +133,7 @@ jobs:
           path: dist/
 
   test-unit:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     continue-on-error: true
     strategy:
       matrix:
@@ -166,7 +166,7 @@ jobs:
     name: test-smoke ${{ matrix.python-version }}
     needs:
       - build-ui
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     continue-on-error: true
     strategy:
       matrix:
@@ -202,7 +202,7 @@ jobs:
       failed: ${{ env.failed }}
 
   build-test-addon:
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     needs:
       - build-ui
     steps:
@@ -234,7 +234,7 @@ jobs:
 
   test-ui:
     name: test-ui Splunk ${{ matrix.splunk.version }} -m ${{ matrix.test-mark }}
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     permissions:
       id-token: write
       contents: read
@@ -293,7 +293,7 @@ jobs:
 
   appinspect-for-expected-outputs:
     name: splunk-appinspect ${{ matrix.tags }} tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     continue-on-error: true
     strategy:
       matrix:
@@ -332,7 +332,7 @@ jobs:
       - build-test-addon-openapi-client
       - storybook-screenshots
       - bot-updates
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     env:
       NEEDS: ${{ toJson(needs) }}
     steps:
@@ -365,7 +365,7 @@ jobs:
       - semgrep
       - pre-commit
       - all-checks
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     if: "! github.event.pull_request.head.repo.fork "
     steps:
       - uses: actions/checkout@v4
@@ -407,7 +407,7 @@ jobs:
 
   build-test-addon-openapi-client:
     name: build-test-addon-openapi-client Splunk ${{ matrix.splunk.version }}
-    runs-on: ubuntu-latest
+    runs-on: ubuntu-22.04
     needs:
       - meta
       - build-test-addon
diff --git a/tests/smoke/test_ucc_build.py b/tests/smoke/test_ucc_build.py
index 756f78abf..ccecea752 100644
--- a/tests/smoke/test_ucc_build.py
+++ b/tests/smoke/test_ucc_build.py
@@ -6,6 +6,7 @@
 from pathlib import Path
 from typing import Dict, Any
 
+from splunk_add_on_ucc_framework.entity.interval_entity import CRON_REGEX
 from tests.smoke import helpers
 from tests.unit import helpers as unit_helpers
 import addonfactory_splunk_conf_parser_lib as conf_parser
@@ -631,8 +632,8 @@ def _compare_interval_entities(
                         "type": "text",
                         "validators": [
                             {
-                                "errorMsg": "Interval must be either a non-negative number or -1.",
-                                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                                "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
+                                "pattern": CRON_REGEX,
                                 "type": "regex",
                             }
                         ],
diff --git a/tests/testdata/expected_addons/expected_files_conflict_test/expected_log.json b/tests/testdata/expected_addons/expected_files_conflict_test/expected_log.json
index 8b33c26da..0aa40f75e 100644
--- a/tests/testdata/expected_addons/expected_files_conflict_test/expected_log.json
+++ b/tests/testdata/expected_addons/expected_files_conflict_test/expected_log.json
@@ -27,6 +27,7 @@
   "appserver/static/js/build/globalConfig.json                                     created\u001b[0m": "INFO",
   "appserver/static/openapi.json                                                   created\u001b[0m": "INFO",
   "metadata/default.meta                                                           created\u001b[0m": "INFO",
+  "appserver/static/js/build/custom/data_ingestion_modal_definition.json           created\u001b[0m": "INFO",
   "appserver/static/js/build/custom/data_ingestion_tab_definition.json             created\u001b[0m": "INFO",
   "appserver/static/js/build/custom/errors_tab_definition.json                     created\u001b[0m": "INFO",
   "appserver/static/js/build/custom/overview_definition.json                       created\u001b[0m": "INFO",
diff --git a/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py b/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
index 5e1500a78..62a50565d 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_configuration/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
@@ -14,6 +14,24 @@
 util.remove_http_proxy_env_vars()
 
 
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.AllOf(
+            validator.String(
+                max_len=50,
+                min_len=1,
+            ),
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""",
+            )
+        )
+    )
+]
+
 fields = [
     field.RestField(
         'custom_endpoint',
@@ -128,7 +146,7 @@
         validator=None
     )
 ]
-model = RestModel(fields, name=None)
+model = RestModel(fields, name=None, special_fields=special_fields)
 
 
 endpoint = SingleModel(
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/inputs.conf.spec b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/inputs.conf.spec
index d1d44e2c8..a5301b425 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/inputs.conf.spec
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/inputs.conf.spec
@@ -27,6 +27,8 @@ index = Default: default
 input_two_checkbox = This is an example checkbox for the input two entity
 input_two_multiple_select = This is an example multipleSelect for input two entity
 input_two_radio = This is an example radio button for the input two entity
+input_two_text_hidden_for_cloud = Should be hidden for cloud
+input_two_text_hidden_for_enterprise = Should be hidden for enterprise
 interval = Time interval of the data input, in seconds.
 start_date = The date and time, in "YYYY-MM-DDThh:mm:ss.000z" format, after which to query and index records.  The default is 90 days before today.
 use_existing_checkpoint = Data input already exists. Select `No` if you want to reset the data collection.  Default: yes
@@ -36,3 +38,9 @@ interval = Time interval of the data input, in seconds.
 
 [example_input_four://<name>]
 interval = Time interval of the data input, in seconds.
+
+[service_hidden_for_cloud://<name>]
+interval = Time interval of the data input, in seconds.
+
+[service_hidden_for_enterprise://<name>]
+interval = Time interval of the data input, in seconds.
\ No newline at end of file
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/splunk_ta_uccexample_account.conf.spec b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/splunk_ta_uccexample_account.conf.spec
index 2ec909f53..7d2d19354 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/splunk_ta_uccexample_account.conf.spec
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/README/splunk_ta_uccexample_account.conf.spec
@@ -19,6 +19,8 @@ oauth_oauth_text =
 password = 
 redirect_url = 
 refresh_token = 
+text_field_hidden_for_cloud = 
+text_field_hidden_for_enterprise = 
 token = 
 url = 
 username = 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/appserver/static/js/build/globalConfig.json b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/appserver/static/js/build/globalConfig.json
index 16bd03d51..6ab5da9c8 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/appserver/static/js/build/globalConfig.json
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/appserver/static/js/build/globalConfig.json
@@ -1032,7 +1032,7 @@
         "apiVersion": "3.2.0",
         "name": "Splunk_TA_UCCExample",
         "restRoot": "splunk_ta_uccexample",
-        "version": "5.5.8R5fd76615",
+        "version": "5.5.8+5fd76615",
         "displayName": "Splunk UCC test Add-on",
         "schemaVersion": "0.0.2"
     }
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_four.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_four.py
index 652842d8f..394f74826 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_four.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_four.py
@@ -2,8 +2,12 @@
 
 import json
 import sys
+from time import time
 
 from splunklib import modularinput as smi
+from solnlib import log
+
+logger = log.Logs().get_logger('splunk_ta_uccexample_four')
 
 
 class EXAMPLE_INPUT_FOUR(smi.Script):
@@ -32,13 +36,23 @@ def validate_input(self, definition: smi.ValidationDefinition):
 
     def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
         input_items = [{'count': len(inputs.inputs)}]
+        input_name_1 = ""
         for input_name, input_item in inputs.inputs.items():
             input_item['name'] = input_name
+            input_name_1 = input_name
             input_items.append(input_item)
+        
+        sourcetype = f'example_input_four-st--{input_name_1.split("://")[-1]}'
+        host = f'host--{input_name_1.split("://")[-1]}'
+
         event = smi.Event(
             data=json.dumps(input_items),
-            sourcetype='example_input_four',
+            sourcetype=sourcetype,
+            host=host,
+            source=input_name_1,
         )
+        log.events_ingested(logger, input_name_1, sourcetype,
+                            str(time())[-3:], "main", "no_account_4", host)
         ew.write_event(event)
 
 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_three.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_three.py
index 95bf73b84..c5f4d1cf1 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_three.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_three.py
@@ -2,8 +2,12 @@
 
 import json
 import sys
+from time import time
 
 from splunklib import modularinput as smi
+from solnlib import log
+
+logger = log.Logs().get_logger('splunk_ta_uccexample_three')
 
 
 class EXAMPLE_INPUT_THREE(smi.Script):
@@ -32,13 +36,24 @@ def validate_input(self, definition: smi.ValidationDefinition):
 
     def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
         input_items = [{'count': len(inputs.inputs)}]
+        input_name_1 = ""
         for input_name, input_item in inputs.inputs.items():
             input_item['name'] = input_name
+            input_name_1 = input_name
             input_items.append(input_item)
+        
+        sourcetype = f'example_input_three-st--{input_name_1.split("://")[-1]}'
+        host = f'host--{input_name_1.split("://")[-1]}'
+        source = f'example_input_three-s--{input_name_1.split("://")[-1]}'
+
         event = smi.Event(
             data=json.dumps(input_items),
-            sourcetype='example_input_three',
+            sourcetype=sourcetype,
+            host=host,
+            source=source,
         )
+        log.events_ingested(logger, input_name_1, sourcetype,
+                            str(time())[-3:], "main", "no_account_4", host)
         ew.write_event(event)
 
 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_two.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_two.py
index f4efbe045..f131132d9 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_two.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/example_input_two.py
@@ -31,6 +31,18 @@ def get_scheme(self):
                 required_on_create=True,
             )
         )
+        scheme.add_argument(
+            smi.Argument(
+                'input_two_text_hidden_for_cloud',
+                required_on_create=False,
+            )
+        )
+        scheme.add_argument(
+            smi.Argument(
+                'input_two_text_hidden_for_enterprise',
+                required_on_create=False,
+            )
+        )
         scheme.add_argument(
             smi.Argument(
                 'input_two_multiple_select',
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_cloud.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_cloud.py
new file mode 100644
index 000000000..abd22549c
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_cloud.py
@@ -0,0 +1,47 @@
+import import_declare_test
+
+import json
+import sys
+
+from splunklib import modularinput as smi
+
+
+class SERVICE_HIDDEN_FOR_CLOUD(smi.Script):
+    def __init__(self):
+        super(SERVICE_HIDDEN_FOR_CLOUD, self).__init__()
+
+    def get_scheme(self):
+        scheme = smi.Scheme('service_hidden_for_cloud')
+        scheme.description = 'Service hidden for cloud'
+        scheme.use_external_validation = True
+        scheme.streaming_mode_xml = True
+        scheme.use_single_instance = False
+
+        scheme.add_argument(
+            smi.Argument(
+                'name',
+                title='Name',
+                description='Name',
+                required_on_create=True
+            )
+        )
+        return scheme
+
+    def validate_input(self, definition: smi.ValidationDefinition):
+        return
+
+    def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
+        input_items = [{'count': len(inputs.inputs)}]
+        for input_name, input_item in inputs.inputs.items():
+            input_item['name'] = input_name
+            input_items.append(input_item)
+        event = smi.Event(
+            data=json.dumps(input_items),
+            sourcetype='service_hidden_for_cloud',
+        )
+        ew.write_event(event)
+
+
+if __name__ == '__main__':
+    exit_code = SERVICE_HIDDEN_FOR_CLOUD().run(sys.argv)
+    sys.exit(exit_code)
\ No newline at end of file
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_enterprise.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_enterprise.py
new file mode 100644
index 000000000..f502fa7a3
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/service_hidden_for_enterprise.py
@@ -0,0 +1,47 @@
+import import_declare_test
+
+import json
+import sys
+
+from splunklib import modularinput as smi
+
+
+class SERVICE_HIDDEN_FOR_ENTERPRISE(smi.Script):
+    def __init__(self):
+        super(SERVICE_HIDDEN_FOR_ENTERPRISE, self).__init__()
+
+    def get_scheme(self):
+        scheme = smi.Scheme('service_hidden_for_enterprise')
+        scheme.description = 'Service hidden for enterprise'
+        scheme.use_external_validation = True
+        scheme.streaming_mode_xml = True
+        scheme.use_single_instance = False
+
+        scheme.add_argument(
+            smi.Argument(
+                'name',
+                title='Name',
+                description='Name',
+                required_on_create=True
+            )
+        )
+        return scheme
+
+    def validate_input(self, definition: smi.ValidationDefinition):
+        return
+
+    def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
+        input_items = [{'count': len(inputs.inputs)}]
+        for input_name, input_item in inputs.inputs.items():
+            input_item['name'] = input_name
+            input_items.append(input_item)
+        event = smi.Event(
+            data=json.dumps(input_items),
+            sourcetype='service_hidden_for_enterprise',
+        )
+        ew.write_event(event)
+
+
+if __name__ == '__main__':
+    exit_code = SERVICE_HIDDEN_FOR_ENTERPRISE().run(sys.argv)
+    sys.exit(exit_code)
\ No newline at end of file
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
index 4a5fe98b1..b20d18977 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_account.py
@@ -14,6 +14,24 @@
 util.remove_http_proxy_env_vars()
 
 
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.AllOf(
+            validator.String(
+                max_len=50,
+                min_len=1,
+            ),
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""",
+            )
+        )
+    )
+]
+
 fields = [
     field.RestField(
         'custom_endpoint',
@@ -29,6 +47,20 @@
         default=None,
         validator=None
     ), 
+    field.RestField(
+        'text_field_hidden_for_cloud',
+        required=False,
+        encrypted=False,
+        default=None,
+        validator=None
+    ),
+    field.RestField(
+        'text_field_hidden_for_enterprise',
+        required=False,
+        encrypted=False,
+        default=None,
+        validator=None
+    ),
     field.RestField(
         'url',
         required=False,
@@ -106,7 +138,15 @@
         required=False,
         encrypted=False,
         default=None,
-        validator=None
+        validator=validator.AllOf(
+            validator.String(
+                max_len=4096, 
+                min_len=10, 
+            ), 
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""", 
+            )
+        )
     ), 
     field.RestField(
         'client_id',
@@ -179,7 +219,7 @@
         validator=None
     )
 ]
-model = RestModel(fields, name=None)
+model = RestModel(fields, name=None, special_fields=special_fields)
 
 
 endpoint = SingleModel(
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_four.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_four.py
index e16d4c802..c2ff5209f 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_four.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_four.py
@@ -8,12 +8,30 @@
     DataInputModel,
 )
 from splunktaucclib.rest_handler import admin_external, util
-from splunk_ta_uccexample_custom_rh import CustomRestHandler
+from splunktaucclib.rest_handler.admin_external import AdminExternalHandler
 import logging
 
 util.remove_http_proxy_env_vars()
 
 
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.AllOf(
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""",
+            ),
+            validator.String(
+                max_len=100,
+                min_len=1,
+            )
+        )
+    )
+]
+
 fields = [
     field.RestField(
         'interval',
@@ -21,7 +39,7 @@
         encrypted=False,
         default=None,
         validator=validator.Pattern(
-            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""",
+            regex=r"""^((?:-1|\d+(?:\.\d+)?)|(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+))$""",
         )
     ), 
 
@@ -32,7 +50,7 @@
     )
 
 ]
-model = RestModel(fields, name=None)
+model = RestModel(fields, name=None, special_fields=special_fields)
 
 
 
@@ -46,5 +64,5 @@
     logging.getLogger().addHandler(logging.NullHandler())
     admin_external.handle(
         endpoint,
-        handler=CustomRestHandler,
+        handler=AdminExternalHandler,
     )
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_one.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_one.py
index 56f85c4c4..a5ecdc489 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_one.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_one.py
@@ -14,6 +14,24 @@
 util.remove_http_proxy_env_vars()
 
 
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.AllOf(
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""",
+            ),
+            validator.String(
+                max_len=100,
+                min_len=1,
+            )
+        )
+    )
+]
+
 fields = [
     field.RestField(
         'input_one_checkbox',
@@ -49,7 +67,7 @@
         encrypted=False,
         default=None,
         validator=validator.Pattern(
-            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""",
+            regex=r"""^((?:-1|\d+(?:\.\d+)?)|(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+))$""",
         )
     ), 
     field.RestField(
@@ -161,7 +179,7 @@
     )
 
 ]
-model = RestModel(fields, name=None)
+model = RestModel(fields, name=None, special_fields=special_fields)
 
 
 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_two.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_two.py
index eb23cedcd..80115f394 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_two.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_example_input_two.py
@@ -14,6 +14,24 @@
 util.remove_http_proxy_env_vars()
 
 
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.AllOf(
+            validator.Pattern(
+                regex=r"""^[a-zA-Z]\w*$""",
+            ),
+            validator.String(
+                max_len=100,
+                min_len=1,
+            )
+        )
+    )
+]
+
 fields = [
     field.RestField(
         'interval',
@@ -21,7 +39,7 @@
         encrypted=False,
         default=None,
         validator=validator.Pattern(
-            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""",
+            regex=r"""^((?:-1|\d+(?:\.\d+)?)|(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+))$""",
         )
     ), 
     field.RestField(
@@ -46,6 +64,20 @@
         default=None,
         validator=None
     ), 
+    field.RestField(
+        'input_two_text_hidden_for_cloud',
+        required=False,
+        encrypted=False,
+        default=None,
+        validator=None
+    ),
+    field.RestField(
+        'input_two_text_hidden_for_enterprise',
+        required=False,
+        encrypted=False,
+        default=None,
+        validator=None
+    ), 
     field.RestField(
         'input_two_multiple_select',
         required=True,
@@ -119,7 +151,7 @@
     )
 
 ]
-model = RestModel(fields, name=None)
+model = RestModel(fields, name=None, special_fields=special_fields)
 
 
 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_cloud.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_cloud.py
new file mode 100644
index 000000000..e0edf2655
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_cloud.py
@@ -0,0 +1,50 @@
+
+import import_declare_test
+
+from splunktaucclib.rest_handler.endpoint import (
+    field,
+    validator,
+    RestModel,
+    DataInputModel,
+)
+from splunktaucclib.rest_handler import admin_external, util
+from splunktaucclib.rest_handler.admin_external import AdminExternalHandler
+import logging
+
+util.remove_http_proxy_env_vars()
+
+
+fields = [
+    field.RestField(
+        'interval',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.Pattern(
+            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""", 
+        )
+    ), 
+
+    field.RestField(
+        'disabled',
+        required=False,
+        validator=None
+    )
+
+]
+model = RestModel(fields, name=None)
+
+
+
+endpoint = DataInputModel(
+    'service_hidden_for_cloud',
+    model,
+)
+
+
+if __name__ == '__main__':
+    logging.getLogger().addHandler(logging.NullHandler())
+    admin_external.handle(
+        endpoint,
+        handler=AdminExternalHandler,
+    )
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_enterprise.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_enterprise.py
new file mode 100644
index 000000000..45d29f7f9
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_service_hidden_for_enterprise.py
@@ -0,0 +1,50 @@
+
+import import_declare_test
+
+from splunktaucclib.rest_handler.endpoint import (
+    field,
+    validator,
+    RestModel,
+    DataInputModel,
+)
+from splunktaucclib.rest_handler import admin_external, util
+from splunktaucclib.rest_handler.admin_external import AdminExternalHandler
+import logging
+
+util.remove_http_proxy_env_vars()
+
+
+fields = [
+    field.RestField(
+        'interval',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.Pattern(
+            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""", 
+        )
+    ), 
+
+    field.RestField(
+        'disabled',
+        required=False,
+        validator=None
+    )
+
+]
+model = RestModel(fields, name=None)
+
+
+
+endpoint = DataInputModel(
+    'service_hidden_for_enterprise',
+    model,
+)
+
+
+if __name__ == '__main__':
+    logging.getLogger().addHandler(logging.NullHandler())
+    admin_external.handle(
+        endpoint,
+        handler=AdminExternalHandler,
+    )
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_cloud.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_cloud.py
new file mode 100644
index 000000000..066a51792
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_cloud.py
@@ -0,0 +1,44 @@
+
+import import_declare_test
+
+from splunktaucclib.rest_handler.endpoint import (
+    field,
+    validator,
+    RestModel,
+    SingleModel,
+)
+from splunktaucclib.rest_handler import admin_external, util
+from splunktaucclib.rest_handler.admin_external import AdminExternalHandler
+import logging
+
+util.remove_http_proxy_env_vars()
+
+
+fields = [
+    field.RestField(
+        'text_test',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.String(
+            max_len=100, 
+            min_len=1, 
+        )
+    )
+]
+model = RestModel(fields, name=None)
+
+
+endpoint = SingleModel(
+    'splunk_ta_uccexample_tab_hidden_for_cloud',
+    model,
+    config_name='tab_hidden_for_cloud'
+)
+
+
+if __name__ == '__main__':
+    logging.getLogger().addHandler(logging.NullHandler())
+    admin_external.handle(
+        endpoint,
+        handler=AdminExternalHandler,
+    )
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_enterprise.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_enterprise.py
new file mode 100644
index 000000000..79bc91ea5
--- /dev/null
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_tab_hidden_for_enterprise.py
@@ -0,0 +1,44 @@
+
+import import_declare_test
+
+from splunktaucclib.rest_handler.endpoint import (
+    field,
+    validator,
+    RestModel,
+    SingleModel,
+)
+from splunktaucclib.rest_handler import admin_external, util
+from splunktaucclib.rest_handler.admin_external import AdminExternalHandler
+import logging
+
+util.remove_http_proxy_env_vars()
+
+
+fields = [
+    field.RestField(
+        'text_test',
+        required=True,
+        encrypted=False,
+        default=None,
+        validator=validator.String(
+            max_len=100, 
+            min_len=1, 
+        )
+    )
+]
+model = RestModel(fields, name=None)
+
+
+endpoint = SingleModel(
+    'splunk_ta_uccexample_tab_hidden_for_enterprise',
+    model,
+    config_name='tab_hidden_for_enterprise'
+)
+
+
+if __name__ == '__main__':
+    logging.getLogger().addHandler(logging.NullHandler())
+    admin_external.handle(
+        endpoint,
+        handler=AdminExternalHandler,
+    )
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_three_custom.py b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_three_custom.py
index 95f8fba67..8851896c6 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_three_custom.py
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/bin/splunk_ta_uccexample_rh_three_custom.py
@@ -20,7 +20,7 @@
         encrypted=False,
         default=None,
         validator=validator.Pattern(
-            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""",
+            regex=r"""^((?:-1|\d+(?:\.\d+)?)|(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+))$""",
         )
     ),
 
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/app.conf b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/app.conf
index 43eac7e46..224bb0043 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/app.conf
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/app.conf
@@ -23,6 +23,8 @@ version = 5.5.8R5fd76615
 
 [triggers]
 reload.splunk_ta_uccexample_settings = simple
-reload.splunk_ta_uccexample_custom_row_tab = simple
 reload.splunk_ta_uccexample_account = simple
-reload.splunk_ta_uccexample_oauth = simple
\ No newline at end of file
+reload.splunk_ta_uccexample_custom_row_tab = simple
+reload.splunk_ta_uccexample_tab_hidden_for_cloud = simple
+reload.splunk_ta_uccexample_tab_hidden_for_enterprise = simple
+reload.splunk_ta_uccexample_oauth = simple
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/inputs.conf b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/inputs.conf
index d4a3fafbc..8076a01e8 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/inputs.conf
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/inputs.conf
@@ -8,4 +8,10 @@ python.version = python3
 python.version = python3
 
 [example_input_four]
+python.version = python3
+
+[service_hidden_for_cloud]
+python.version = python3
+
+[service_hidden_for_enterprise]
 python.version = python3
\ No newline at end of file
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/restmap.conf b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/restmap.conf
index bb52c332d..7288f0873 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/restmap.conf
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/restmap.conf
@@ -1,6 +1,6 @@
 [admin:splunk_ta_uccexample]
 match = /
-members = splunk_ta_uccexample_account, splunk_ta_uccexample_custom_row_tab, splunk_ta_uccexample_example_input_four, splunk_ta_uccexample_example_input_one, splunk_ta_uccexample_example_input_three, splunk_ta_uccexample_example_input_two, splunk_ta_uccexample_oauth, splunk_ta_uccexample_settings
+members = splunk_ta_uccexample_account, splunk_ta_uccexample_custom_row_tab, splunk_ta_uccexample_example_input_four, splunk_ta_uccexample_example_input_one, splunk_ta_uccexample_example_input_three, splunk_ta_uccexample_example_input_two, splunk_ta_uccexample_oauth, splunk_ta_uccexample_service_hidden_for_cloud, splunk_ta_uccexample_service_hidden_for_enterprise, splunk_ta_uccexample_settings, splunk_ta_uccexample_tab_hidden_for_cloud, splunk_ta_uccexample_tab_hidden_for_enterprise
 
 [admin_external:splunk_ta_uccexample_account]
 handlertype = python
@@ -23,6 +23,20 @@ handlerfile = splunk_ta_uccexample_rh_custom_row_tab.py
 handleractions = edit, list, remove, create
 handlerpersistentmode = true
 
+[admin_external:splunk_ta_uccexample_tab_hidden_for_cloud]
+handlertype = python
+python.version = python3
+handlerfile = splunk_ta_uccexample_rh_tab_hidden_for_cloud.py
+handleractions = edit, list, remove, create
+handlerpersistentmode = true
+
+[admin_external:splunk_ta_uccexample_tab_hidden_for_enterprise]
+handlertype = python
+python.version = python3
+handlerfile = splunk_ta_uccexample_rh_tab_hidden_for_enterprise.py
+handleractions = edit, list, remove, create
+handlerpersistentmode = true
+
 [admin_external:splunk_ta_uccexample_settings]
 handlertype = python
 python.version = python3
@@ -56,4 +70,18 @@ handlertype = python
 python.version = python3
 handlerfile = splunk_ta_uccexample_rh_example_input_four.py
 handleractions = edit, list, remove, create
+handlerpersistentmode = true
+
+[admin_external:splunk_ta_uccexample_service_hidden_for_cloud]
+handlertype = python
+python.version = python3
+handlerfile = splunk_ta_uccexample_rh_service_hidden_for_cloud.py
+handleractions = edit, list, remove, create
+handlerpersistentmode = true
+
+[admin_external:splunk_ta_uccexample_service_hidden_for_enterprise]
+handlertype = python
+python.version = python3
+handlerfile = splunk_ta_uccexample_rh_service_hidden_for_enterprise.py
+handleractions = edit, list, remove, create
 handlerpersistentmode = true
\ No newline at end of file
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/server.conf b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/server.conf
index 4b6d9efc2..e9d4b4da6 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/server.conf
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/server.conf
@@ -2,4 +2,6 @@
 conf_replication_include.splunk_ta_uccexample_settings = true
 conf_replication_include.splunk_ta_uccexample_account = true
 conf_replication_include.splunk_ta_uccexample_custom_row_tab = true
-conf_replication_include.splunk_ta_uccexample_oauth = true
\ No newline at end of file
+conf_replication_include.splunk_ta_uccexample_tab_hidden_for_cloud = true
+conf_replication_include.splunk_ta_uccexample_tab_hidden_for_enterprise = true
+conf_replication_include.splunk_ta_uccexample_oauth = true
diff --git a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/web.conf b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/web.conf
index 55b9e5ee3..94219210c 100644
--- a/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/web.conf
+++ b/tests/testdata/expected_addons/expected_output_global_config_everything/Splunk_TA_UCCExample/default/web.conf
@@ -22,6 +22,22 @@ methods = POST, GET
 pattern = splunk_ta_uccexample_custom_row_tab/*
 methods = POST, GET, DELETE
 
+[expose:splunk_ta_uccexample_tab_hidden_for_cloud]
+pattern = splunk_ta_uccexample_tab_hidden_for_cloud
+methods = POST, GET
+
+[expose:splunk_ta_uccexample_tab_hidden_for_cloud_specified]
+pattern = splunk_ta_uccexample_tab_hidden_for_cloud/*
+methods = POST, GET, DELETE
+
+[expose:splunk_ta_uccexample_tab_hidden_for_enterprise]
+pattern = splunk_ta_uccexample_tab_hidden_for_enterprise
+methods = POST, GET
+
+[expose:splunk_ta_uccexample_tab_hidden_for_enterprise_specified]
+pattern = splunk_ta_uccexample_tab_hidden_for_enterprise/*
+methods = POST, GET, DELETE
+
 [expose:splunk_ta_uccexample_settings]
 pattern = splunk_ta_uccexample_settings
 methods = POST, GET
@@ -60,4 +76,20 @@ methods = POST, GET
 
 [expose:splunk_ta_uccexample_example_input_four_specified]
 pattern = splunk_ta_uccexample_example_input_four/*
+methods = POST, GET, DELETE
+
+[expose:splunk_ta_uccexample_service_hidden_for_cloud]
+pattern = splunk_ta_uccexample_service_hidden_for_cloud
+methods = POST, GET
+
+[expose:splunk_ta_uccexample_service_hidden_for_cloud_specified]
+pattern = splunk_ta_uccexample_service_hidden_for_cloud/*
+methods = POST, GET, DELETE
+
+[expose:splunk_ta_uccexample_service_hidden_for_enterprise]
+pattern = splunk_ta_uccexample_service_hidden_for_enterprise
+methods = POST, GET
+
+[expose:splunk_ta_uccexample_service_hidden_for_enterprise_specified]
+pattern = splunk_ta_uccexample_service_hidden_for_enterprise/*
 methods = POST, GET, DELETE
\ No newline at end of file
diff --git a/tests/testdata/test_addons/package_files_conflict_test/globalConfig.json b/tests/testdata/test_addons/package_files_conflict_test/globalConfig.json
index 01a66587f..068ef21d5 100644
--- a/tests/testdata/test_addons/package_files_conflict_test/globalConfig.json
+++ b/tests/testdata/test_addons/package_files_conflict_test/globalConfig.json
@@ -200,9 +200,9 @@
     "meta": {
         "name": "test_addon",
         "restRoot": "test_addon",
-        "version": "5.47.0Ra2b585f01",
+        "version": "5.50.1+8cbb9b3c",
         "displayName": "This is my add-on",
-        "schemaVersion": "0.0.7",
-        "_uccVersion": "5.47.0"
+        "schemaVersion": "0.0.8",
+        "_uccVersion": "5.50.1"
     }
 }
diff --git a/tests/testdata/test_addons/package_global_config_configuration/globalConfig.json b/tests/testdata/test_addons/package_global_config_configuration/globalConfig.json
index 0fb22950a..205374eab 100644
--- a/tests/testdata/test_addons/package_global_config_configuration/globalConfig.json
+++ b/tests/testdata/test_addons/package_global_config_configuration/globalConfig.json
@@ -388,6 +388,6 @@
         "version": "1.1.1",
         "displayName": "Splunk UCC test Add-on",
         "schemaVersion": "0.0.7",
-        "_uccVersion": "5.48.1"
+        "_uccVersion": "5.50.1"
     }
 }
diff --git a/tests/testdata/test_addons/package_global_config_everything/globalConfig.json b/tests/testdata/test_addons/package_global_config_everything/globalConfig.json
index fc533e5fc..a9f76ba24 100644
--- a/tests/testdata/test_addons/package_global_config_everything/globalConfig.json
+++ b/tests/testdata/test_addons/package_global_config_everything/globalConfig.json
@@ -90,6 +90,24 @@
                                 "requiredWhenVisible": true
                             }
                         },
+                        {
+                            "type": "text",
+                            "label": "Example text hidden for cloud",
+                            "help": "Enter text for field hidden for cloud",
+                            "field": "text_field_hidden_for_cloud",
+                            "options": {
+                                "hideForPlatform": "cloud"
+                            }
+                        },
+                        {
+                            "type": "text",
+                            "label": "Example text hidden for enterprise",
+                            "help": "Enter text for field hidden for enterprise",
+                            "field": "text_field_hidden_for_enterprise",
+                            "options": {
+                                "hideForPlatform": "enterprise"
+                            }
+                        },
                         {
                             "field": "url",
                             "label": "URL",
@@ -275,12 +293,25 @@
                                     {
                                         "oauth_field": "some_text",
                                         "label": "Disabled on edit for oauth",
-                                        "help": "Enter text for field disabled on edit",
+                                        "help": "Enter text for field disabled on edit, no special characters allowed",
                                         "field": "basic_oauth_text",
                                         "required": false,
                                         "options": {
                                             "disableonEdit": true
-                                        }
+                                        },
+                                        "validators": [
+                                            {
+                                                "type": "string",
+                                                "errorMsg": "Length should be between 10 and 4096",
+                                                "minLength": 10,
+                                                "maxLength": 4096
+                                            },
+                                            {
+                                                "type": "regex",
+                                                "errorMsg": "Do not use special characters",
+                                                "pattern": "^[a-zA-Z]\\w*$"
+                                            }
+                                        ]
                                     }
                                 ],
                                 "oauth": [
@@ -696,6 +727,142 @@
                         }
                     ],
                     "title": "Custom table row"
+                },
+                {
+                    "name": "tab_hidden_for_cloud",
+                    "table": {
+                        "actions": [
+                            "edit",
+                            "delete",
+                            "clone"
+                        ],
+                        "header": [
+                            {
+                                "label": "Name",
+                                "field": "name"
+                            },
+                            {
+                                "label": "Text Test",
+                                "field": "text_test"
+                            }
+                        ],
+                        "moreInfo": [
+                            {
+                                "field": "name",
+                                "label": "Name"
+                            },
+                            {
+                                "field": "text_test",
+                                "label": "Text Test"
+                            }
+                        ]
+                    },
+                    "entity": [
+                        {
+                            "type": "text",
+                            "label": "Name",
+                            "validators": [
+                                {
+                                    "type": "string",
+                                    "errorMsg": "Length of ID should be between 1 and 50",
+                                    "minLength": 1,
+                                    "maxLength": 50
+                                },
+                                {
+                                    "type": "regex",
+                                    "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.",
+                                    "pattern": "^[a-zA-Z]\\w*$"
+                                }
+                            ],
+                            "field": "name",
+                            "help": "Enter a unique name for this account.",
+                            "required": true
+                        },
+                        {
+                            "field": "text_test",
+                            "label": "Text Test",
+                            "help": "This is a text test",
+                            "type": "text",
+                            "validators": [
+                                {
+                                    "type": "string",
+                                    "minLength": 1,
+                                    "maxLength": 100
+                                }
+                            ],
+                            "required": true
+                        }
+                    ],
+                    "title": "Tab hidden for cloud",
+                    "hideForPlatform": "cloud"
+                },
+                {
+                    "name": "tab_hidden_for_enterprise",
+                    "table": {
+                        "actions": [
+                            "edit",
+                            "delete",
+                            "clone"
+                        ],
+                        "header": [
+                            {
+                                "label": "Name",
+                                "field": "name"
+                            },
+                            {
+                                "label": "Text Test",
+                                "field": "text_test"
+                            }
+                        ],
+                        "moreInfo": [
+                            {
+                                "field": "name",
+                                "label": "Name"
+                            },
+                            {
+                                "field": "text_test",
+                                "label": "Text Test"
+                            }
+                        ]
+                    },
+                    "entity": [
+                        {
+                            "type": "text",
+                            "label": "Name",
+                            "validators": [
+                                {
+                                    "type": "string",
+                                    "errorMsg": "Length of ID should be between 1 and 50",
+                                    "minLength": 1,
+                                    "maxLength": 50
+                                },
+                                {
+                                    "type": "regex",
+                                    "errorMsg": "Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.",
+                                    "pattern": "^[a-zA-Z]\\w*$"
+                                }
+                            ],
+                            "field": "name",
+                            "help": "Enter a unique name for this account.",
+                            "required": true
+                        },
+                        {
+                            "field": "text_test",
+                            "label": "Text Test",
+                            "help": "This is a text test",
+                            "type": "text",
+                            "validators": [
+                                {
+                                    "type": "string",
+                                    "minLength": 1,
+                                    "maxLength": 100
+                                }
+                            ],
+                            "required": true
+                        }
+                    ],
+                    "title": "Tab hidden for enterprise",
+                    "hideForPlatform": "enterprise"
                 }
             ],
             "title": "Configuration",
@@ -1055,6 +1222,28 @@
                             "field": "account",
                             "required": true
                         },
+                        {
+                            "type": "text",
+                            "label": "Text input hidden for cloud",
+                            "field": "input_two_text_hidden_for_cloud",
+                            "help": "Should be hidden for cloud",
+                            "tooltip": "Should be hidden for cloud",
+                            "required": false,
+                            "options": {
+                                "hideForPlatform": "cloud"
+                            }
+                        },
+                        {
+                            "type": "text",
+                            "label": "Text input hidden for enterprise",
+                            "field": "input_two_text_hidden_for_enterprise",
+                            "help": "Should be hidden for enterprise",
+                            "tooltip": "Should be hidden for enterprise",
+                            "required": false,
+                            "options": {
+                                "hideForPlatform": "enterprise"
+                            }
+                        },
                         {
                             "type": "multipleSelect",
                             "label": "Example Multiple Select",
@@ -1358,8 +1547,6 @@
                 },
                 {
                     "name": "example_input_four",
-                    "restHandlerModule": "splunk_ta_uccexample_custom_rh",
-                    "restHandlerClass": "CustomRestHandler",
                     "entity": [
                         {
                             "type": "text",
@@ -1390,6 +1577,74 @@
                         }
                     ],
                     "title": "Example Input Four"
+                },
+                {
+                    "name": "service_hidden_for_cloud",
+                    "entity": [
+                        {
+                            "type": "text",
+                            "label": "Name",
+                            "validators": [
+                                {
+                                    "type": "regex",
+                                    "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.",
+                                    "pattern": "^[a-zA-Z]\\w*$"
+                                },
+                                {
+                                    "type": "string",
+                                    "errorMsg": "Length of input name should be between 1 and 100",
+                                    "minLength": 1,
+                                    "maxLength": 100
+                                }
+                            ],
+                            "field": "name",
+                            "help": "A unique name for the data input.",
+                            "required": true
+                        },
+                        {
+                            "type": "interval",
+                            "field": "interval",
+                            "label": "Interval",
+                            "help": "Time interval of the data input, in seconds.",
+                            "required": true
+                        }
+                    ],
+                    "title": "Service hidden for cloud",
+                    "hideForPlatform": "cloud"
+                },
+                {
+                    "name": "service_hidden_for_enterprise",
+                    "entity": [
+                        {
+                            "type": "text",
+                            "label": "Name",
+                            "validators": [
+                                {
+                                    "type": "regex",
+                                    "errorMsg": "Input Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.",
+                                    "pattern": "^[a-zA-Z]\\w*$"
+                                },
+                                {
+                                    "type": "string",
+                                    "errorMsg": "Length of input name should be between 1 and 100",
+                                    "minLength": 1,
+                                    "maxLength": 100
+                                }
+                            ],
+                            "field": "name",
+                            "help": "A unique name for the data input.",
+                            "required": true
+                        },
+                        {
+                            "type": "interval",
+                            "field": "interval",
+                            "label": "Interval",
+                            "help": "Time interval of the data input, in seconds.",
+                            "required": true
+                        }
+                    ],
+                    "title": "Service hidden for enterprise",
+                    "hideForPlatform": "enterprise"
                 }
             ],
             "title": "Inputs",
@@ -1622,10 +1877,10 @@
     "meta": {
         "name": "Splunk_TA_UCCExample",
         "restRoot": "splunk_ta_uccexample",
-        "version": "5.50.0R6465f0b6a",
+        "version": "5.50.1+b4cfdcd44",
         "displayName": "Splunk UCC test Add-on",
         "schemaVersion": "0.0.8",
-        "_uccVersion": "5.50.0",
+        "_uccVersion": "5.50.1",
         "supportedThemes": [
             "light",
             "dark"
diff --git a/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_four.py b/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_four.py
new file mode 100644
index 000000000..394f74826
--- /dev/null
+++ b/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_four.py
@@ -0,0 +1,61 @@
+import import_declare_test
+
+import json
+import sys
+from time import time
+
+from splunklib import modularinput as smi
+from solnlib import log
+
+logger = log.Logs().get_logger('splunk_ta_uccexample_four')
+
+
+class EXAMPLE_INPUT_FOUR(smi.Script):
+    def __init__(self):
+        super(EXAMPLE_INPUT_FOUR, self).__init__()
+
+    def get_scheme(self):
+        scheme = smi.Scheme('example_input_four')
+        scheme.description = 'Example Input Four'
+        scheme.use_external_validation = True
+        scheme.streaming_mode_xml = True
+        scheme.use_single_instance = False
+
+        scheme.add_argument(
+            smi.Argument(
+                'name',
+                title='Name',
+                description='Name',
+                required_on_create=True
+            )
+        )
+        return scheme
+
+    def validate_input(self, definition: smi.ValidationDefinition):
+        return
+
+    def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
+        input_items = [{'count': len(inputs.inputs)}]
+        input_name_1 = ""
+        for input_name, input_item in inputs.inputs.items():
+            input_item['name'] = input_name
+            input_name_1 = input_name
+            input_items.append(input_item)
+        
+        sourcetype = f'example_input_four-st--{input_name_1.split("://")[-1]}'
+        host = f'host--{input_name_1.split("://")[-1]}'
+
+        event = smi.Event(
+            data=json.dumps(input_items),
+            sourcetype=sourcetype,
+            host=host,
+            source=input_name_1,
+        )
+        log.events_ingested(logger, input_name_1, sourcetype,
+                            str(time())[-3:], "main", "no_account_4", host)
+        ew.write_event(event)
+
+
+if __name__ == '__main__':
+    exit_code = EXAMPLE_INPUT_FOUR().run(sys.argv)
+    sys.exit(exit_code)
\ No newline at end of file
diff --git a/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_three.py b/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_three.py
new file mode 100644
index 000000000..c5f4d1cf1
--- /dev/null
+++ b/tests/testdata/test_addons/package_global_config_everything/package/bin/example_input_three.py
@@ -0,0 +1,62 @@
+import import_declare_test
+
+import json
+import sys
+from time import time
+
+from splunklib import modularinput as smi
+from solnlib import log
+
+logger = log.Logs().get_logger('splunk_ta_uccexample_three')
+
+
+class EXAMPLE_INPUT_THREE(smi.Script):
+    def __init__(self):
+        super(EXAMPLE_INPUT_THREE, self).__init__()
+
+    def get_scheme(self):
+        scheme = smi.Scheme('example_input_three')
+        scheme.description = 'Example Input Three'
+        scheme.use_external_validation = True
+        scheme.streaming_mode_xml = True
+        scheme.use_single_instance = False
+
+        scheme.add_argument(
+            smi.Argument(
+                'name',
+                title='Name',
+                description='Name',
+                required_on_create=True
+            )
+        )
+        return scheme
+
+    def validate_input(self, definition: smi.ValidationDefinition):
+        return
+
+    def stream_events(self, inputs: smi.InputDefinition, ew: smi.EventWriter):
+        input_items = [{'count': len(inputs.inputs)}]
+        input_name_1 = ""
+        for input_name, input_item in inputs.inputs.items():
+            input_item['name'] = input_name
+            input_name_1 = input_name
+            input_items.append(input_item)
+        
+        sourcetype = f'example_input_three-st--{input_name_1.split("://")[-1]}'
+        host = f'host--{input_name_1.split("://")[-1]}'
+        source = f'example_input_three-s--{input_name_1.split("://")[-1]}'
+
+        event = smi.Event(
+            data=json.dumps(input_items),
+            sourcetype=sourcetype,
+            host=host,
+            source=source,
+        )
+        log.events_ingested(logger, input_name_1, sourcetype,
+                            str(time())[-3:], "main", "no_account_4", host)
+        ew.write_event(event)
+
+
+if __name__ == '__main__':
+    exit_code = EXAMPLE_INPUT_THREE().run(sys.argv)
+    sys.exit(exit_code)
\ No newline at end of file
diff --git a/tests/testdata/test_addons/package_global_config_everything/package/bin/splunk_ta_uccexample_rh_three_custom.py b/tests/testdata/test_addons/package_global_config_everything/package/bin/splunk_ta_uccexample_rh_three_custom.py
index 95f8fba67..8851896c6 100644
--- a/tests/testdata/test_addons/package_global_config_everything/package/bin/splunk_ta_uccexample_rh_three_custom.py
+++ b/tests/testdata/test_addons/package_global_config_everything/package/bin/splunk_ta_uccexample_rh_three_custom.py
@@ -20,7 +20,7 @@
         encrypted=False,
         default=None,
         validator=validator.Pattern(
-            regex=r"""^(?:-1|\d+(?:\.\d+)?)$""",
+            regex=r"""^((?:-1|\d+(?:\.\d+)?)|(([\*\d{1,2}\,\-\/]+\s){4}[\*\d{1,2}\,\-\/]+))$""",
         )
     ),
 
diff --git a/tests/testdata/test_addons/package_global_config_everything_uccignore/globalConfig.json b/tests/testdata/test_addons/package_global_config_everything_uccignore/globalConfig.json
index 876715e14..1db454358 100644
--- a/tests/testdata/test_addons/package_global_config_everything_uccignore/globalConfig.json
+++ b/tests/testdata/test_addons/package_global_config_everything_uccignore/globalConfig.json
@@ -1172,9 +1172,9 @@
     "meta": {
         "name": "Splunk_TA_UCCExample",
         "restRoot": "splunk_ta_uccexample",
-        "version": "5.47.0Ra2b585f01",
+        "version": "5.50.1+8cbb9b3c",
         "displayName": "Splunk UCC test Add-on",
-        "schemaVersion": "0.0.7",
-        "_uccVersion": "5.47.0"
+        "schemaVersion": "0.0.8",
+        "_uccVersion": "5.50.1"
     }
 }
diff --git a/tests/testdata/test_addons/package_global_config_multi_input/globalConfig.json b/tests/testdata/test_addons/package_global_config_multi_input/globalConfig.json
index f57f50d37..15fcebe8e 100644
--- a/tests/testdata/test_addons/package_global_config_multi_input/globalConfig.json
+++ b/tests/testdata/test_addons/package_global_config_multi_input/globalConfig.json
@@ -399,10 +399,18 @@
                         "moreInfo": []
                     },
                     "warning": {
-                        "create": "Warning text for create mode",
-                        "edit": "Warning text for edit mode",
-                        "clone": "Warning text for clone mode",
-                        "config": "Warning text for config mode"
+                      "create": {
+                        "message": "Warning text for create mode"
+                      },
+                      "edit": {
+                        "message": "Warning text for edit mode"
+                      },
+                      "clone": {
+                        "message": "Warning text for clone mode"
+                      },
+                      "config": {
+                        "message": "Warning text for config mode"
+                      }
                     }
                 },
                 {
@@ -424,6 +432,48 @@
                             "src": "custom_row"
                         }
                     }
+                },
+                {
+                    "name": "example_input_three",
+                    "description": "Input hidden for cloud",
+                    "title": "Example Input Three Hidden Cloud",
+                    "entity": [],
+                    "table": {
+                        "actions": [
+                            "edit",
+                            "enable",
+                            "delete",
+                            "clone"
+                        ],
+                        "header": [],
+                        "moreInfo": [],
+                        "customRow": {
+                            "type": "external",
+                            "src": "custom_row"
+                        }
+                    },
+                    "hideForPlatform": "cloud"
+                },
+                {
+                    "name": "example_input_four",
+                    "description": "Input hidden for enterprise",
+                    "title": "Example Input Four Hidden Enterprise",
+                    "entity": [],
+                    "table": {
+                        "actions": [
+                            "edit",
+                            "enable",
+                            "delete",
+                            "clone"
+                        ],
+                        "header": [],
+                        "moreInfo": [],
+                        "customRow": {
+                            "type": "external",
+                            "src": "custom_row"
+                        }
+                    },
+                    "hideForPlatform": "enterprise"
                 }
             ]
         }
@@ -431,9 +481,9 @@
     "meta": {
         "name": "Splunk_TA_UCCExample",
         "restRoot": "splunk_ta_uccexample",
-        "version": "5.47.0Ra2b585f01",
+        "version": "5.50.1+8cbb9b3c",
         "displayName": "Splunk UCC test Add-on",
-        "schemaVersion": "0.0.7",
-        "_uccVersion": "5.47.0"
+        "schemaVersion": "0.0.8",
+        "_uccVersion": "5.50.1"
     }
 }
diff --git a/tests/testdata/test_addons/package_global_config_only_one_tab/globalConfig.json b/tests/testdata/test_addons/package_global_config_only_one_tab/globalConfig.json
index 65ba94431..a7dd3727c 100644
--- a/tests/testdata/test_addons/package_global_config_only_one_tab/globalConfig.json
+++ b/tests/testdata/test_addons/package_global_config_only_one_tab/globalConfig.json
@@ -36,9 +36,9 @@
     "meta": {
         "name": "Splunk_TA_UCCExample",
         "restRoot": "splunk_ta_uccexample",
-        "version": "5.47.0Ra2b585f01",
+        "version": "5.50.1+8cbb9b3c",
         "displayName": "Splunk UCC test Add-on",
         "schemaVersion": "0.0.7",
-        "_uccVersion": "5.47.0"
+        "_uccVersion": "5.50.1"
     }
 }
diff --git a/tests/ui/pages/account_page.py b/tests/ui/pages/account_page.py
index 843c6472a..648259bde 100644
--- a/tests/ui/pages/account_page.py
+++ b/tests/ui/pages/account_page.py
@@ -90,6 +90,12 @@ def __init__(self, browser, container):
             browser,
             Selector(select='[data-test="control-group"][data-name="redirect_url"]'),
         )
+        self.basic_oauth_text = TextBox(
+            browser,
+            Selector(
+                select='[data-test="control-group"][data-name="basic_oauth_text"]'
+            ),
+        )
         self.search_query = TextBox(
             browser, Selector(select='[data-test="textbox"][role="textbox"]')
         )
diff --git a/tests/ui/pytest.ini b/tests/ui/pytest.ini
index 93db811aa..fc9dbbcf1 100644
--- a/tests/ui/pytest.ini
+++ b/tests/ui/pytest.ini
@@ -5,7 +5,7 @@ addopts = -vv
           --splunk-host=localhost
           --splunk-user=admin
           --splunk-password=Chang3d!
-          --splunk-hec-token=9b741d03-43e9-4164-908b-e09102327d22
+          --splunk-hec-token=4a8a737d-5452-426c-a6f7-106dca4e813f
           --browser=chrome
           --local
           --persist-browser
@@ -24,3 +24,4 @@ markers =
     execute_enterprise_cloud_false: tests not to be executed on enterprise cloud
     forwarder: tests to be run on forwarder/standalone
     sanity_test: tests for sanity check of addons
+    configuration: tests related to the configuration tab
diff --git a/tests/ui/test_configuration_page_account_tab.py b/tests/ui/test_configuration_page_account_tab.py
index 9bdc745d0..6617ff7d4 100644
--- a/tests/ui/test_configuration_page_account_tab.py
+++ b/tests/ui/test_configuration_page_account_tab.py
@@ -1189,3 +1189,84 @@ def test_account_url_validation(
             account.entity.save(expect_error=True),
             "Invalid URL provided. URL should start with 'https' as only secure URLs are supported. Provide URL in this format",  # noqa: E501
         )
+
+    @pytest.mark.execute_enterprise_cloud_true
+    @pytest.mark.forwarder
+    @pytest.mark.input
+    def test_example_validation_of_oauth_fields_too_short(
+        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper
+    ):
+        """Verifies required field client id"""
+        account = AccountPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)
+        account.entity.open()
+        account.entity.name.set_value(_ACCOUNT_CONFIG["name"])
+        account.entity.environment.select("Value2")
+        account.entity.account_radio.select("No")
+        account.entity.multiple_select.select("Option Two")
+        account.entity.username.set_value("TestClientId")
+        account.entity.password.set_value("ClientSecretTest")
+        account.entity.security_token.set_value("SecurityTokenTest")
+        account.entity.basic_oauth_text.set_value("Invalid")
+
+        self.assert_util(
+            account.entity.save,
+            "Length should be between 10 and 4096",
+            left_args={"expect_error": True},
+        )
+
+    @pytest.mark.execute_enterprise_cloud_true
+    @pytest.mark.forwarder
+    @pytest.mark.input
+    def test_example_validation_of_oauth_fields_wrong_characters(
+        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper
+    ):
+        """Verifies required field client id"""
+        account = AccountPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)
+        account.entity.open()
+        account.entity.name.set_value(_ACCOUNT_CONFIG["name"])
+        account.entity.environment.select("Value2")
+        account.entity.account_radio.select("No")
+        account.entity.multiple_select.select("Option Two")
+        account.entity.username.set_value("TestClientId")
+        account.entity.password.set_value("ClientSecretTest")
+        account.entity.security_token.set_value("SecurityTokenTest")
+        account.entity.basic_oauth_text.set_value(
+            "Invalid due to special characters: !@#$%^&*()"
+        )
+
+        self.assert_util(
+            account.entity.save,
+            "Do not use special characters",
+            left_args={"expect_error": True},
+        )
+
+    @pytest.mark.execute_enterprise_cloud_true
+    @pytest.mark.forwarder
+    @pytest.mark.input
+    def test_example_validation_of_oauth_valid(
+        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper
+    ):
+        """Verifies required field client id"""
+        account = AccountPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)
+        account.entity.open()
+        account.entity.name.set_value(_ACCOUNT_CONFIG["name"])
+        account.entity.environment.select("Value2")
+        account.entity.account_radio.select("No")
+        account.entity.multiple_select.select("Option Two")
+        account.entity.username.set_value("TestClientId")
+        account.entity.password.set_value("ClientSecretTest")
+        account.entity.security_token.set_value("SecurityTokenTest")
+        account.entity.basic_oauth_text.set_value("Valid_text_for_oauth")
+
+        self.assert_util(account.entity.save, True)
+
+        account.table.wait_for_rows_to_appear(1)
+
+        self.assert_util(
+            account.table.get_table()[_ACCOUNT_CONFIG["name"]],
+            {
+                "name": _ACCOUNT_CONFIG["name"],
+                "auth type": "basic",
+                "actions": "Edit | Clone | Delete",
+            },
+        )
diff --git a/tests/ui/test_input_page.py b/tests/ui/test_input_page.py
index ec1ea90d0..176da970d 100644
--- a/tests/ui/test_input_page.py
+++ b/tests/ui/test_input_page.py
@@ -253,6 +253,7 @@ def test_inputs_create_new_input_list_values(
             "Example Input Two",
             "Example Input Three",
             "Example Input Four",
+            "Service hidden for cloud",
         ]
         self.assert_util(
             input_page.create_new_input.get_inputs_list, create_new_input_list
@@ -276,6 +277,8 @@ def test_inputs_input_type_list_values(
             "Example Input Two",
             "Example Input Three",
             "Example Input Four",
+            "Service hidden for cloud",
+            "Service hidden for enterprise",
         ]
         self.assert_util(input_page.type_filter.get_input_type_list, type_filter_list)
         input_page.type_filter.select_input_type(
@@ -688,7 +691,7 @@ def test_example_input_one_valid_input_interval(
         input_page.entity1.interval.set_value("abc")
         self.assert_util(
             input_page.entity1.save,
-            r"Interval must be either a non-negative number or -1.",
+            r"Interval must be either a non-negative number, CRON interval or -1.",
             left_args={"expect_error": True},
         )
 
@@ -1596,7 +1599,7 @@ def test_example_input_two_valid_input_interval(
         input_page.entity2.interval.set_value("abc")
         self.assert_util(
             input_page.entity2.save,
-            r"Interval must be either a non-negative number or -1.",
+            r"Interval must be either a non-negative number, CRON interval or -1.",
             left_args={"expect_error": True},
         )
 
@@ -2530,3 +2533,83 @@ def test_inputs_textarea_scroll(
         input_page.entity1.text_area.scroll("UP", 40)
         screenshot_after = input_page.entity1.text_area.screenshot()
         self.assert_util(screnshot_before, screenshot_after, operator="!=")
+
+    @pytest.mark.execute_enterprise_cloud_true
+    @pytest.mark.forwarder
+    @pytest.mark.input
+    @pytest.mark.parametrize(
+        "interval",
+        [
+            "-1",
+            "1",
+            "0 0,11 2 */2 *",
+            "* * * * *",
+        ],
+    )
+    def test_example_inputs_with_valid_interval(
+        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, interval
+    ):
+        input_page = InputPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)
+        # for input_pos, interval in enumerate(intervals, 1):
+        name = "dummy_input"
+        input_page.create_new_input.select("Example Input One")
+        input_page.entity1.example_account.wait_for_values()
+        input_page.entity1.example_account.select("test_input")
+        input_page.entity1.object.set_value("test_object")
+        input_page.entity1.name.set_value(name)
+        input_page.entity1.object_fields.set_value("test_field")
+        input_page.entity1.text_area.set_value("line1\nline2\nline3\nline4\nline5")
+
+        input_page.entity1.interval.set_value(interval)
+
+        input_page.entity1.save_btn.click()
+        input_page.table.wait_for_rows_to_appear(1)
+
+        self.assert_util(
+            input_page.table.get_table()[name],
+            {
+                "name": name,
+                "account": "test_input",
+                "interval": interval,
+                "index": "default",
+                "status": "Active",
+                "actions": "Edit | Clone | Search | Delete",
+            },
+        )
+
+        backend_stanza = input_page.backend_conf.get_stanza(
+            f"example_input_one://{name}"
+        )
+        assert backend_stanza.get("interval") == interval
+
+    @pytest.mark.execute_enterprise_cloud_true
+    @pytest.mark.forwarder
+    @pytest.mark.input
+    @pytest.mark.parametrize(
+        "interval",
+        [
+            "-2",
+            "0a 0,11 2 */2 *",
+            "a b * * *",
+        ],
+    )
+    def test_example_inputs_with_not_valid_interval(
+        self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, interval
+    ):
+        input_page = InputPage(ucc_smartx_selenium_helper, ucc_smartx_rest_helper)
+        name = "dummy_input"
+        input_page.create_new_input.select("Example Input One")
+        input_page.entity1.example_account.wait_for_values()
+        input_page.entity1.example_account.select("test_input")
+        input_page.entity1.object.set_value("test_object")
+        input_page.entity1.name.set_value(name)
+        input_page.entity1.object_fields.set_value("test_field")
+        input_page.entity1.text_area.set_value("line1\nline2\nline3\nline4\nline5")
+
+        input_page.entity1.interval.set_value(interval)
+
+        self.assert_util(
+            input_page.entity2.save,
+            "Interval must be either a non-negative number, CRON interval or -1.",
+            left_args={"expect_error": True},
+        )
diff --git a/tests/unit/commands/rest_builder/endpoint/test_base.py b/tests/unit/commands/rest_builder/endpoint/test_base.py
index 297cceb92..01d769dea 100644
--- a/tests/unit/commands/rest_builder/endpoint/test_base.py
+++ b/tests/unit/commands/rest_builder/endpoint/test_base.py
@@ -1,6 +1,45 @@
 import pytest
+from unittest import mock
 
-from splunk_add_on_ucc_framework.commands.rest_builder.endpoint import base
+from splunk_add_on_ucc_framework.commands.rest_builder.endpoint import base, field
+
+
+NO_SPECIAL_FIELDS_EXPECTED_VALUE = """
+fieldstest_name_rh = [
+    field.RestField(
+        'account',
+        required=True,
+        encrypted=False,
+        default='default',
+        validator=None
+    )
+]
+modeltest_name_rh = RestModel(fieldstest_name_rh, name='test_addon')
+"""
+
+
+SPECIAL_FIELDS_EXPECTED_VALUE = """
+special_fields = [
+    field.RestField(
+        'name',
+        required=True,
+        encrypted=False,
+        default='default',
+        validator=None
+    )
+]
+
+fieldstest_name_rh = [
+    field.RestField(
+        'account',
+        required=True,
+        encrypted=False,
+        default='default',
+        validator=None
+    )
+]
+modeltest_name_rh = RestModel(fieldstest_name_rh, name='test_addon', special_fields=special_fields)
+"""
 
 
 @pytest.mark.parametrize(
@@ -19,3 +58,26 @@
 )
 def test_indent(lines, expected):
     assert base.indent(lines) == expected
+
+
+@mock.patch(
+    "splunk_add_on_ucc_framework.commands.rest_builder.endpoint.base.RestEntityBuilder.name_rh",
+    "test_name_rh",
+)
+def test_generate_rh_file_no_special_fields():
+    tmp_field = field.RestFieldBuilder("account", True, False, "default", None)
+    tmp_builder = base.RestEntityBuilder("test_addon", [tmp_field])
+    result = tmp_builder.generate_rh()
+    assert result == NO_SPECIAL_FIELDS_EXPECTED_VALUE
+
+
+@mock.patch(
+    "splunk_add_on_ucc_framework.commands.rest_builder.endpoint.base.RestEntityBuilder.name_rh",
+    "test_name_rh",
+)
+def test_generate_rh_file_with_special_fields():
+    tmp_field = field.RestFieldBuilder("account", True, False, "default", None)
+    tmp_special_field = field.RestFieldBuilder("name", True, False, "default", None)
+    tmp_builder = base.RestEntityBuilder("test_addon", [tmp_field], [tmp_special_field])
+    result = tmp_builder.generate_rh()
+    assert result == SPECIAL_FIELDS_EXPECTED_VALUE
diff --git a/tests/unit/entity/test_interval_entity.py b/tests/unit/entity/test_interval_entity.py
index c81297a29..895ad9e46 100644
--- a/tests/unit/entity/test_interval_entity.py
+++ b/tests/unit/entity/test_interval_entity.py
@@ -1,5 +1,7 @@
 from splunk_add_on_ucc_framework.entity import IntervalEntity
 
+from splunk_add_on_ucc_framework.entity.interval_entity import CRON_REGEX
+
 
 def test_interval_minimal_definition():
     definition = {"type": "interval", "field": "interval", "label": "Interval"}
@@ -13,8 +15,8 @@ def test_interval_minimal_definition():
         "type": "text",
         "validators": [
             {
-                "errorMsg": "Interval must be either a non-negative number or -1.",
-                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
+                "pattern": CRON_REGEX,
                 "type": "regex",
             }
         ],
@@ -46,8 +48,8 @@ def test_interval_full_definition():
         "required": True,
         "validators": [
             {
-                "errorMsg": "Interval input must be either a non-negative number or -1.",
-                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                "errorMsg": "Interval input must be either a non-negative number, CRON interval or -1.",
+                "pattern": CRON_REGEX,
                 "type": "regex",
             },
             {
@@ -70,8 +72,8 @@ def test_interval_migration():
         "required": True,
         "validators": [
             {
-                "errorMsg": "Interval must be either a non-negative number or -1.",
-                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
+                "pattern": CRON_REGEX,
                 "type": "regex",
             },
         ],
@@ -104,8 +106,8 @@ def test_interval_migration_with_range():
         "required": True,
         "validators": [
             {
-                "errorMsg": "Interval must be either a non-negative number or -1.",
-                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
+                "pattern": CRON_REGEX,
                 "type": "regex",
             },
             {
@@ -152,8 +154,8 @@ def test_interval_migration_wrong_field():
         "label": "Other field",
         "validators": [
             {
-                "errorMsg": "Other field must be either a non-negative number or -1.",
-                "pattern": "^(?:-1|\\d+(?:\\.\\d+)?)$",
+                "errorMsg": "Other field must be either a non-negative number, CRON interval or -1.",
+                "pattern": CRON_REGEX,
                 "type": "regex",
             },
         ],
diff --git a/tests/unit/expected_results/data_ingestion_modal_definition.json b/tests/unit/expected_results/data_ingestion_modal_definition.json
new file mode 100644
index 000000000..3adcbd7fe
--- /dev/null
+++ b/tests/unit/expected_results/data_ingestion_modal_definition.json
@@ -0,0 +1,148 @@
+{
+  "visualizations": {
+    "data_ingestion_modal_timerange_label_start_viz": {
+      "type": "splunk.singlevalue",
+      "options": {
+        "majorFontSize": 12,
+        "backgroundColor": "transparent",
+        "majorColor": "#9fa4af"
+      },
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_time_label_start_ds"
+      }
+    },
+    "data_ingestion_modal_timerange_label_end_viz": {
+      "type": "splunk.singlevalue",
+      "options": {
+        "majorFontSize": 12,
+        "backgroundColor": "transparent",
+        "majorColor": "#9fa4af"
+      },
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_time_label_end_ds"
+      }
+    },
+    "data_ingestion_modal_data_volume_viz": {
+      "type": "splunk.line",
+      "options": {
+        "xAxisVisibility": "hide",
+        "seriesColors": ["#A870EF"],
+        "yAxisTitleText": "Volume (bytes)",
+        "xAxisTitleText": "Time"
+      },
+      "title": "Data volume",
+      "dataSources": {
+        "primary": "data_ingestion_modal_data_volume_ds"
+      }
+    },
+    "data_ingestion_modal_events_count_viz": {
+      "type": "splunk.line",
+      "options": {
+        "xAxisVisibility": "hide",
+        "xAxisTitleText": "Time",
+        "seriesColors": ["#A870EF"],
+        "yAxisTitleText": "Number of events"
+      },
+      "title": "Number of events",
+      "dataSources": {
+        "primary": "ds_search_1"
+      }
+    }
+  },
+  "dataSources": {
+    "data_ingestion_modal_data_time_label_start_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "| makeresults | addinfo | eval StartDate = strftime(info_min_time, \"%e %b %Y %I:%M%p\") | table StartDate",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "data_ingestion_modal_data_time_label_end_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "| makeresults | addinfo | eval EndDate = strftime(info_max_time, \"%e %b %Y %I:%M%p\") | table EndDate",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "data_ingestion_modal_data_volume_ds": {
+      "type": "ds.search",
+      "options": {
+        "query": "index=_internal source=*license_usage.log type=Usage (s IN (example_input_one*,example_input_two*)) | timechart sum(b) as Usage | rename Usage as \"Data volume\"",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      }
+    },
+    "ds_search_1": {
+      "type": "ds.search",
+      "options": {
+        "query": "index=_internal source=*splunk_ta_uccexample* action=events_ingested | timechart sum(n_events) as \"Number of events\"",
+        "queryParameters": {
+          "earliest": "$data_ingestion_modal_time.earliest$",
+          "latest": "$data_ingestion_modal_time.latest$"
+        }
+      },
+      "name": "Security Score vs Spend"
+    }
+  },
+  "defaults": {},
+  "inputs": {
+    "data_ingestion_modal_time_window": {
+      "options": {
+        "defaultValue": "-24h,now",
+        "token": "data_ingestion_modal_time"
+      },
+      "title": "Time Window",
+      "type": "input.timerange"
+    }
+  },
+  "layout": {
+    "type": "grid",
+    "globalInputs": ["data_ingestion_modal_time_window"],
+    "structure": [
+      {
+        "item": "data_ingestion_modal_timerange_label_start_viz",
+        "position": {
+          "x": 0,
+          "y": 50,
+          "w": 100,
+          "h": 20
+        }
+      },
+      {
+        "item": "data_ingestion_modal_timerange_label_end_viz",
+        "position": {
+          "x": 100,
+          "y": 50,
+          "w": 100,
+          "h": 20
+        }
+      },
+      {
+        "item": "data_ingestion_modal_data_volume_viz",
+        "position": {
+          "x": 0,
+          "y": 80,
+          "w": 300,
+          "h": 400
+        }
+      },
+      {
+        "item": "data_ingestion_modal_events_count_viz",
+        "position": {
+          "x": 0,
+          "y": 500,
+          "w": 300,
+          "h": 400
+        }
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/tests/unit/expected_results/data_ingestion_tab_definition.json b/tests/unit/expected_results/data_ingestion_tab_definition.json
index e2ee8d737..ae470a03d 100644
--- a/tests/unit/expected_results/data_ingestion_tab_definition.json
+++ b/tests/unit/expected_results/data_ingestion_tab_definition.json
@@ -103,7 +103,12 @@
           }
         },
         "count": 10
-      }
+      },
+      "eventHandlers": [
+        {
+          "type": "table.click.handler"
+        }
+      ]
     }
   },
   "dataSources": {
diff --git a/tests/unit/generators/conf_files/test_create_account_conf_spec.py b/tests/unit/generators/conf_files/test_create_account_conf_spec.py
index b856dd367..c1ba5ee72 100644
--- a/tests/unit/generators/conf_files/test_create_account_conf_spec.py
+++ b/tests/unit/generators/conf_files/test_create_account_conf_spec.py
@@ -49,7 +49,10 @@ def test_set_attributes(global_config, input_dir, output_dir, ucc_dir, ta_name):
     ]
     account_spec._global_config.namespace = TA_NAME
     account_spec._gc_schema._get_oauth_enitities.return_value = "mocked_content"
-    account_spec._gc_schema._parse_fields.return_value = [MagicMock(_name="field2")]
+    account_spec._gc_schema._parse_fields.return_value = (
+        [MagicMock(_name="field2")],
+        [MagicMock(_name="field3")],
+    )
 
     account_spec._set_attributes()
 
diff --git a/tests/unit/generators/conf_files/test_create_settings_conf.py b/tests/unit/generators/conf_files/test_create_settings_conf.py
index 529c76ef8..bd8df9ef1 100644
--- a/tests/unit/generators/conf_files/test_create_settings_conf.py
+++ b/tests/unit/generators/conf_files/test_create_settings_conf.py
@@ -44,7 +44,10 @@ def test_set_attributes(global_config, input_dir, output_dir, ucc_dir, ta_name):
     settings_conf._global_config.settings = [{"entity": "entity1", "name": "setting1"}]
     settings_conf._global_config.namespace = TA_NAME
     settings_conf._gc_schema._get_oauth_enitities.return_value = "mocked_content"
-    settings_conf._gc_schema._parse_fields.return_value = [MagicMock(_name="field1")]
+    settings_conf._gc_schema._parse_fields.return_value = (
+        [MagicMock(_name="field1")],
+        [MagicMock(_name="field3")],
+    )
 
     settings_conf._gc_schema._endpoints = {"settings": MagicMock()}
     settings_conf._gc_schema._endpoints[
@@ -104,7 +107,10 @@ def test_set_attributes_no_settings_key(
 
     settings_conf._global_config.settings = [{"entity": "entity1", "name": "setting1"}]
     settings_conf._gc_schema._get_oauth_enitities.return_value = "mocked_content"
-    settings_conf._gc_schema._parse_fields.return_value = [MagicMock(_name="field1")]
+    settings_conf._gc_schema._parse_fields.return_value = (
+        [MagicMock(_name="field1")],
+        [MagicMock(_name="field3")],
+    )
 
     settings_conf._gc_schema._endpoints = {}
 
diff --git a/tests/unit/test_interval_regex.py b/tests/unit/test_interval_regex.py
new file mode 100644
index 000000000..1ce3e2d2a
--- /dev/null
+++ b/tests/unit/test_interval_regex.py
@@ -0,0 +1,42 @@
+import re
+import pytest
+
+from splunk_add_on_ucc_framework.entity.interval_entity import CRON_REGEX
+
+cron_regex = re.compile(CRON_REGEX)
+
+
+@pytest.mark.parametrize(
+    "is_valid, expression",
+    (
+        (True, "* * * * *"),
+        (True, "1 2 3 4 5"),
+        (True, "5 0 * 8 *"),
+        (True, "0 12 * * 3"),
+        (True, "0 22 * * 1-5"),
+        (True, "* 0,2 * * *"),
+        (True, "* 0/9 * * *"),
+        (True, "*/15 * * * *"),
+        (True, "*/15 0 1,15 * 1-5"),
+        (True, "0 0,12 1 */2 *"),
+        (True, "1"),
+        (True, "-1"),
+        (True, "0"),
+        (True, "6371"),
+        (True, "* 0-20/2 * * *"),
+        (True, "* 10-20/12 * * *"),
+        (True, "* */9,8 * * *"),
+        (True, "* */9,9-12 * * *"),
+        (True, "* 0/9,8 * * *"),
+        (True, "* 9/1,9-12 * * *"),
+        (False, "-2"),
+        (False, "1."),
+        (False, "5 0 * 8 * 1"),
+        (False, "5 4 * * sun"),  # This syntax (sun) is not supported
+        (False, "@weekly")  # This syntax is not supported
+        # (False, "* 0/0 * * *")   # We don't handle this case
+    ),
+)
+def test_cron_regex_expression(is_valid, expression):
+    match = cron_regex.fullmatch(expression)
+    assert bool(match) == is_valid
diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py
index c5165ee93..a10bda04a 100644
--- a/tests/unit/test_utils.py
+++ b/tests/unit/test_utils.py
@@ -79,7 +79,7 @@ def test_get_version_from_git_when_stage_is_none(mock_version_from_git):
     )
     mock_version_from_git.return_value = version
 
-    expected_result = "5.25.0R391ec865"
+    expected_result = "5.25.0+391ec865"
     assert expected_result == utils.get_version_from_git()
 
 
diff --git a/tests/unit/testdata/valid_config_only_interval_migration.json b/tests/unit/testdata/valid_config_only_interval_migration.json
index c12d8343c..9806ce6ee 100644
--- a/tests/unit/testdata/valid_config_only_interval_migration.json
+++ b/tests/unit/testdata/valid_config_only_interval_migration.json
@@ -15,7 +15,7 @@
                             "required": true,
                             "validators": [
                                 {
-                                    "errorMsg": "Interval must be either a non-negative number or -1.",
+                                    "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
                                     "pattern": "^(?:-1|0(?:\\.\\d+)?|[1-9]\\d*(?:\\.\\d+)?)$",
                                     "type": "regex"
                                 },
@@ -56,7 +56,7 @@
                             "required": true,
                             "validators": [
                                 {
-                                    "errorMsg": "Interval must be either a non-negative number or -1.",
+                                    "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
                                     "pattern": "^(?:-1|0(?:\\.\\d+)?|[1-9]\\d*(?:\\.\\d+)?)$",
                                     "type": "regex"
                                 },
@@ -120,7 +120,7 @@
                     "required": true,
                     "validators": [
                         {
-                            "errorMsg": "Interval must be either a non-negative number or -1.",
+                            "errorMsg": "Interval must be either a non-negative number, CRON interval or -1.",
                             "pattern": "^(?:-1|0(?:\\.\\d+)?|[1-9]\\d*(?:\\.\\d+)?)$",
                             "type": "regex"
                         },
diff --git a/ui/src/components/EntityModal/EntityModal.test.tsx b/ui/src/components/EntityModal/EntityModal.test.tsx
index 94dc4f34a..9b61a8809 100644
--- a/ui/src/components/EntityModal/EntityModal.test.tsx
+++ b/ui/src/components/EntityModal/EntityModal.test.tsx
@@ -39,11 +39,9 @@ describe('Oauth field disabled on edit - diableonEdit property', () => {
         render(<EntityModal {...props} handleRequestClose={handleRequestClose} />);
     };
 
-    const getDisabledOauthField = () =>
-        document.getElementsByClassName('oauth_oauth_text_jest_test')[1];
+    const getDisabledOauthField = () => document.querySelector('.oauth_oauth_text_jest_test input');
 
-    const getDisabledBasicField = () =>
-        document.getElementsByClassName('basic_oauth_text_jest_test')[1];
+    const getDisabledBasicField = () => document.querySelector('.basic_oauth_text_jest_test input');
 
     it('Oauth Oauth - disableonEdit = true, oauth field not disabled on create', async () => {
         setUpConfigWithDisabedOauth();
@@ -144,8 +142,7 @@ describe('Options - Enable field property', () => {
         render(<EntityModal {...props} handleRequestClose={handleRequestClose} />);
     };
 
-    const getDisabledOauthField = () =>
-        document.getElementsByClassName('oauth_oauth_text_jest_test')[1];
+    const getDisabledOauthField = () => document.querySelector('.oauth_oauth_text_jest_test input');
 
     it('Oauth Oauth - Enable field equal false, so field disabled', async () => {
         setUpConfigWithDisabledComplitelyOauthField();
diff --git a/ui/src/components/FileInputComponent/FileInputComponent.test.tsx b/ui/src/components/FileInputComponent/FileInputComponent.test.tsx
index 0d36068b8..620efe558 100644
--- a/ui/src/components/FileInputComponent/FileInputComponent.test.tsx
+++ b/ui/src/components/FileInputComponent/FileInputComponent.test.tsx
@@ -1,6 +1,6 @@
 import React from 'react';
 
-import { render, screen } from '@testing-library/react';
+import { render, screen, waitFor } from '@testing-library/react';
 import userEvent from '@testing-library/user-event';
 import FileInputComponent from './FileInputComponent';
 import fileContants from '../../constants/fileInputConstant';
@@ -375,5 +375,6 @@ test('Check FileInputComponent encodes base64 correctly and passed it to handler
     await userEvent.upload(fileInput, testfile);
 
     // Check that handleChange is called with valid args.
-    expect(handleChange).toHaveBeenCalledWith(field, btoa(fileContent));
+    const fileContentInBase64 = btoa(fileContent);
+    await waitFor(() => expect(handleChange).toHaveBeenCalledWith(field, fileContentInBase64));
 });
diff --git a/ui/src/components/MenuInput/MenuInput.test.tsx b/ui/src/components/MenuInput/MenuInput.test.tsx
index 7eee98baf..ee2c44a30 100644
--- a/ui/src/components/MenuInput/MenuInput.test.tsx
+++ b/ui/src/components/MenuInput/MenuInput.test.tsx
@@ -13,6 +13,7 @@ import {
     TableSchema,
 } from '../../types/globalConfig/pages';
 import { getGlobalConfigMock } from '../../mocks/globalConfigMock';
+import { PageContextProvider } from '../../context/PageContext';
 
 jest.mock('../../util/util');
 
@@ -35,9 +36,11 @@ function setup(inputs: z.infer<typeof pages.shape.inputs>) {
         },
     }));
     render(
-        <AnimationToggleProvider enabled={false}>
-            <MenuInput handleRequestOpen={mockHandleRequestOpen} />
-        </AnimationToggleProvider>
+        <PageContextProvider platform={undefined}>
+            <AnimationToggleProvider enabled={false}>
+                <MenuInput handleRequestOpen={mockHandleRequestOpen} />
+            </AnimationToggleProvider>
+        </PageContextProvider>
     );
     return { mockHandleRequestOpen };
 }
diff --git a/ui/src/pages/Configuration/tests/ConfigContext.test.tsx b/ui/src/pages/Configuration/tests/ConfigContext.test.tsx
new file mode 100644
index 000000000..9b8bff540
--- /dev/null
+++ b/ui/src/pages/Configuration/tests/ConfigContext.test.tsx
@@ -0,0 +1,91 @@
+import * as React from 'react';
+import { render } from '@testing-library/react';
+import { BrowserRouter } from 'react-router-dom';
+import userEvent from '@testing-library/user-event';
+
+import { http, HttpResponse } from 'msw';
+import { server } from '../../../mocks/server';
+import { mockServerResponseWithContent } from '../../../mocks/server-response';
+import { setUnifiedConfig } from '../../../util/util';
+import ConfigurationPage from '../ConfigurationPage';
+import { type meta as metaType } from '../../../types/globalConfig/meta';
+import { CONFIG_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM } from './mockConfigs';
+
+jest.mock('@splunk/search-job', () => ({
+    create: () => ({
+        getResults: () => ({
+            subscribe: (
+                callbackFunction: (params: { results: { instance_type: string }[] }) => void
+            ) => {
+                callbackFunction({ results: [{ instance_type: 'cloud' }] });
+                return { unsubscribe: () => {} };
+            },
+        }),
+    }),
+}));
+
+beforeEach(() => {
+    server.use(
+        http.get(`/servicesNS/nobody/-/:endpointUrl`, () =>
+            HttpResponse.json(mockServerResponseWithContent)
+        )
+    );
+});
+
+function setup(meta: Partial<metaType>) {
+    const globalConfigMock = CONFIG_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM;
+
+    const newGlobalConfig = {
+        ...globalConfigMock,
+        meta: {
+            ...globalConfigMock.meta,
+            ...meta,
+        },
+    };
+
+    setUnifiedConfig(newGlobalConfig);
+    return render(<ConfigurationPage />, { wrapper: BrowserRouter });
+}
+
+it('should not display tabs on cloud', async () => {
+    const page = setup({
+        _uccVersion: undefined,
+    });
+
+    const cloudTab = document.querySelector('[data-test-tab-id="tab_hidden_for_cloud"]');
+    expect(cloudTab).toBeNull();
+
+    const enterprisetab = document.querySelector('[data-test-tab-id="tab_hidden_for_enterprise"]');
+    expect(enterprisetab).toBeInTheDocument();
+
+    const cloudText = await page.queryByText('Tab hidden for cloud');
+    expect(cloudText).toBeNull();
+
+    const enterpriseText = await page.findByText('Tab hidden for enterprise');
+    expect(enterpriseText).toBeInTheDocument();
+});
+
+it('should not display fields in configuration form', async () => {
+    const page = setup({
+        _uccVersion: undefined,
+    });
+
+    const addBtn = await page.findByRole('button', { name: 'Add' });
+    expect(addBtn).toBeInTheDocument();
+
+    await userEvent.click(addBtn);
+
+    const enterpriseInput = document.querySelector(
+        '[data-name="input_two_text_hidden_for_enterprise"]'
+    );
+    expect(enterpriseInput).toBeInTheDocument();
+
+    const cloudInput = document.querySelector('[data-name="input_two_text_hidden_for_cloud"]');
+    expect(cloudInput).toBeNull();
+
+    const cloudText = await page.queryByText('Text input hidden for cloud');
+    expect(cloudText).toBeNull();
+
+    const enterprisetext = await page.findByText('Text input hidden for enterprise');
+    expect(enterprisetext).toBeInTheDocument();
+});
diff --git a/ui/src/pages/Configuration/ConfigurationPage.test.tsx b/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx
similarity index 79%
rename from ui/src/pages/Configuration/ConfigurationPage.test.tsx
rename to ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx
index cc32a1c50..4c24a2ac2 100644
--- a/ui/src/pages/Configuration/ConfigurationPage.test.tsx
+++ b/ui/src/pages/Configuration/tests/ConfigurationPage.test.tsx
@@ -3,14 +3,14 @@ import { render } from '@testing-library/react';
 import { BrowserRouter } from 'react-router-dom';
 
 import { http, HttpResponse } from 'msw';
-import ConfigurationPage from './ConfigurationPage';
-import { getUnifiedConfigs } from '../../util/util';
-import { getGlobalConfigMock } from '../../mocks/globalConfigMock';
-import { type meta as metaType } from '../../types/globalConfig/meta';
-import { mockServerResponseWithContent } from '../../mocks/server-response';
-import { server } from '../../mocks/server';
+import { getGlobalConfigMock } from '../../../mocks/globalConfigMock';
+import { server } from '../../../mocks/server';
+import { mockServerResponseWithContent } from '../../../mocks/server-response';
+import { getUnifiedConfigs } from '../../../util/util';
+import ConfigurationPage from '../ConfigurationPage';
+import { type meta as metaType } from '../../../types/globalConfig/meta';
 
-jest.mock('../../util/util');
+jest.mock('../../../util/util');
 
 const getUnifiedConfigsMock = getUnifiedConfigs as jest.Mock;
 
diff --git a/ui/src/pages/Configuration/tests/mockConfigs.ts b/ui/src/pages/Configuration/tests/mockConfigs.ts
new file mode 100644
index 000000000..38fa06354
--- /dev/null
+++ b/ui/src/pages/Configuration/tests/mockConfigs.ts
@@ -0,0 +1,320 @@
+import { z } from 'zod';
+import { GlobalConfigSchema } from '../../../types/globalConfig/globalConfig';
+
+export const CONFIG_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM = {
+    pages: {
+        configuration: {
+            tabs: [
+                {
+                    name: 'account',
+                    table: {
+                        actions: ['edit', 'delete', 'clone'],
+                        header: [
+                            {
+                                label: 'Name',
+                                field: 'name',
+                            },
+                            {
+                                label: 'Auth Type',
+                                field: 'auth_type',
+                            },
+                        ],
+                    },
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for cloud',
+                            field: 'input_two_text_hidden_for_cloud',
+                            help: 'Should be hidden for cloud',
+                            tooltip: 'Should be hidden for cloud',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'cloud',
+                            },
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for enterprise',
+                            field: 'input_two_text_hidden_for_enterprise',
+                            help: 'Should be hidden for enterprise',
+                            tooltip: 'Should be hidden for enterprise',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'enterprise',
+                            },
+                        },
+                    ],
+                    title: 'Account',
+                },
+                {
+                    name: 'tab_hidden_for_cloud',
+                    table: {
+                        actions: ['edit', 'delete', 'clone'],
+                        header: [
+                            {
+                                label: 'Name',
+                                field: 'name',
+                            },
+                            {
+                                label: 'Text Test',
+                                field: 'text_test',
+                            },
+                        ],
+                        moreInfo: [
+                            {
+                                field: 'name',
+                                label: 'Name',
+                            },
+                            {
+                                field: 'text_test',
+                                label: 'Text Test',
+                            },
+                        ],
+                    },
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                        {
+                            field: 'text_test',
+                            label: 'Text Test',
+                            help: 'This is a text test',
+                            type: 'text',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    minLength: 1,
+                                    maxLength: 100,
+                                },
+                            ],
+                            required: true,
+                        },
+                    ],
+                    title: 'Tab hidden for cloud',
+                    hideForPlatform: 'cloud',
+                },
+                {
+                    name: 'tab_hidden_for_enterprise',
+                    table: {
+                        actions: ['edit', 'delete', 'clone'],
+                        header: [
+                            {
+                                label: 'Name',
+                                field: 'name',
+                            },
+                            {
+                                label: 'Text Test',
+                                field: 'text_test',
+                            },
+                        ],
+                        moreInfo: [
+                            {
+                                field: 'name',
+                                label: 'Name',
+                            },
+                            {
+                                field: 'text_test',
+                                label: 'Text Test',
+                            },
+                        ],
+                    },
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                        {
+                            field: 'text_test',
+                            label: 'Text Test',
+                            help: 'This is a text test',
+                            type: 'text',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    minLength: 1,
+                                    maxLength: 100,
+                                },
+                            ],
+                            required: true,
+                        },
+                    ],
+                    title: 'Tab hidden for enterprise',
+                    hideForPlatform: 'enterprise',
+                },
+            ],
+            title: 'Configuration',
+            description: 'Set up your add-on',
+        },
+        inputs: {
+            title: 'Inputs',
+            services: [
+                {
+                    name: 'example_input_one',
+                    description: 'This is a description for Input One',
+                    title: 'Example Input',
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for cloud',
+                            field: 'input_two_text_hidden_for_cloud',
+                            help: 'Should be hidden for cloud',
+                            tooltip: 'Should be hidden for cloud',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'cloud',
+                            },
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for enterprise',
+                            field: 'input_two_text_hidden_for_enterprise',
+                            help: 'Should be hidden for enterprise',
+                            tooltip: 'Should be hidden for enterprise',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'enterprise',
+                            },
+                        },
+                    ],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                    },
+                },
+                {
+                    name: 'example_input_two',
+                    description: 'This is a description for Input Two',
+                    title: 'Example Input Two',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                },
+                {
+                    name: 'example_input_three',
+                    description: 'Input hidden for cloud',
+                    title: 'Example Input Three Hidden Cloud',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                    hideForPlatform: 'cloud',
+                },
+                {
+                    name: 'example_input_four',
+                    description: 'Input hidden for enterprise',
+                    title: 'Example Input Four Hidden Enterprise',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                    hideForPlatform: 'enterprise',
+                },
+            ],
+        },
+    },
+    meta: {
+        name: 'Splunk_TA_UCCExample',
+        restRoot: 'splunk_ta_uccexample',
+        version: '5.50.1+4a1bb166c',
+        displayName: 'Splunk UCC test Add-on',
+        schemaVersion: '0.0.8',
+        _uccVersion: '5.50.1',
+    },
+} satisfies z.infer<typeof GlobalConfigSchema>;
diff --git a/ui/src/pages/Dashboard/tests/DashboardModal.test.tsx b/ui/src/pages/Dashboard/tests/DashboardModal.test.tsx
new file mode 100644
index 000000000..9627bf07c
--- /dev/null
+++ b/ui/src/pages/Dashboard/tests/DashboardModal.test.tsx
@@ -0,0 +1,74 @@
+import * as React from 'react';
+import { render, waitFor, screen } from '@testing-library/react';
+
+import { http, HttpResponse, RequestHandler } from 'msw';
+import { consoleError } from '../../../../jest.setup';
+import { getGlobalConfigMock } from '../../../mocks/globalConfigMock';
+import { setUnifiedConfig } from '../../../util/util';
+import { server } from '../../../mocks/server';
+
+import { DashboardModal } from '../DashboardModal';
+import { DataIngestionModal } from '../DataIngestionModal';
+import { MOCK_DS_MODAL_DEFINITION } from './mockData';
+import { DASHBOARD_JSON_MOCKS } from './mockJs';
+
+const handleClose = jest.fn();
+const handleSelect = jest.fn();
+
+describe('render data ingestion modal inputs', () => {
+    it('renders with all default modal dashboard elements', async () => {
+        consoleError.mockImplementation(() => {});
+        server.use(
+            http.get('/custom/data_ingestion_modal_definition.json', () =>
+                HttpResponse.json(MOCK_DS_MODAL_DEFINITION)
+            )
+        );
+
+        DASHBOARD_JSON_MOCKS.forEach((mock: RequestHandler) => server.use(mock));
+
+        const mockConfig = getGlobalConfigMock();
+        setUnifiedConfig(mockConfig);
+
+        render(
+            <DataIngestionModal
+                handleRequestClose={handleClose}
+                dataIngestionDropdownValues={[{ label: 'source', value: 'source' }]}
+                selectValueForDropdownInModal="source"
+                setSelectValueForDropdownInModal={handleSelect}
+                open
+                title="Source Type"
+            >
+                <DashboardModal
+                    selectValueForDropdownInModal="source"
+                    selectTitleForDropdownInModal="Source"
+                    setDataIngestionDropdownValues={handleSelect}
+                />
+            </DataIngestionModal>
+        );
+
+        const modal = await screen.findByTestId('modal');
+        expect(modal).toBeInTheDocument();
+
+        // Wait for dropdown to be rendered
+        await waitFor(() => {
+            expect(document.querySelector('[data-test="input-title"]')).toBeInTheDocument();
+        });
+        await waitFor(() => {
+            expect(document.querySelector('#data_ingestion_modal_dropdown')).toBeInTheDocument();
+        });
+
+        const idsToBeInDocument = [
+            'data_ingestion_modal_dropdown',
+            'data_ingestion_dropdown_label',
+            'open_search_on_visualization',
+            'done_button_footer',
+        ];
+
+        await waitFor(() => {
+            idsToBeInDocument.forEach((id) => {
+                const element = document.getElementById(id);
+                expect(element).toBeInTheDocument();
+            });
+        });
+    });
+});
diff --git a/ui/src/pages/Dashboard/tests/mockData.ts b/ui/src/pages/Dashboard/tests/mockData.ts
index 0c47d93b5..e4aac4ae2 100644
--- a/ui/src/pages/Dashboard/tests/mockData.ts
+++ b/ui/src/pages/Dashboard/tests/mockData.ts
@@ -670,3 +670,152 @@ export const SEARCH_JOB_RESULT = {
         },
     ],
 };
+
+export const MOCK_DS_MODAL_DEFINITION = {
+    visualizations: {
+        data_ingestion_modal_timerange_label_start_viz: {
+            type: 'splunk.singlevalue',
+            options: {
+                majorFontSize: 12,
+                backgroundColor: 'transparent',
+                majorColor: '#9fa4af',
+            },
+            dataSources: {
+                primary: 'data_ingestion_modal_data_time_label_start_ds',
+            },
+        },
+        data_ingestion_modal_timerange_label_end_viz: {
+            type: 'splunk.singlevalue',
+            options: {
+                majorFontSize: 12,
+                backgroundColor: 'transparent',
+                majorColor: '#9fa4af',
+            },
+            dataSources: {
+                primary: 'data_ingestion_modal_data_time_label_end_ds',
+            },
+        },
+        data_ingestion_modal_data_volume_viz: {
+            type: 'splunk.line',
+            options: {
+                xAxisVisibility: 'hide',
+                seriesColors: ['#A870EF'],
+                yAxisTitleText: 'Volume (bytes)',
+                xAxisTitleText: 'Time',
+            },
+            title: 'Data volume',
+            dataSources: {
+                primary: 'data_ingestion_modal_data_volume_ds',
+            },
+        },
+        data_ingestion_modal_events_count_viz: {
+            type: 'splunk.line',
+            options: {
+                xAxisVisibility: 'hide',
+                xAxisTitleText: 'Time',
+                seriesColors: ['#A870EF'],
+                yAxisTitleText: 'Number of events',
+            },
+            title: 'Number of events',
+            dataSources: {
+                primary: 'ds_search_1',
+            },
+        },
+    },
+    dataSources: {
+        data_ingestion_modal_data_time_label_start_ds: {
+            type: 'ds.search',
+            options: {
+                query: '| makeresults | addinfo | eval StartDate = strftime(info_min_time, "%e %b %Y %I:%M%p") | table StartDate',
+                queryParameters: {
+                    earliest: '$data_ingestion_modal_time.earliest$',
+                    latest: '$data_ingestion_modal_time.latest$',
+                },
+            },
+        },
+        data_ingestion_modal_data_time_label_end_ds: {
+            type: 'ds.search',
+            options: {
+                query: '| makeresults | addinfo | eval EndDate = strftime(info_max_time, "%e %b %Y %I:%M%p") | table EndDate',
+                queryParameters: {
+                    earliest: '$data_ingestion_modal_time.earliest$',
+                    latest: '$data_ingestion_modal_time.latest$',
+                },
+            },
+        },
+        data_ingestion_modal_data_volume_ds: {
+            type: 'ds.search',
+            options: {
+                query: 'index=_internal source=*license_usage.log type=Usage ({determine_by} IN ({lic_usg_condition})) | timechart sum(b) as Usage | rename Usage as \\"Data volume\\"',
+                queryParameters: {
+                    earliest: '$data_ingestion_modal_time.earliest$',
+                    latest: '$data_ingestion_modal_time.latest$',
+                },
+            },
+        },
+        ds_search_1: {
+            type: 'ds.search',
+            options: {
+                query: 'index=_internal source=*{addon_name}* action=events_ingested | timechart sum(n_events) as \\"Number of events\\"',
+                queryParameters: {
+                    earliest: '$data_ingestion_modal_time.earliest$',
+                    latest: '$data_ingestion_modal_time.latest$',
+                },
+            },
+            name: 'Security Score vs Spend',
+        },
+    },
+    defaults: {},
+    inputs: {
+        data_ingestion_modal_time_window: {
+            options: {
+                defaultValue: '-24h,now',
+                token: 'data_ingestion_modal_time',
+            },
+            title: 'Time Window',
+            type: 'input.timerange',
+        },
+    },
+    layout: {
+        type: 'grid',
+        globalInputs: ['data_ingestion_modal_time_window'],
+        structure: [
+            {
+                item: 'data_ingestion_modal_timerange_label_start_viz',
+                position: {
+                    x: 0,
+                    y: 50,
+                    w: 100,
+                    h: 20,
+                },
+            },
+            {
+                item: 'data_ingestion_modal_timerange_label_end_viz',
+                position: {
+                    x: 100,
+                    y: 50,
+                    w: 100,
+                    h: 20,
+                },
+            },
+            {
+                item: 'data_ingestion_modal_data_volume_viz',
+                position: {
+                    x: 0,
+                    y: 80,
+                    w: 300,
+                    h: 400,
+                },
+            },
+            {
+                item: 'data_ingestion_modal_events_count_viz',
+                position: {
+                    x: 0,
+                    y: 500,
+                    w: 300,
+                    h: 400,
+                },
+            },
+        ],
+    },
+};
diff --git a/ui/src/pages/Dashboard/tests/mockJs.ts b/ui/src/pages/Dashboard/tests/mockJs.ts
index baaf7efbc..db925b40b 100644
--- a/ui/src/pages/Dashboard/tests/mockJs.ts
+++ b/ui/src/pages/Dashboard/tests/mockJs.ts
@@ -5,6 +5,7 @@ import {
     MOCK_ERROR_TAB_DEFINITION,
     CURRENT_CONTEXT_RESPONSE,
     SEARCH_JOB_RESULT,
+    MOCK_DS_MODAL_DEFINITION,
 } from './mockData';
 
 export const DASHBOARD_JSON_MOCKS = [
@@ -23,6 +24,9 @@ export const DASHBOARD_JSON_MOCKS = [
     http.get('/custom/resources_tab_definition.json', () =>
         HttpResponse.json(MOCK_ERROR_TAB_DEFINITION)
     ),
+    http.get('/custom/data_ingestion_modal_definition.json', () =>
+        HttpResponse.json(MOCK_DS_MODAL_DEFINITION)
+    ),
     http.post('/services/search/jobs', () =>
         HttpResponse.json(
             {
diff --git a/ui/src/pages/Input/tests/InputContext.test.tsx b/ui/src/pages/Input/tests/InputContext.test.tsx
new file mode 100644
index 000000000..e24c2c326
--- /dev/null
+++ b/ui/src/pages/Input/tests/InputContext.test.tsx
@@ -0,0 +1,66 @@
+import * as React from 'react';
+import { render, screen, waitForElementToBeRemoved } from '@testing-library/react';
+import { BrowserRouter } from 'react-router-dom';
+import userEvent from '@testing-library/user-event';
+
+import InputPage from '../InputPage';
+import { setUnifiedConfig } from '../../../util/util';
+import { INPUT_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM } from './mockConfigs';
+
+jest.mock('@splunk/search-job', () => ({
+    create: () => ({
+        getResults: () => ({
+            subscribe: (
+                callbackFunction: (params: { results: { instance_type: string }[] }) => void
+            ) => {
+                callbackFunction({ results: [{ instance_type: 'cloud' }] });
+                return { unsubscribe: () => {} };
+            },
+        }),
+    }),
+}));
+
+it('Tabs not displayed on platform', async () => {
+    setUnifiedConfig(INPUT_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM);
+
+    render(<InputPage />, { wrapper: BrowserRouter });
+    await waitForElementToBeRemoved(() => document.querySelector('[data-test="wait-spinner"]'));
+
+    const cloudTab = document.querySelector('[data-test-tab-id="example_input_three"]');
+    expect(cloudTab).toBeNull();
+
+    const enterprisetab = document.querySelector('[data-test-tab-id="example_input_four"]');
+    expect(enterprisetab).toBeInTheDocument();
+
+    const cloudText = await screen.queryByText('Example Input Three Hidden Cloud');
+    expect(cloudText).toBeNull();
+
+    const enterpriseText = await screen.findByText('Example Input Four Hidden Enterprise');
+    expect(enterpriseText).toBeInTheDocument();
+});
+
+it('Fields not displayed on inputs form', async () => {
+    setUnifiedConfig(INPUT_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM);
+
+    render(<InputPage />, { wrapper: BrowserRouter });
+    await waitForElementToBeRemoved(() => document.querySelector('[data-test="wait-spinner"]'));
+
+    const addBtn = screen.getByRole('button', { name: 'Add' });
+    expect(addBtn).toBeInTheDocument();
+
+    await userEvent.click(addBtn);
+
+    const enterpriseInput = document.querySelector(
+        '[data-name="input_two_text_hidden_for_enterprise"]'
+    );
+    expect(enterpriseInput).toBeInTheDocument();
+
+    const cloudInput = document.querySelector('[data-name="input_two_text_hidden_for_cloud"]');
+    expect(cloudInput).toBeNull();
+
+    const cloudText = await screen.queryByText('Text input hidden for cloud');
+    expect(cloudText).toBeNull();
+
+    const enterprisetext = await screen.findByText('Text input hidden for enterprise');
+    expect(enterprisetext).toBeInTheDocument();
+});
diff --git a/ui/src/pages/Input/InputPage.test.tsx b/ui/src/pages/Input/tests/InputPage.test.tsx
similarity index 94%
rename from ui/src/pages/Input/InputPage.test.tsx
rename to ui/src/pages/Input/tests/InputPage.test.tsx
index 9a5bed8c5..d99edc698 100644
--- a/ui/src/pages/Input/InputPage.test.tsx
+++ b/ui/src/pages/Input/tests/InputPage.test.tsx
@@ -3,8 +3,8 @@ import { render, screen, waitForElementToBeRemoved, act } from '@testing-library
 import { BrowserRouter } from 'react-router-dom';
 
 import userEvent from '@testing-library/user-event';
-import InputPage from './InputPage';
-import { mockCustomMenu, MockCustomRenderable } from '../../tests/helpers';
+import InputPage from '../InputPage';
+import { mockCustomMenu, MockCustomRenderable } from '../../../tests/helpers';
 
 const mockNavigateFn = jest.fn();
 jest.mock('react-router-dom', () => ({
@@ -12,7 +12,7 @@ jest.mock('react-router-dom', () => ({
     useNavigate: () => mockNavigateFn,
 }));
 
-jest.mock('../../util/util');
+jest.mock('../../../util/util');
 
 let mockCustomMenuInstance: MockCustomRenderable;
 
diff --git a/ui/src/pages/Input/tests/mockConfigs.ts b/ui/src/pages/Input/tests/mockConfigs.ts
new file mode 100644
index 000000000..15d44ab79
--- /dev/null
+++ b/ui/src/pages/Input/tests/mockConfigs.ts
@@ -0,0 +1,168 @@
+import { z } from 'zod';
+import { GlobalConfigSchema } from '../../../types/globalConfig/globalConfig';
+
+export const INPUT_PAGE_CONFIG_WITH_HIDDEN_ELEMENTS_FOR_PLATFORM = {
+    pages: {
+        configuration: {
+            tabs: [
+                {
+                    name: 'account',
+                    table: {
+                        actions: ['edit', 'delete', 'clone'],
+                        header: [
+                            {
+                                label: 'Name',
+                                field: 'name',
+                            },
+                            {
+                                label: 'Auth Type',
+                                field: 'auth_type',
+                            },
+                        ],
+                    },
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                    ],
+                    title: 'Account',
+                },
+            ],
+            title: 'Configuration',
+            description: 'Set up your add-on',
+        },
+        inputs: {
+            title: 'Inputs',
+            services: [
+                {
+                    name: 'example_input_one',
+                    description: 'This is a description for Input One',
+                    title: 'Example Input',
+                    entity: [
+                        {
+                            type: 'text',
+                            label: 'Name',
+                            validators: [
+                                {
+                                    type: 'string',
+                                    errorMsg: 'Length of ID should be between 1 and 50',
+                                    minLength: 1,
+                                    maxLength: 50,
+                                },
+                                {
+                                    type: 'regex',
+                                    errorMsg:
+                                        'Name must begin with a letter and consist exclusively of alphanumeric characters and underscores.',
+                                    pattern: '^[a-zA-Z]\\w*$',
+                                },
+                            ],
+                            field: 'name',
+                            help: 'Enter a unique name for this account.',
+                            required: true,
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for cloud',
+                            field: 'input_two_text_hidden_for_cloud',
+                            help: 'Should be hidden for cloud',
+                            tooltip: 'Should be hidden for cloud',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'cloud',
+                            },
+                        },
+                        {
+                            type: 'text',
+                            label: 'Text input hidden for enterprise',
+                            field: 'input_two_text_hidden_for_enterprise',
+                            help: 'Should be hidden for enterprise',
+                            tooltip: 'Should be hidden for enterprise',
+                            required: false,
+                            options: {
+                                hideForPlatform: 'enterprise',
+                            },
+                        },
+                    ],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                    },
+                },
+                {
+                    name: 'example_input_two',
+                    description: 'This is a description for Input Two',
+                    title: 'Example Input Two',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                },
+                {
+                    name: 'example_input_three',
+                    description: 'Input hidden for cloud',
+                    title: 'Example Input Three Hidden Cloud',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                    hideForPlatform: 'cloud',
+                },
+                {
+                    name: 'example_input_four',
+                    description: 'Input hidden for enterprise',
+                    title: 'Example Input Four Hidden Enterprise',
+                    entity: [],
+                    table: {
+                        actions: ['edit', 'enable', 'delete', 'clone'],
+                        header: [],
+                        moreInfo: [],
+                        customRow: {
+                            type: 'external',
+                            src: 'custom_row',
+                        },
+                    },
+                    hideForPlatform: 'enterprise',
+                },
+            ],
+        },
+    },
+    meta: {
+        name: 'Splunk_TA_UCCExample',
+        restRoot: 'splunk_ta_uccexample',
+        version: '5.50.1+4a1bb166c',
+        displayName: 'Splunk UCC test Add-on',
+        schemaVersion: '0.0.8',
+        _uccVersion: '5.50.1',
+    },
+} satisfies z.infer<typeof GlobalConfigSchema>;