From da2b0262cdc593bcc4a624cbfe7857cff092c7e6 Mon Sep 17 00:00:00 2001 From: Jacob Boddey Date: Tue, 19 Mar 2024 10:28:37 +0000 Subject: [PATCH 1/5] Resolve some merge conflicts --- .github/workflows/testing.yml | 32 - .gitignore | 2 +- README.md | 2 + cmd/package | 2 +- docs/roadmap.pdf | Bin 0 -> 386261 bytes framework/python/src/common/testreport.py | 103 +- make/DEBIAN/control | 2 +- modules/test/base/python/src/test_module.py | 3 +- modules/test/tls/python/src/tls_module.py | 8 +- modules/test/tls/python/src/tls_util.py | 3 + modules/ui/package-lock.json | 5123 ++++++++++++++++- modules/ui/package.json | 37 + modules/ui/src/app/app-routing.module.ts | 14 + modules/ui/src/app/app.component.html | 71 + modules/ui/src/app/app.component.scss | 12 + modules/ui/src/app/app.component.spec.ts | 238 + modules/ui/src/app/app.component.ts | 158 + modules/ui/src/app/app.module.ts | 10 + .../bypass/bypass.component.spec.ts | 19 + .../app/components/bypass/bypass.component.ts | 11 + .../components/callout/callout.component.scss | 10 + .../components/callout/callout.component.ts | 30 + .../delete-report.component.html | 24 + .../delete-report.component.scss | 26 + .../delete-report.component.spec.ts | 110 + .../delete-report/delete-report.component.ts | 91 + .../device-item/device-item.component.html | 10 + .../device-item/device-item.component.scss | 32 + .../device-item/device-item.component.spec.ts | 21 + .../device-item/device-item.component.ts | 13 + .../download-report.component.html | 7 + .../download-report.component.spec.ts | 7 + .../download-report.component.ts | 7 + .../filter-chips/filter-chips.component.html | 54 + .../filter-chips/filter-chips.component.scss | 76 + .../filter-chips.component.spec.ts | 138 + .../filter-chips/filter-chips.component.ts | 66 + .../filter-dialog.component.html | 79 + .../filter-dialog.component.scss | 66 + .../filter-dialog.component.spec.ts | 208 + .../filter-dialog/filter-dialog.component.ts | 233 + .../general-settings.component.html | 163 + .../general-settings.component.spec.ts | 330 ++ .../general-settings.component.ts | 234 + .../spinner/spinner.component.spec.ts | 7 + .../update-dialog.component.html | 46 + .../update-dialog.component.scss | 43 + .../update-dialog.component.spec.ts | 107 + .../update-dialog/update-dialog.component.ts | 44 + .../components/version/version.component.html | 19 + .../components/version/version.component.scss | 24 + .../version/version.component.spec.ts | 10 + .../components/version/version.component.ts | 42 + .../device-form/device-form.component.html | 110 + .../device-form/device-form.component.spec.ts | 472 ++ .../device-repository.component.html | 47 + .../device-repository.component.spec.ts | 343 ++ .../device-repository.component.ts | 167 + .../device-repository.module.ts | 60 + .../ui/src/app/history/history.component.html | 230 + .../src/app/history/history.component.spec.ts | 379 ++ .../ui/src/app/history/history.component.ts | 320 + modules/ui/src/app/history/history.module.ts | 45 + .../src/app/interceptors/error.interceptor.ts | 10 + modules/ui/src/app/mocks/progress.mock.ts | 3 + modules/ui/src/app/model/callout-type.ts | 3 + modules/ui/src/app/model/device.ts | 3 + modules/ui/src/app/model/routes.ts | 4 + modules/ui/src/app/model/setting.ts | 8 + .../device-form/device-form.component.scss | 4 + .../device-form/device-form.component.ts | 59 + .../device-form/device.validators.ts | 18 + .../devices/device-repository.component.scss | 5 + .../delete-report.component.scss | 22 + .../filter-dialog.component.scss | 15 + .../app/pages/reports/history.component.scss | 10 + .../settings/general-settings.component.scss | 84 + .../only-different-values.validator.ts | 3 + .../progress-initiate-form.component.html | 12 + .../progress-initiate-form.component.scss | 5 + .../progress-initiate-form.component.spec.ts | 19 + .../progress-status-card.component.scss | 5 + .../progress-status-card.component.spec.ts | 46 + .../app/pages/testrun/progress.component.html | 4 + .../app/pages/testrun/progress.component.scss | 14 + .../progress-initiate-form.component.ts | 141 + .../progress-status-card.component.html | 112 + .../progress-status-card.component.ts | 97 + .../progress-table.component.html | 65 + .../progress-table.component.spec.ts | 113 + .../progress-table.component.ts | 37 + .../app/progress/progress.component.spec.ts | 643 +++ .../ui/src/app/progress/progress.component.ts | 270 + .../ui/src/app/progress/progress.module.ts | 61 + .../app/services/notification.service.spec.ts | 33 + .../src/app/services/notification.service.ts | 32 + .../ui/src/app/services/state.service.spec.ts | 39 + modules/ui/src/app/services/state.service.ts | 17 + .../src/app/services/test-run.service.spec.ts | 219 + .../ui/src/app/services/test-run.service.ts | 147 + modules/ui/src/index.html | 6 + modules/ui/src/styles.scss | 27 + testing/unit/run_tests.sh | 3 +- testing/unit/tls/monitor.pcap | Bin 0 -> 82020 bytes testing/unit/tls/no_tls.pcap | Bin 0 -> 6266 bytes testing/unit/tls/unsupported_tls.pcap | Bin 0 -> 14904 bytes 106 files changed, 12442 insertions(+), 376 deletions(-) create mode 100644 docs/roadmap.pdf create mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.html create mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.scss create mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.spec.ts create mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.ts create mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.html create mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.scss create mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts create mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.ts create mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.html create mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss create mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts create mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts create mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.html create mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.spec.ts create mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.ts create mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.html create mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss create mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts create mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts create mode 100644 modules/ui/src/app/device-repository/device-form/device-form.component.html create mode 100644 modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts create mode 100644 modules/ui/src/app/device-repository/device-repository.component.html create mode 100644 modules/ui/src/app/device-repository/device-repository.component.spec.ts create mode 100644 modules/ui/src/app/device-repository/device-repository.component.ts create mode 100644 modules/ui/src/app/device-repository/device-repository.module.ts create mode 100644 modules/ui/src/app/history/history.component.html create mode 100644 modules/ui/src/app/history/history.component.spec.ts create mode 100644 modules/ui/src/app/history/history.component.ts create mode 100644 modules/ui/src/app/history/history.module.ts create mode 100644 modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.ts create mode 100644 modules/ui/src/app/progress/progress-status-card/progress-status-card.component.html create mode 100644 modules/ui/src/app/progress/progress-status-card/progress-status-card.component.ts create mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.html create mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.spec.ts create mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.ts create mode 100644 modules/ui/src/app/progress/progress.component.spec.ts create mode 100644 modules/ui/src/app/progress/progress.component.ts create mode 100644 modules/ui/src/app/progress/progress.module.ts create mode 100644 modules/ui/src/app/services/state.service.spec.ts create mode 100644 modules/ui/src/app/services/state.service.ts create mode 100644 testing/unit/tls/monitor.pcap create mode 100644 testing/unit/tls/no_tls.pcap create mode 100644 testing/unit/tls/unsupported_tls.pcap diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index e445284cd..84ac510f5 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -25,38 +25,6 @@ jobs: - name: Run baseline tests shell: bash {0} run: testing/baseline/test_baseline - - # testrun_tests: - # permissions: {} - # name: Tests - # runs-on: ubuntu-20.04 - # needs: testrun_baseline - # timeout-minutes: 45 - # steps: - # - name: Checkout source - # uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - # - name: Install dependencies - # shell: bash {0} - # run: cmd/prepare - # - name: Package Testrun - # shell: bash {0} - # run: cmd/package - # - name: Install Testrun - # shell: bash {0} - # run: sudo dpkg -i testrun*.deb - # - name: Run tests - # shell: bash {0} - # run: testing/tests/test_tests - # - name: Archive runtime results - # if: ${{ always() }} - # run: sudo tar --exclude-vcs -czf runtime.tgz /usr/local/testrun/runtime/ - # - name: Upload runtime results - # uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 - # if: ${{ always() }} - # with: - # if-no-files-found: error - # name: runtime_tests_${{ github.run_id }} - # path: runtime.tgz testrun_api: permissions: {} diff --git a/.gitignore b/.gitignore index 0d985dd29..b4d001453 100644 --- a/.gitignore +++ b/.gitignore @@ -17,4 +17,4 @@ testing/unit/report/output/ *.deb make/DEBIAN/postinst -testrun.log \ No newline at end of file +testrun.log diff --git a/README.md b/README.md index fcce0752e..78d878cfe 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ [![CodeQL](https://github.com/google/testrun/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/google/testrun/actions/workflows/github-code-scanning/codeql) [![Testrun test suite](https://github.com/google/testrun/actions/workflows/testing.yml/badge.svg?branch=main&event=push)](https://github.com/google/testrun/actions/workflows/testing.yml) +Disclaimer: Testrun uses Google Analytics to learn about how our users use Testrun. By installing and running Testrun, you understand and accept the Terms of Service found [here](https://policies.google.com/technologies/partner-sites). + ## Introduction :wave: Testrun automates specific test cases to verify network and security functionality in IoT devices. It is an open source tool which allows manufacturers of IP capable devices to test their devices for the purposes of Device Qualification within the BOS program. diff --git a/cmd/package b/cmd/package index f987f625b..ba9f04133 100755 --- a/cmd/package +++ b/cmd/package @@ -53,4 +53,4 @@ cp -r {framework,modules} $MAKE_SRC_DIR/usr/local/testrun dpkg-deb --build --root-owner-group make # Rename the .deb file -mv make.deb testrun_1-2-alpha_amd64.deb +mv make.deb testrun_1-2_amd64.deb diff --git a/docs/roadmap.pdf b/docs/roadmap.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a3e4dfa0aba047ebd5124d2a0954538dea746a14 GIT binary patch literal 386261 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

Hdn~T? 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Ě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 DK@bsk literal 0 HcmV?d00001 diff --git a/framework/python/src/common/testreport.py b/framework/python/src/common/testreport.py index c9bde77f7..75cbf09df 100644 --- a/framework/python/src/common/testreport.py +++ b/framework/python/src/common/testreport.py @@ -58,7 +58,7 @@ def __init__(self, self._report_url = '' self._cur_page = 0 # Placeholder until available in json report - self._version = 'v1.2-alpha' + self._version = 'v1.2' def add_module_reports(self, module_reports): self._module_reports = module_reports @@ -223,82 +223,13 @@ def generate_results_page(self, json_data, page_num): page += '

' return page - def generate_module_pages(self, json_data, module_reports): - # ToDo: Figure out how to make this dynamic - # Content max size taken from css module-page-conten class - content_max_size = 913 - header_padding = 40 # Top and bottom padding for markdown headers - page_content = '' - pages = '' - content_size = 0 - content = module_reports.split('\n') - active_table = False - - for line in content: - if '' in line: - content_size += 39 - elif '
  • ' in line: - content_size += 20 - - if '' in line: - active_table = False - # If the current line is within the content size limit over the - # we'll add it to this page, otherweise, we'll put it on the next - # page. Also make sure that if there is less than 20 pixels - # left after a header, start a new page or the summary - # title will be left with no information after it. Current minimum - # summary item is 20 pixels, adjust if we update the
  • element. - if content_size >= content_max_size or ( - '\n' - if active_table else '') - page_content += line + '\n' - if len(page_content) > 0: - page = self.generate_module_page(json_data, page_content) - pages += page + '\n' - return pages - - def generate_module_page(self, json_data, module_reports): - self._cur_page += 1 - page = '
    ' - page += self.generate_header(json_data) - page += f''' -
    - {module_reports} -
    ''' - page += self.generate_footer(self._cur_page) - page += '
    ' #Page end - page += '
    ' - return page - def generate_body(self, json_data): - self._num_pages = 0 - self._cur_page = 0 - body = f''' + return f''' {self.generate_pages(json_data)} {self.generate_module_reports(json_data)} ''' - # Set the max pages after all pages have been generated - return body.replace('MAX_PAGE', str(self._cur_page)) def generate_module_reports(self, json_data): content = '' @@ -437,6 +368,36 @@ def generate_summary(self, json_data): summary += '' + # Add device configuration + summary += ''' +
    +
    +

    Device Configuration

    +
    + ''' + + if 'test_modules' in json_data['device']: + + sorted_modules = {} + + for test_module in json_data['device']['test_modules']: + if 'enabled' in json_data['device']['test_modules'][test_module]: + sorted_modules[test_module] = json_data['device']['test_modules'][ + test_module]['enabled'] + + # Sort the modules by enabled first + sorted_modules = sorted(sorted_modules.items(), + key=lambda x:x[1], + reverse=True) + + for module in sorted_modules: + summary += self.generate_device_module_label( + module[0], + module[1] + ) + + summary += '
    ' + # Add the result summary summary += self.generate_result_summary(json_data) diff --git a/make/DEBIAN/control b/make/DEBIAN/control index 13cf19004..df5f6d9fb 100644 --- a/make/DEBIAN/control +++ b/make/DEBIAN/control @@ -1,5 +1,5 @@ Package: Testrun -Version: 1.2-alpha +Version: 1.2 Architecture: amd64 Maintainer: Google Homepage: https://github.com/google/testrun diff --git a/modules/test/base/python/src/test_module.py b/modules/test/base/python/src/test_module.py index 54e3c3008..3bb0dd230 100644 --- a/modules/test/base/python/src/test_module.py +++ b/modules/test/base/python/src/test_module.py @@ -101,9 +101,8 @@ def run_tests(self): else: result = getattr(self, test_method_name)() except Exception as e: - LOGGER.info(f'An error occurred whilst running {test["name"]}') + LOGGER.error(f'An error occurred whilst running {test["name"]}') LOGGER.error(e) - return None else: LOGGER.info(f'Test {test["name"]} not implemented. Skipping') result = None diff --git a/modules/test/tls/python/src/tls_module.py b/modules/test/tls/python/src/tls_module.py index 72a6b1c92..579f73d8c 100644 --- a/modules/test/tls/python/src/tls_module.py +++ b/modules/test/tls/python/src/tls_module.py @@ -26,8 +26,7 @@ STARTUP_CAPTURE_FILE = '/runtime/device/startup.pcap' MONITOR_CAPTURE_FILE = '/runtime/device/monitor.pcap' TLS_CAPTURE_FILE = '/runtime/output/tls.pcap' - -LOGGER = None +GATEWAY_CAPTURE_FILE = '/runtime/network/gateway.pcap' class TLSModule(TestModule): @@ -252,9 +251,8 @@ def _validate_tls_client(self, client_ip, tls_version): client_results = self._tls_util.validate_tls_client( client_ip=client_ip, tls_version=tls_version, - capture_files=[ - MONITOR_CAPTURE_FILE, STARTUP_CAPTURE_FILE, GATEWAY_CAPTURE_FILE - ]) + capture_files=[MONITOR_CAPTURE_FILE,STARTUP_CAPTURE_FILE, + GATEWAY_CAPTURE_FILE]) # Generate results based on the state result_message = 'No outbound connections were found.' diff --git a/modules/test/tls/python/src/tls_util.py b/modules/test/tls/python/src/tls_util.py index 85ddcc012..3a196d5b8 100644 --- a/modules/test/tls/python/src/tls_util.py +++ b/modules/test/tls/python/src/tls_util.py @@ -83,6 +83,9 @@ def get_public_certificate(self, except ssl.SSLError as e: LOGGER.info(f'SSL error occurred: {e}') return None + except socket.timeout: + LOGGER.info('Socket timeout error') + return None return cert_pem diff --git a/modules/ui/package-lock.json b/modules/ui/package-lock.json index f358af851..a37802507 100644 --- a/modules/ui/package-lock.json +++ b/modules/ui/package-lock.json @@ -8,6 +8,7 @@ "name": "test-run-ui", "version": "0.0.0", "dependencies": { +<<<<<<< HEAD "@angular/animations": "^17.0.8", "@angular/cdk": "^17.0.4", "@angular/common": "^17.0.8", @@ -39,6 +40,36 @@ "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", +======= + "@angular/animations": "^16.2.12", + "@angular/cdk": "^16.2.13", + "@angular/common": "^16.2.12", + "@angular/compiler": "^16.2.12", + "@angular/core": "^16.2.12", + "@angular/forms": "^16.2.12", + "@angular/material": "^16.2.13", + "@angular/platform-browser": "^16.2.12", + "@angular/platform-browser-dynamic": "^16.2.12", + "@angular/router": "^16.2.12", + "ngx-mask": "^16.4.2", + "rxjs": "~7.8.0", + "tslib": "^2.6.2", + "zone.js": "~0.13.3" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.12", + "@angular-eslint/builder": "16.2.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@angular-eslint/schematics": "16.2.0", + "@angular-eslint/template-parser": "16.2.0", + "@angular/cli": "~16.1.8", + "@angular/compiler-cli": "^16.2.12", + "@types/jasmine": "~4.3.6", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "eslint": "^8.56.0", +>>>>>>> main "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jasmine-core": "~4.6.0", @@ -47,6 +78,7 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", +<<<<<<< HEAD "prettier": "^3.2.5", "prettier-eslint": "^16.3.0", "typescript": "~5.2.2" @@ -59,6 +91,20 @@ "dev": true, "engines": { "node": ">=0.10.0" +======= + "prettier": "^3.1.1", + "prettier-eslint": "^16.2.0", + "typescript": "~5.1.3" +>>>>>>> main + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { @@ -75,12 +121,21 @@ } }, "node_modules/@angular-devkit/architect": { +<<<<<<< HEAD "version": "0.1702.2", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1702.2.tgz", "integrity": "sha512-qBvif8/NquFUqVQgs4U+8wXh/rQZv+YlYwg6eDZly1bIaTd/k9spko/seTtNT1OpK/Be+GLo5IbiQ7i2SON3iQ==", "dev": true, "dependencies": { "@angular-devkit/core": "17.2.2", +======= + "version": "0.1602.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", + "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.12", +>>>>>>> main "rxjs": "7.8.1" }, "engines": { @@ -90,6 +145,7 @@ } }, "node_modules/@angular-devkit/build-angular": { +<<<<<<< HEAD "version": "17.2.2", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.2.2.tgz", "integrity": "sha512-K55xBiWBfxD4wmxLR2viOPbBryOk6YaZeNr72IMkp1yIrIy1BES6LDJi7R9fDW7+TprqZdM4B91Tkc+BCwYQzQ==", @@ -125,11 +181,51 @@ "https-proxy-agent": "7.0.2", "inquirer": "9.2.14", "jsonc-parser": "3.2.1", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", + "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.1", + "@angular-devkit/architect": "0.1602.12", + "@angular-devkit/build-webpack": "0.1602.12", + "@angular-devkit/core": "16.2.12", + "@babel/core": "7.22.9", + "@babel/generator": "7.22.9", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.7", + "@babel/plugin-transform-async-to-generator": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", + "@babel/runtime": "7.22.6", + "@babel/template": "7.22.5", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "16.2.12", + "@vitejs/plugin-basic-ssl": "1.0.1", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.14", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.20", + "css-loader": "6.8.1", + "esbuild-wasm": "0.18.17", + "fast-glob": "3.3.1", + "guess-parser": "0.4.22", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", +>>>>>>> main "karma-source-map-support": "1.4.0", "less": "4.2.0", "less-loader": "11.1.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.1", +<<<<<<< HEAD "magic-string": "0.30.7", "mini-css-extract-plugin": "2.8.0", "mrmime": "2.0.0", @@ -157,6 +253,34 @@ "webpack-dev-middleware": "6.1.1", "webpack-dev-server": "4.15.1", "webpack-merge": "5.10.0", +======= + "magic-string": "0.30.1", + "mini-css-extract-plugin": "2.7.6", + "mrmime": "1.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "2.3.1", + "piscina": "4.0.0", + "postcss": "8.4.31", + "postcss-loader": "7.3.3", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.64.1", + "sass-loader": "13.3.2", + "semver": "7.5.4", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.19.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.6.1", + "vite": "4.5.2", + "webpack": "5.88.2", + "webpack-dev-middleware": "6.1.1", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.9.0", +>>>>>>> main "webpack-subresource-integrity": "5.1.0" }, "engines": { @@ -165,7 +289,11 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { +<<<<<<< HEAD "esbuild": "0.20.0" +======= + "esbuild": "0.18.17" +>>>>>>> main }, "peerDependencies": { "@angular/compiler-cli": "^17.0.0", @@ -218,6 +346,7 @@ } } }, +<<<<<<< HEAD "node_modules/@angular-devkit/build-webpack": { "version": "0.1702.2", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1702.2.tgz", @@ -225,6 +354,21 @@ "dev": true, "dependencies": { "@angular-devkit/architect": "0.1702.2", +======= + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1602.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", + "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.12", +>>>>>>> main "rxjs": "7.8.1" }, "engines": { @@ -238,9 +382,60 @@ } }, "node_modules/@angular-devkit/core": { +<<<<<<< HEAD "version": "17.2.2", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.2.2.tgz", "integrity": "sha512-bKMi6bBkEeN4a3qTxCykhrAvE0ESHhKO38Qh1bN/8QSyvKVAEyVAVls5W9IN5GKRHvXgEn9aw+DSzRnPpy9nyw==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", + "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.8.tgz", + "integrity": "sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.8", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", + "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", +>>>>>>> main "dev": true, "dependencies": { "ajv": "8.12.0", @@ -264,6 +459,7 @@ } } }, +<<<<<<< HEAD "node_modules/@angular-devkit/schematics": { "version": "17.0.10", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.10.tgz", @@ -280,6 +476,144 @@ "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" +======= + "node_modules/@angular-devkit/schematics/node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-eslint/builder": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.2.0.tgz", + "integrity": "sha512-SZjXOi3YIjuX2CocuRsR2QH6k1ca9lRO6IMm0YIYMmBPFCRP2KFHkL6aQnXM6DSaymQNN2TXfpuvUd45NxhU1w==", + "dev": true, + "dependencies": { + "@nx/devkit": "16.5.1", + "nx": "16.5.1" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.2.0.tgz", + "integrity": "sha512-ct9orDYxkMl2+uvM7UBfgV28Dq57V4dEs+Drh7cD673JIMa6sXbgmd0QEtm8W3cmyK/jcTzmuoufxbH7hOxd6g==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.2.0.tgz", + "integrity": "sha512-zdiAIox1T+B71HL+A8m+1jWdU34nvPGLhCRw/uZNwHzknsF4tYzNQ9W7T/SC/g/2s1yT2yNosEVNJSGSFvunJg==", + "dev": true, + "dependencies": { + "@angular-eslint/utils": "16.2.0", + "@typescript-eslint/utils": "5.62.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.2.0.tgz", + "integrity": "sha512-YFdQ6hHX6NlQj0lfogZwfyKjU8pqkJU+Zsk0ehjlXP8VfKFVmDeQT5/Xr6Df9C8pveC3hvq6Jgd8vo67S9Enxg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.2.0", + "@angular-eslint/utils": "16.2.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "aria-query": "5.3.0", + "axobject-query": "3.2.1" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/schematics": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.2.0.tgz", + "integrity": "sha512-2JUVR7hAKx37mgWeDjvyWEMH5uSeeksYuaQT5wwlgIzgrO4BNFuqs6Rgyp2jiYa7BFMX/qHULSa+bSq5J5ceEA==", + "dev": true, + "dependencies": { + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@nx/devkit": "16.5.1", + "ignore": "5.2.4", + "nx": "16.5.1", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "peerDependencies": { + "@angular/cli": ">= 16.0.0 < 17.0.0" + } + }, + "node_modules/@angular-eslint/schematics/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.2.0.tgz", + "integrity": "sha512-v2jVKTy2wN7iM9nHpBkxLn2wfL8jSl4IlPrXThIqj8No2VHtpLQZPKuXbGPUXQX05VS2Mj5feScQ36ZVGS8Rbw==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.2.0", + "eslint-scope": "^7.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.2.0.tgz", + "integrity": "sha512-NxMRwnlIgzmbJQfWkfd9y3Sz0hzjFdK5LH44i+3D5NhpPdZ6SzwHAjMYWoYsmmNQX5tlDXoicYF9Mz9Wz8DJ/A==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "16.2.0", + "@typescript-eslint/utils": "5.62.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" +>>>>>>> main } }, "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { @@ -438,9 +772,15 @@ } }, "node_modules/@angular/animations": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.2.3.tgz", "integrity": "sha512-eQcN6hC/dXISEYC/TjRuQJgfdZieBROBlXrS+BxRbsy9T4/QeKxChC3yiNxTmdxl5mvjLKvQTXHR8X0AWc07/Q==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.12.tgz", + "integrity": "sha512-MD0ElviEfAJY8qMOd6/jjSSvtqER2RDAi0lxe6EtUacC1DHCYkaPrKW4vLqY+tmZBg1yf+6n+uS77pXcHHcA3w==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -448,6 +788,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/core": "17.2.3" } }, @@ -455,6 +796,15 @@ "version": "17.2.1", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.2.1.tgz", "integrity": "sha512-9cWV9MyWnpImns/WQApgoQBKblXA9Zx2CpCkDNipRgx9RyvGrvCLjpEfwQI4HjpPAQDI1trsbeJKihzgz4tFgw==", +======= + "@angular/core": "16.2.12" + } + }, + "node_modules/@angular/cdk": { + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.13.tgz", + "integrity": "sha512-8kn2X2yesvgfIbCUNoS9EDjooIx9LwEglYBbD89Y/do8EeN/CC3Tn02gqSrEfgMhYBLBJmHXbfOhbDDvcvOCeg==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -468,6 +818,7 @@ } }, "node_modules/@angular/cli": { +<<<<<<< HEAD "version": "17.0.10", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.10.tgz", "integrity": "sha512-52rd8KmOMe3NJDp/wA+Mwj21qd4HR8fuLtfrErgVnZaJZKX2Bzi/z7FHQD3gdgMAdzUiG0OJWGM0h75Ls9X6Gw==", @@ -477,6 +828,17 @@ "@angular-devkit/core": "17.0.10", "@angular-devkit/schematics": "17.0.10", "@schematics/angular": "17.0.10", +======= + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.8.tgz", + "integrity": "sha512-amOIHMq8EvixhnI+do5Bcy6IZSFAJx0njhhLM4ltDuNUczH8VH0hNegZKxhb8K87AMO8jITFM+NLrzccyghsDQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1601.8", + "@angular-devkit/core": "16.1.8", + "@angular-devkit/schematics": "16.1.8", + "@schematics/angular": "16.1.8", +>>>>>>> main "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -502,6 +864,7 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { +<<<<<<< HEAD "version": "0.1700.10", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1700.10.tgz", "integrity": "sha512-JD/3jkdN1jrFMIDEk9grKdbjutIoxUDMRazq1LZooWjTkzlYk09i/s6HwvIPao7zvxJfelD6asTPspgkjOMP5A==", @@ -676,6 +1039,85 @@ "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.2.3.tgz", "integrity": "sha512-XR3rWS4W7/+RknyJMUUo9E81mSeyUznpclqTZ+Hy7+i4Naeso0qcRaIyr6JJmB5UGvlnfT1MlH9Fj78Dc80NEw==", +======= + "version": "0.1601.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.8.tgz", + "integrity": "sha512-kOXVGwsQnZvtz2UZNefcEy64Jiwq0eSoQUeozvDXOaYRJABLjPKI2YaarvKC9/Z1SGLuje0o/eRJO4T8aRk9rQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.8", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", + "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@angular/common": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", + "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -683,14 +1125,24 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/core": "17.2.3", +======= + "@angular/core": "16.2.12", +>>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.2.3.tgz", "integrity": "sha512-U2okLZ+4ipD5zTv32pMp+RsrM3kkP0XneSsIMPRpYZZfKgfnGLIwkRx6FoVoBwByugng6lBG/PiIe8DhRU/HFg==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", + "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -698,7 +1150,11 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/core": "17.2.3" +======= + "@angular/core": "16.2.12" +>>>>>>> main }, "peerDependenciesMeta": { "@angular/core": { @@ -707,12 +1163,21 @@ } }, "node_modules/@angular/compiler-cli": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.2.3.tgz", "integrity": "sha512-mATybangypneXwO270VQeIw3N0avzc2Lpvdb8nm9WZYj23AcTUzpUUKOn63HtJdwMT5J2GjkyZFSRXisiPmpkA==", "dev": true, "dependencies": { "@babel/core": "7.23.9", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", + "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", + "dev": true, + "dependencies": { + "@babel/core": "7.23.2", +>>>>>>> main "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", @@ -730,17 +1195,102 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/compiler": "17.2.3", "typescript": ">=5.2 <5.4" +======= + "@angular/compiler": "16.2.12", + "typescript": ">=4.9.3 <5.2" +>>>>>>> main } }, - "node_modules/@angular/core": { - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.2.3.tgz", - "integrity": "sha512-DU+RdUB4E4I489R2P2hOrgkCDJNXlVaTzYixpgeDnuldCIYM0MatEzjor9DYNL3EDCayHF+M4HlVOcn6T/IVPQ==", + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, "dependencies": { - "tslib": "^2.3.0" - }, + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/core": { +<<<<<<< HEAD + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.2.3.tgz", + "integrity": "sha512-DU+RdUB4E4I489R2P2hOrgkCDJNXlVaTzYixpgeDnuldCIYM0MatEzjor9DYNL3EDCayHF+M4HlVOcn6T/IVPQ==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", + "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", +>>>>>>> main + "dependencies": { + "tslib": "^2.3.0" + }, "engines": { "node": "^18.13.0 || >=20.9.0" }, @@ -750,9 +1300,15 @@ } }, "node_modules/@angular/forms": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.2.3.tgz", "integrity": "sha512-v+/6pimht808F5XpmVTNV4/109s+A7m3nadQP97qvIDsrtwrPPZR7cST+DRioG2C41VwtjXM0HVbIon/3ydo6A==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", + "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -760,13 +1316,20 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/core": "17.2.3", "@angular/platform-browser": "17.2.3", +======= + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", +>>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { +<<<<<<< HEAD "version": "17.2.1", "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.2.1.tgz", "integrity": "sha512-NLQJkX4XiwIm32dGdNseoc+ARn6JvuB2xMY5XfWTtjJBbQaPk5sIvjH4wsAEeYqDKtZbRCjxGwRz0K1djyaVqQ==", @@ -827,13 +1390,81 @@ "@angular/core": "^17.0.0 || ^18.0.0", "@angular/forms": "^17.0.0 || ^18.0.0", "@angular/platform-browser": "^17.0.0 || ^18.0.0", +======= + "version": "16.2.13", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.13.tgz", + "integrity": "sha512-7gP9KlaVZGpCeJlwXlD7puTiafAHYAbgYoODEQLbPCiAL/woFFDvM+DCdos7lmCBMyt6+10bkrPvz8cVfyTfQg==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/auto-init": "15.0.0-canary.bc9ae6c9c.0", + "@material/banner": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/button": "15.0.0-canary.bc9ae6c9c.0", + "@material/card": "15.0.0-canary.bc9ae6c9c.0", + "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", + "@material/chips": "15.0.0-canary.bc9ae6c9c.0", + "@material/circular-progress": "15.0.0-canary.bc9ae6c9c.0", + "@material/data-table": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dialog": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/drawer": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/fab": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", + "@material/form-field": "15.0.0-canary.bc9ae6c9c.0", + "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", + "@material/image-list": "15.0.0-canary.bc9ae6c9c.0", + "@material/layout-grid": "15.0.0-canary.bc9ae6c9c.0", + "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/linear-progress": "15.0.0-canary.bc9ae6c9c.0", + "@material/list": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", + "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", + "@material/radio": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/segmented-button": "15.0.0-canary.bc9ae6c9c.0", + "@material/select": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/slider": "15.0.0-canary.bc9ae6c9c.0", + "@material/snackbar": "15.0.0-canary.bc9ae6c9c.0", + "@material/switch": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-bar": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-scroller": "15.0.0-canary.bc9ae6c9c.0", + "@material/textfield": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tooltip": "15.0.0-canary.bc9ae6c9c.0", + "@material/top-app-bar": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^16.0.0 || ^17.0.0", + "@angular/cdk": "16.2.13", + "@angular/common": "^16.0.0 || ^17.0.0", + "@angular/core": "^16.0.0 || ^17.0.0", + "@angular/forms": "^16.0.0 || ^17.0.0", + "@angular/platform-browser": "^16.0.0 || ^17.0.0", +>>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.2.3.tgz", "integrity": "sha512-bFi+H8avyCjwSBy+zpOKmqx852MRH8fkuZa4XgwKCPJRay8BfSCjHdtIo3eokUNPMu9JsyXM7HYKIfzLu5y6LA==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", + "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -841,9 +1472,15 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/animations": "17.2.3", "@angular/common": "17.2.3", "@angular/core": "17.2.3" +======= + "@angular/animations": "16.2.12", + "@angular/common": "16.2.12", + "@angular/core": "16.2.12" +>>>>>>> main }, "peerDependenciesMeta": { "@angular/animations": { @@ -852,9 +1489,15 @@ } }, "node_modules/@angular/platform-browser-dynamic": { +<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.2.3.tgz", "integrity": "sha512-K8CsHbmG2nvV1jrNN9PYxyA0zJNoIWp+qf2udvPhG8rJ+Pyw61qmptrarpQUUkr8ONOtjwtOsnKa9/w+15nExw==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", + "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -862,6 +1505,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/compiler": "17.2.3", "@angular/core": "17.2.3", @@ -872,6 +1516,18 @@ "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.2.3.tgz", "integrity": "sha512-8UPjMzI98xZ6cDNm0MzHd9hFq6aOQJGmgxKDUPIG2h74glRwwbiewpo5hPo2EGIF8BLvQmmAm9ytr5zesHu0cg==", +======= + "@angular/common": "16.2.12", + "@angular/compiler": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12" + } + }, + "node_modules/@angular/router": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", + "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -879,19 +1535,34 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { +<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/core": "17.2.3", "@angular/platform-browser": "17.2.3", +======= + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", +>>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@babel/code-frame": { +<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", +======= + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.22.13", +>>>>>>> main "chalk": "^2.4.2" }, "engines": { @@ -899,15 +1570,22 @@ } }, "node_modules/@babel/compat-data": { +<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", +======= + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", + "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", +>>>>>>> main "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", @@ -927,6 +1605,27 @@ "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", +======= + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", +>>>>>>> main "semver": "^6.3.1" }, "engines": { @@ -953,9 +1652,15 @@ } }, "node_modules/@babel/generator": { +<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", +======= + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", +>>>>>>> main "dev": true, "dependencies": { "@babel/types": "^7.23.6", @@ -992,6 +1697,7 @@ } }, "node_modules/@babel/helper-compilation-targets": { +<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", @@ -1000,6 +1706,16 @@ "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", "browserslist": "^4.22.2", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", +>>>>>>> main "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1017,6 +1733,7 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { +<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", @@ -1028,6 +1745,19 @@ "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", +>>>>>>> main "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -1075,9 +1805,15 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { +<<<<<<< HEAD "version": "0.5.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", +======= + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -1107,6 +1843,23 @@ "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" +<<<<<<< HEAD +======= + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" +>>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -1149,9 +1902,15 @@ } }, "node_modules/@babel/helper-module-transforms": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", + "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1277,9 +2036,15 @@ } }, "node_modules/@babel/helper-validator-option": { +<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", +>>>>>>> main "dev": true, "engines": { "node": ">=6.9.0" @@ -1294,12 +2059,30 @@ "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", "@babel/types": "^7.22.19" +<<<<<<< HEAD +======= + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" +>>>>>>> main }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { +<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", @@ -1308,15 +2091,45 @@ "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.0", "@babel/types": "^7.24.0" +======= + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", + "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" +>>>>>>> main }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", +======= + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", @@ -1328,9 +2141,15 @@ } }, "node_modules/@babel/parser": { +<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", +>>>>>>> main "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -1340,9 +2159,15 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { +<<<<<<< HEAD "version": "7.23.3", "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.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", +======= + "version": "7.22.15", + "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.22.15.tgz", + "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1355,14 +2180,24 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", + "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", +<<<<<<< HEAD "@babel/plugin-transform-optional-chaining": "^7.23.3" +======= + "@babel/plugin-transform-optional-chaining": "^7.22.15" +>>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -1371,10 +2206,18 @@ "@babel/core": "^7.13.0" } }, +<<<<<<< HEAD "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", +======= + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1399,6 +2242,26 @@ "@babel/core": "^7.0.0-0" } }, +<<<<<<< HEAD +======= + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, +>>>>>>> main "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -1650,9 +2513,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", +======= + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", + "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -1700,9 +2569,15 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", + "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1731,12 +2606,21 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", + "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.11", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -1748,6 +2632,7 @@ } }, "node_modules/@babel/plugin-transform-classes": { +<<<<<<< HEAD "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", @@ -1759,6 +2644,20 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", + "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", +>>>>>>> main "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1786,9 +2685,15 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", + "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -1832,9 +2737,15 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", + "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1864,9 +2775,15 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", + "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1880,9 +2797,15 @@ } }, "node_modules/@babel/plugin-transform-for-of": { +<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", + "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1913,9 +2836,15 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", + "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1944,9 +2873,15 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", + "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -1975,12 +2910,21 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", + "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -1991,12 +2935,21 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", + "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.0", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -2008,6 +2961,7 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", @@ -2015,6 +2969,15 @@ "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", + "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.0", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20" }, @@ -2073,9 +3036,15 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", + "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2089,9 +3058,15 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", + "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2105,6 +3080,7 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { +<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", @@ -2115,6 +3091,18 @@ "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.23.3" +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", + "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.15" +>>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -2140,9 +3128,15 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", + "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2156,9 +3150,15 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", +======= + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", + "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2173,9 +3173,15 @@ } }, "node_modules/@babel/plugin-transform-parameters": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", +======= + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", + "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2204,6 +3210,7 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { +<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", @@ -2211,6 +3218,15 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", +======= + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", + "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.11", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -2237,9 +3253,15 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", +======= + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2268,16 +3290,28 @@ } }, "node_modules/@babel/plugin-transform-runtime": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", +======= + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", +<<<<<<< HEAD "babel-plugin-polyfill-corejs2": "^0.4.8", "babel-plugin-polyfill-corejs3": "^0.9.0", "babel-plugin-polyfill-regenerator": "^0.5.5", +======= + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", +>>>>>>> main "semver": "^6.3.1" }, "engines": { @@ -2373,9 +3407,15 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { +<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", +======= + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2436,6 +3476,7 @@ } }, "node_modules/@babel/preset-env": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", @@ -2443,6 +3484,15 @@ "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", +======= + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", +>>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", @@ -2467,6 +3517,7 @@ "@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", +<<<<<<< HEAD "@babel/plugin-transform-arrow-functions": "^7.23.3", "@babel/plugin-transform-async-generator-functions": "^7.23.9", "@babel/plugin-transform-async-to-generator": "^7.23.3", @@ -2519,6 +3570,61 @@ "babel-plugin-polyfill-corejs2": "^0.4.8", "babel-plugin-polyfill-corejs3": "^0.9.0", "babel-plugin-polyfill-regenerator": "^0.5.5", +======= + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", +>>>>>>> main "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2539,9 +3645,15 @@ } }, "node_modules/@babel/preset-modules": { +<<<<<<< HEAD "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", +======= + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", +>>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -2559,9 +3671,15 @@ "dev": true }, "node_modules/@babel/runtime": { +<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", +======= + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", +>>>>>>> main "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2585,6 +3703,7 @@ } }, "node_modules/@babel/traverse": { +<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", @@ -2592,25 +3711,64 @@ "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", +======= + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", +>>>>>>> main "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", +<<<<<<< HEAD "@babel/parser": "^7.24.0", "@babel/types": "^7.24.0", "debug": "^4.3.1", +======= + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", + "debug": "^4.1.0", +>>>>>>> main "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, +<<<<<<< HEAD "node_modules/@babel/types": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { +======= + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { +>>>>>>> main "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" @@ -2637,6 +3795,7 @@ "node": ">=10.0.0" } }, +<<<<<<< HEAD "node_modules/@esbuild/aix-ppc64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz", @@ -2897,6 +4056,12 @@ "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", +======= + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", +>>>>>>> main "cpu": [ "x64" ], @@ -2909,6 +4074,7 @@ "node": ">=12" } }, +<<<<<<< HEAD "node_modules/@esbuild/netbsd-x64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz", @@ -2916,15 +4082,24 @@ "cpu": [ "x64" ], +======= + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "netbsd" - ], + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, +<<<<<<< HEAD "node_modules/@esbuild/openbsd-x64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz", @@ -2932,15 +4107,18 @@ "cpu": [ "x64" ], +======= + "node_modules/@eslint-community/regexpp": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", + "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "openbsd" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, +<<<<<<< HEAD "node_modules/@esbuild/sunos-x64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz", @@ -2948,15 +4126,32 @@ "cpu": [ "x64" ], +======= + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, +<<<<<<< HEAD "node_modules/@esbuild/win32-arm64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz", @@ -2964,31 +4159,56 @@ "cpu": [ "arm64" ], +======= + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", - "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", - "cpu": [ + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, +<<<<<<< HEAD + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", + "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", + "cpu": [ "ia32" ], +======= + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, +<<<<<<< HEAD "node_modules/@esbuild/win32-x64": { "version": "0.20.0", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz", @@ -2996,15 +4216,21 @@ "cpu": [ "x64" ], +======= + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", +>>>>>>> main "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, +<<<<<<< HEAD "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -3111,12 +4337,15 @@ "js-yaml": "bin/js-yaml.js" } }, +======= +>>>>>>> main "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, +<<<<<<< HEAD "node_modules/@eslint/eslintrc/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3129,6 +4358,8 @@ "node": "*" } }, +======= +>>>>>>> main "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -3142,14 +4373,21 @@ } }, "node_modules/@eslint/js": { +<<<<<<< HEAD "version": "8.57.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", +======= + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", +>>>>>>> main "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, +<<<<<<< HEAD "node_modules/@fastify/busboy": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", @@ -3167,12 +4405,23 @@ "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", +======= + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", +>>>>>>> main "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, +<<<<<<< HEAD "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3195,6 +4444,8 @@ "node": "*" } }, +======= +>>>>>>> main "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -3209,9 +4460,15 @@ } }, "node_modules/@humanwhocodes/object-schema": { +<<<<<<< HEAD "version": "2.0.2", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", +======= + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", +>>>>>>> main "dev": true }, "node_modules/@isaacs/cliui": { @@ -3339,6 +4596,21 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", +<<<<<<< HEAD +======= + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", +>>>>>>> main "dev": true, "dependencies": { "@sinclair/typebox": "^0.27.8" @@ -3362,9 +4634,15 @@ } }, "node_modules/@jridgewell/resolve-uri": { +<<<<<<< HEAD "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", +======= + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", +>>>>>>> main "dev": true, "engines": { "node": ">=6.0.0" @@ -3396,9 +4674,15 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { +<<<<<<< HEAD "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", +======= + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", +>>>>>>> main "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -3424,23 +4708,38 @@ } }, "node_modules/@material/animation": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-leRf+BcZTfC/iSigLXnYgcHAGvFVQveoJT5+2PIRdyPI/bIG7hhciRgacHRsCKC0sGya81dDblLgdkjSUemYLw==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/auto-init": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", "dependencies": { "@material/base": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-uxzDq7q3c0Bu1pAsMugc1Ik9ftQYQqZY+5e2ybNplT8gTImJhNt4M2mMiMHbMANk2l3UgICmUyRSomgPBWCPIA==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/banner": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", @@ -3456,18 +4755,42 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-SHeVoidCUFVhXANN6MNWxK9SZoTSgpIP8GZB7kAl52BywLxtV+FirTtLXkg/8RUkxZRyRWl7HvQ0ZFZa7QQAyA==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/button": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/base": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Fc3vGuOf+duGo22HTRP6dHdc+MUe0VqQfWOuKrn/wXKD62m0QQR2TqJd3rRhCumH557T5QUyheW943M3E+IGfg==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/button": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", @@ -3484,10 +4807,29 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-3AQgwrPZCTWHDJvwgKq7Cj+BurQ4wTjDdGL+FEnIGUAjJDskwi1yzx5tW2Wf/NxIi7IoPFyOY3UB41jwMiOrnw==", + "dependencies": { + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/card": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", @@ -3500,10 +4842,25 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-nPlhiWvbLmooTnBmV5gmzB0eLWSgLKsSRBYAbIBmO76Okgz1y+fQNLag+lpm/TDaHVsn5fmQJH8e0zIg0rYsQA==", + "dependencies": { + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/checkbox": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", @@ -3518,10 +4875,27 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-4tpNnO1L0IppoMF3oeQn8F17t2n0WHB0D7mdJK9rhrujen/fLbekkIC82APB3fdGtLGg3qeNqDqPsJm1YnmrwA==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/chips": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", @@ -3541,11 +4915,33 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-fqHKvE5bSWK0bXVkf57MWxZtytGqYBZvvHIOs4JI9HPHEhaJy4CpSw562BEtbm3yFxxALoQknvPW2KYzvADnmA==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/circular-progress": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", @@ -3557,10 +4953,24 @@ "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Lxe8BGAxQwCQqrLhrYrIP0Uok10h7aYS3RBXP41ph+5GmwJd5zdyE2t93qm2dyThvU6qKuXw9726Dtq/N+wvZQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/progress-indicator": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/data-table": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", @@ -3583,18 +4993,49 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-j/7qplT9+sUpfe4pyWhPbl01qJA+OoNAG3VMJruBBR461ZBKyTi7ssKH9yksFGZ8eCEPkOsk/+kDxsiZvRWkeQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", + "@material/linear-progress": "15.0.0-canary.bc9ae6c9c.0", + "@material/list": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/select": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/density": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Zt3u07fXrBWLW06Tl5fgvjicxNQMkFdawLyNTzZ5TvbXfVkErILLePwwGaw8LNcvzqJP6ABLA8jiR+sKNoJQCg==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/dialog": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", @@ -3613,20 +5054,50 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-o+9a/fmwJ9+gY3Z/uhj/PMVJDq7it1NTWKJn2GwAKdB+fDkT4hb9qEdcxMPyvJJ5ups+XiKZo03+tZrD+38c1w==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/button": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/dom": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", "dependencies": { "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-ly78R7aoCJtundSUu0UROU+5pQD5Piae0Y1MkN6bs0724azeazX1KeXFeaf06JOXnlr5/41ol+fSUPowjoqnOg==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/drawer": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", @@ -3642,10 +5113,28 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-PFL4cEFnt7VTxDsuspFVNhsFDYyumjU0VWfj3PWB7XudsEfQ3lo85D3HCEtTTbRsCainGN8bgYNDNafLBqiigw==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/list": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/elevation": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", @@ -3655,10 +5144,22 @@ "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Ro+Pk8jFuap+T0B0shA3xI1hs2b89dNQ2EIPCNjNMp87emHKAzJfhKb7EZGIwv3+gFLlVaLyIVkb94I89KLsyg==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/fab": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", @@ -3675,18 +5176,43 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-dvU0KWMRglwJEQwmQtFAmJcAjzg9VFF6Aqj78bJYu/DAIGFJ1VTTTSgoXM/XCm1YyQEZ7kZRvxBO37CH54rSDg==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/feature-targeting": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-wkDjVcoVEYYaJvun28IXdln/foLgPD7n9ZC9TY76GErGCwTq+HWpU6wBAAk+ePmpRFDayw4vI4wBlaWGxLtysQ==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/floating-label": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", @@ -3698,10 +5224,24 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-bUWPtXzZITOD/2mkvLkEPO1ngDWmb74y0Kgbz6llHLOQBtycyJIpuoQJ1q2Ez0NM/tFLwPphhAgRqmL3YQ/Kzw==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/focus-ring": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", @@ -3722,10 +5262,33 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-cZHThVose3GvAlJzpJoBI1iqL6d1/Jj9hXrR+r8Mwtb1hBIUEG3hxfsRd4vGREuzROPlf0OgNf/V+YHoSwgR5w==", + "dependencies": { + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0" + } + }, + "node_modules/@material/form-field": { + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-+JFXy5X44Gue1CbZZAQ6YejnI203lebYwL0i6k0ylDpWHEOdD5xkF2PyHR28r9/65Ebcbwbff6q7kI1SGoT7MA==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/icon-button": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", @@ -3740,10 +5303,27 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-1a0MHgyIwOs4RzxrVljsqSizGYFlM1zY2AZaLDsgT4G3kzsplTx8HZQ022GpUCjAygW+WLvg4z1qAhQHvsbqlw==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/image-list": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", @@ -3752,18 +5332,35 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-WKWmiYap2iu4QdqmeUSliLlN4O2Ueqa0OuVAYHn/TCzmQ2xmnhZ1pvDLbs6TplpOmlki7vFfe+aSt5SU9gwfOQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/layout-grid": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-5GqmT6oTZhUGWIb+CLD0ZNyDyTiJsr/rm9oRIi3+vCujACwxFkON9tzBlZohdtFS16nuzUusthN6Jt9UrJcN6Q==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/line-ripple": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", @@ -3772,10 +5369,21 @@ "@material/base": "15.0.0-canary.7f224ddd4.0", "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-8S30WXEuUdgDdBulzUDlPXD6qMzwCX9SxYb5mGDYLwl199cpSGdXHtGgEcCjokvnpLhdZhcT1Dsxeo1g2Evh5Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/linear-progress": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", @@ -3787,10 +5395,24 @@ "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-6EJpjrz6aoH2/gXLg9iMe0yF2C42hpQyZoHpmcgTLKeci85ktDvJIjwup8tnk8ULQyFiGiIrhXw2v2RSsiFjvQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/progress-indicator": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/list": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", @@ -3805,10 +5427,27 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-TQ1ppqiCMQj/P7bGD4edbIIv4goczZUoiUAaPq/feb1dflvrFMzYqJ7tQRRCyBL8nRhJoI2x99tk8Q2RXvlGUQ==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/menu": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", @@ -3824,10 +5463,28 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-IlAh61xzrzxXs38QZlt74UYt8J431zGznSzDtB1Fqs6YFNd11QPKoiRXn1J2Qu/lUxbFV7i8NBKMCKtia0n6/Q==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/list": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/menu-surface": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", @@ -3839,10 +5496,24 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-dMtSPN+olTWE+08M5qe4ea1IZOhVryYqzK0Gyb2u1G75rSArUxCOB5rr6OC/ST3Mq3RS6zGuYo7srZt4534K9Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/notched-outline": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", @@ -3853,18 +5524,37 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-WuurMg44xexkvLTBTnsO0A+qnzFjpcPdvgWBGstBepYozsvSF9zJGdb1x7Zv1MmqbpYh/Ohnuxtb/Y3jOh6irg==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/progress-indicator": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-uOnsvqw5F2fkeTnTl4MrYzjI7KCLmmLyZaM0cgLNuLsWVlddQE+SGMl28tENx7DUK3HebWq0FxCP8f25LuDD+w==", +>>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/radio": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", @@ -3878,10 +5568,26 @@ "@material/ripple": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-ehzOK+U1IxQN+OQjgD2lsnf1t7t7RAwQzeO6Czkiuid29ookYbQynWuLWk7NW8H8ohl7lnmfqTP1xSNkkL/F0g==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/ripple": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", @@ -3892,19 +5598,40 @@ "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-JfLW+g3GMVDv4cruQ19+HUxpKVdWCldFlIPw1UYezz2h3WTNDy05S3uP2zUdXzZ01C3dkBFviv4nqZ0GCT16MA==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/rtl": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", "dependencies": { "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-SkKLNLFp5QtG7/JEFg9R92qq4MzTcZ5As6sWbH7rRg6ahTHoJEuqE+pOb9Vrtbj84k5gtX+vCYPvCILtSlr2uw==", + "dependencies": { + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/segmented-button": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", @@ -3916,10 +5643,24 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-YDwkCWP9l5mIZJ7pZJZ2hMDxfBlIGVJ+deNzr8O+Z7/xC5LGXbl4R5aPtUVHygvXAXxpf5096ZD+dSXzYzvWlw==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/select": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", @@ -3942,10 +5683,35 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-unfOWVf7T0sixVG+3k3RTuATfzqvCF6QAzA6J9rlCh/Tq4HuIBNDdV4z19IVu4zwmgWYxY0iSvqWUvdJJYwakQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", + "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/list": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu": "15.0.0-canary.bc9ae6c9c.0", + "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", + "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/shape": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", @@ -3953,10 +5719,20 @@ "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Dsvr771ZKC46ODzoixLdGwlLEQLfxfLrtnRojXABoZf5G3o9KtJU+J+5Ld5aa960OAsCzzANuaub4iR88b1guA==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/slider": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", @@ -3971,10 +5747,27 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-3AEu+7PwW4DSNLndue47dh2u7ga4hDJRYmuu7wnJCIWJBnLCkp6C92kNc4Rj5iQY2ftJio5aj1gqryluh5tlYg==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/snackbar": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", @@ -3992,10 +5785,30 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-TwwQSYxfGK6mc03/rdDamycND6o+1p61WNd7ElZv1F1CLxB4ihRjbCoH7Qo+oVDaP8CTpjeclka+24RLhQq0mA==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/button": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/switch": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", @@ -4012,11 +5825,30 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-OjUjtT0kRz1ASAsOS+dNzwMwvsjmqy5edK57692qmrP6bL4GblFfBDoiNJ6t0AN4OaKcmL5Hy/xNrTdOZW7Qqw==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/tab": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", @@ -4031,10 +5863,27 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-s/L9otAwn/pZwVQZBRQJmPqYeNbjoEbzbjMpDQf/VBG/6dJ+aP03ilIBEkqo8NVnCoChqcdtVCoDNRtbU+yp6w==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/tab-bar": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", @@ -4050,10 +5899,28 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-Xmtq0wJGfu5k+zQeFeNsr4bUKv7L+feCmUp/gsapJ655LQKMXOUQZtSv9ZqWOfrCMy55hoF1CzGFV+oN3tyWWQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab-scroller": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/tab-indicator": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", @@ -4062,10 +5929,21 @@ "@material/base": "15.0.0-canary.7f224ddd4.0", "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-despCJYi1GrDDq7F2hvLQkObHnSLZPPDxnOzU16zJ6FNYvIdszgfzn2HgAZ6pl5hLOexQ8cla6cAqjTDuaJBhQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/tab-scroller": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", @@ -4075,10 +5953,22 @@ "@material/dom": "15.0.0-canary.7f224ddd4.0", "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/tab": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-QWHG/EWxirj4V9u2IHz+OSY9XCWrnNrPnNgEufxAJVUKV/A8ma1DYeFSQqxhX709R8wKGdycJksg0Flkl7Gq7w==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/tab": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/textfield": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", @@ -4097,19 +5987,48 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-R3qRex9kCaZIAK8DuxPnVC42R0OaW7AB7fsFknDKeTeVQvRcbnV8E+iWSdqTiGdsi6QQHifX8idUrXw+O45zPw==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/density": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", + "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/theme": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", "dependencies": { "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-CpUwXGE0dbhxQ45Hu9r9wbJtO/MAlv5ER4tBHA9tp/K+SU+lDgurBE2touFMg5INmdfVNtdumxb0nPPLaNQcUg==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/tokens": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", @@ -4133,11 +6052,37 @@ "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-nbEuGj05txWz6ZMUanpM47SaAD7soyjKILR+XwDell9Zg3bGhsnexCNXPEz2fD+YgomS+jM5XmIcaJJHg/H93Q==", + "dependencies": { + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0" + } + }, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-UzuXp0b9NuWuYLYpPguxrjbJnCmT/Cco8CkjI/6JajxaeA3o2XEBbQfRMTq8PTafuBjCHTc0b0mQY7rtxUp1Gg==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/button": "15.0.0-canary.bc9ae6c9c.0", + "@material/dom": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/top-app-bar": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", @@ -4150,10 +6095,25 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-vJWjsvqtdSD5+yQ/9vgoBtBSCvPJ5uF/DVssv8Hdhgs1PYaAcODUi77kdi0+sy/TaWyOsTkQixqmwnFS16zesA==", + "dependencies": { + "@material/animation": "15.0.0-canary.bc9ae6c9c.0", + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", + "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/shape": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", + "@material/typography": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/touch-target": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", @@ -4162,16 +6122,35 @@ "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-AqYh9fjt+tv4ZE0C6MeYHblS2H+XwLbDl2mtyrK0DOEnCVQk5/l5ImKDfhrUdFWHvS4a5nBM4AA+sa7KaroLoA==", + "dependencies": { + "@material/base": "15.0.0-canary.bc9ae6c9c.0", + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/typography": { +<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", "dependencies": { "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", +======= + "version": "15.0.0-canary.bc9ae6c9c.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.bc9ae6c9c.0.tgz", + "integrity": "sha512-CKsG1zyv34AKPNyZC8olER2OdPII64iR2SzQjpqh1UUvmIFiMPk23LvQ1OnC5aCB14pOXzmVgvJt31r9eNdZ6Q==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", + "@material/theme": "15.0.0-canary.bc9ae6c9c.0", +>>>>>>> main "tslib": "^2.1.0" } }, @@ -4226,9 +6205,15 @@ } }, "node_modules/@ngtools/webpack": { +<<<<<<< HEAD "version": "17.2.2", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.2.2.tgz", "integrity": "sha512-HgvClGO6WVq4VA5d0ZvlDG5hrj8lQzRH99Gt87URm7G8E5XkatysdOsMqUQsJz+OwFWhP4PvTRWVblpBDiDl/A==", +======= + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", + "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", +>>>>>>> main "dev": true, "engines": { "node": "^18.13.0 || >=20.9.0", @@ -4739,6 +6724,139 @@ "node": ">= 10" } }, + "node_modules/@nrwl/devkit": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==", + "dev": true, + "dependencies": { + "@nx/devkit": "16.5.1" + } + }, + "node_modules/@nrwl/tao": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.5.1.tgz", + "integrity": "sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==", + "dev": true, + "dependencies": { + "nx": "16.5.1" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nx/devkit": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.5.1.tgz", + "integrity": "sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==", + "dev": true, + "dependencies": { + "@nrwl/devkit": "16.5.1", + "ejs": "^3.1.7", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "nx": ">= 15 <= 17" + } + }, + "node_modules/@nx/devkit/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/devkit/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/devkit/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/@nx/devkit/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", + "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", + "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", + "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^3.2.1", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -4750,9 +6868,15 @@ } }, "node_modules/@pkgr/core": { +<<<<<<< HEAD "version": "0.1.1", "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", +======= + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", + "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", +>>>>>>> main "dev": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" @@ -4761,6 +6885,7 @@ "url": "https://opencollective.com/unts" } }, +<<<<<<< HEAD "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", @@ -4938,6 +7063,16 @@ "dependencies": { "@angular-devkit/core": "17.0.10", "@angular-devkit/schematics": "17.0.10", +======= + "node_modules/@schematics/angular": { + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.8.tgz", + "integrity": "sha512-gTHy1A/E9BCr0sj3VCr6eBYkgVkO96QWiZcFumedGnvstvp5wiCoIoJPLLfYaxVt1vt08xmnmS3OZ3r0qCLdpA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.1.8", + "@angular-devkit/schematics": "16.1.8", +>>>>>>> main "jsonc-parser": "3.2.0" }, "engines": { @@ -4947,20 +7082,33 @@ } }, "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { +<<<<<<< HEAD "version": "17.0.10", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.10.tgz", "integrity": "sha512-93N6oHnmtRt0hL3AXxvnk47sN1rHndfj+pqI5haEY41AGWzIWv9cSBsqlM0PWltNpo6VivcExZESvbLJ71wqbQ==", +======= + "version": "16.1.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", + "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", +>>>>>>> main "dev": true, "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", "jsonc-parser": "3.2.0", +<<<<<<< HEAD "picomatch": "3.0.1", +======= +>>>>>>> main "rxjs": "7.8.1", "source-map": "0.7.4" }, "engines": { +<<<<<<< HEAD "node": "^18.13.0 || >=20.9.0", +======= + "node": "^16.14.0 || >=18.10.0", +>>>>>>> main "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, @@ -4973,6 +7121,7 @@ } } }, +<<<<<<< HEAD "node_modules/@schematics/angular/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", @@ -5016,12 +7165,31 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.0.tgz", "integrity": "sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==", +======= + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", +>>>>>>> main "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@sigstore/sign": { +<<<<<<< HEAD "version": "2.2.3", "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz", "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==", @@ -5031,12 +7199,23 @@ "@sigstore/core": "^1.0.0", "@sigstore/protobuf-specs": "^0.3.0", "make-fetch-happen": "^13.0.0" +======= + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" +>>>>>>> main }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@sigstore/tuf": { +<<<<<<< HEAD "version": "2.3.1", "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.1.tgz", "integrity": "sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==", @@ -5061,6 +7240,18 @@ }, "engines": { "node": "^16.14.0 || >=18.0.0" +======= + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" +>>>>>>> main } }, "node_modules/@sinclair/typebox": { @@ -5075,6 +7266,18 @@ "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, +>>>>>>> main "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", @@ -5097,6 +7300,30 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -5142,18 +7369,30 @@ "dev": true }, "node_modules/@types/cors": { +<<<<<<< HEAD "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", +======= + "version": "2.8.15", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.15.tgz", + "integrity": "sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==", +>>>>>>> main "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/eslint": { +<<<<<<< HEAD "version": "8.56.5", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", +======= + "version": "8.44.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", + "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", +>>>>>>> main "dev": true, "dependencies": { "@types/estree": "*", @@ -5161,9 +7400,15 @@ } }, "node_modules/@types/eslint-scope": { +<<<<<<< HEAD "version": "3.7.7", "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", +======= + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz", + "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==", +>>>>>>> main "dev": true, "dependencies": { "@types/eslint": "*", @@ -5171,9 +7416,15 @@ } }, "node_modules/@types/estree": { +<<<<<<< HEAD "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", +======= + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", + "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", +>>>>>>> main "dev": true }, "node_modules/@types/express": { @@ -5189,9 +7440,15 @@ } }, "node_modules/@types/express-serve-static-core": { +<<<<<<< HEAD "version": "4.17.43", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", +======= + "version": "4.17.42", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz", + "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==", +>>>>>>> main "dev": true, "dependencies": { "@types/node": "*", @@ -5222,9 +7479,15 @@ "dev": true }, "node_modules/@types/json-schema": { +<<<<<<< HEAD "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", +======= + "version": "7.0.14", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", + "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", +>>>>>>> main "dev": true }, "node_modules/@types/mime": { @@ -5234,12 +7497,21 @@ "dev": true }, "node_modules/@types/node": { +<<<<<<< HEAD "version": "20.11.24", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", "dev": true, "dependencies": { "undici-types": "~5.26.4" +======= + "version": "20.8.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", + "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.25.1" +>>>>>>> main } }, "node_modules/@types/node-forge": { @@ -5252,9 +7524,15 @@ } }, "node_modules/@types/qs": { +<<<<<<< HEAD "version": "6.9.12", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", +======= + "version": "6.9.11", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", + "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", +>>>>>>> main "dev": true }, "node_modules/@types/range-parser": { @@ -5270,9 +7548,15 @@ "dev": true }, "node_modules/@types/semver": { +<<<<<<< HEAD "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", +======= + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", +>>>>>>> main "dev": true }, "node_modules/@types/send": { @@ -5324,6 +7608,7 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { +<<<<<<< HEAD "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", @@ -5343,14 +7628,39 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", "eslint": "^7.0.0 || ^8.0.0" +======= + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" +>>>>>>> main }, "peerDependenciesMeta": { "typescript": { @@ -5358,6 +7668,7 @@ } } }, +<<<<<<< HEAD "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", @@ -5424,13 +7735,32 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, - "funding": { - "type": "opencollective", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main + }, + "funding": { + "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^7.0.0 || ^8.0.0" +======= + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" +>>>>>>> main }, "peerDependenciesMeta": { "typescript": { @@ -5439,6 +7769,7 @@ } }, "node_modules/@typescript-eslint/scope-manager": { +<<<<<<< HEAD "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", @@ -5449,6 +7780,18 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", @@ -5456,6 +7799,7 @@ } }, "node_modules/@typescript-eslint/type-utils": { +<<<<<<< HEAD "version": "6.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.0.tgz", "integrity": "sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==", @@ -5468,13 +7812,31 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^7.0.0 || ^8.0.0" +======= + "eslint": "*" +>>>>>>> main }, "peerDependenciesMeta": { "typescript": { @@ -5482,6 +7844,7 @@ } } }, +<<<<<<< HEAD "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", @@ -5547,6 +7910,15 @@ "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", @@ -5554,6 +7926,7 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { +<<<<<<< HEAD "version": "6.21.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", @@ -5570,6 +7943,23 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", @@ -5581,6 +7971,7 @@ } } }, +<<<<<<< HEAD "node_modules/@typescript-eslint/utils": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.0.tgz", @@ -5597,12 +7988,61 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { +<<<<<<< HEAD "eslint": "^7.0.0 || ^8.0.0" } }, @@ -5692,6 +8132,22 @@ }, "engines": { "node": "^16.0.0 || >=18.0.0" +======= + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" +>>>>>>> main }, "funding": { "type": "opencollective", @@ -5862,6 +8318,99 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.2.x || >= 4.x" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", @@ -5909,6 +8458,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", +<<<<<<< HEAD +======= + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", +>>>>>>> main "dev": true }, "node_modules/abbrev": { @@ -5934,9 +8492,37 @@ } }, "node_modules/acorn": { +<<<<<<< HEAD "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", +======= + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", +>>>>>>> main "dev": true, "bin": { "acorn": "bin/acorn" @@ -5963,6 +8549,18 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, +<<<<<<< HEAD +======= + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, +>>>>>>> main "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -5999,7 +8597,23 @@ "debug": "^4.3.4" }, "engines": { +<<<<<<< HEAD "node": ">= 14" +======= + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" +>>>>>>> main } }, "node_modules/aggregate-error": { @@ -6176,9 +8790,15 @@ } }, "node_modules/async": { +<<<<<<< HEAD "version": "3.2.5", "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", +======= + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", +>>>>>>> main "dev": true }, "node_modules/asynckit": { @@ -6225,9 +8845,15 @@ } }, "node_modules/axios": { +<<<<<<< HEAD "version": "1.6.7", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", +======= + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", + "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", +>>>>>>> main "dev": true, "dependencies": { "follow-redirects": "^1.15.4", @@ -6235,10 +8861,31 @@ "proxy-from-env": "^1.1.0" } }, +<<<<<<< HEAD "node_modules/axobject-query": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", +======= + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", +>>>>>>> main "dev": true, "dependencies": { "dequal": "^2.0.3" @@ -6278,6 +8925,7 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { +<<<<<<< HEAD "version": "0.4.8", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", @@ -6285,6 +8933,15 @@ "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.5.0", +======= + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", +>>>>>>> main "semver": "^6.3.1" }, "peerDependencies": { @@ -6301,6 +8958,7 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { +<<<<<<< HEAD "version": "0.9.0", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", @@ -6308,18 +8966,36 @@ "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0", "core-js-compat": "^3.34.0" +======= + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", + "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.32.2" +>>>>>>> main }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { +<<<<<<< HEAD "version": "0.5.5", "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.5.0" +======= + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" +>>>>>>> main }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -6451,12 +9127,13 @@ "dev": true }, "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/braces": { @@ -6471,10 +9148,22 @@ "node": ">=8" } }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, "node_modules/browserslist": { +<<<<<<< HEAD "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", +======= + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", +>>>>>>> main "dev": true, "funding": [ { @@ -6491,9 +9180,15 @@ } ], "dependencies": { +<<<<<<< HEAD "caniuse-lite": "^1.0.30001587", "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", +======= + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", +>>>>>>> main "update-browserslist-db": "^1.0.13" }, "bin": { @@ -6552,17 +9247,29 @@ } }, "node_modules/cacache": { +<<<<<<< HEAD "version": "18.0.2", "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", +======= + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", +>>>>>>> main "dev": true, "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", +<<<<<<< HEAD "lru-cache": "^10.0.1", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", +======= + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", +>>>>>>> main "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -6596,6 +9303,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/cacache/node_modules/lru-cache": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", @@ -6605,17 +9343,41 @@ "node": "14 || >=16.14" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -6643,9 +9405,15 @@ } }, "node_modules/caniuse-lite": { +<<<<<<< HEAD "version": "1.0.30001593", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", +======= + "version": "1.0.30001551", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", + "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", +>>>>>>> main "dev": true, "funding": [ { @@ -6746,9 +9514,15 @@ } }, "node_modules/cli-spinners": { +<<<<<<< HEAD "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", +======= + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", +>>>>>>> main "dev": true, "engines": { "node": ">=6" @@ -6758,12 +9532,21 @@ } }, "node_modules/cli-width": { +<<<<<<< HEAD "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "engines": { "node": ">= 12" +======= + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" +>>>>>>> main } }, "node_modules/cliui": { @@ -7102,6 +9885,7 @@ "node": ">=10.13.0" } }, +<<<<<<< HEAD "node_modules/copy-webpack-plugin/node_modules/globby": { "version": "13.2.2", "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", @@ -7140,6 +9924,15 @@ "dev": true, "dependencies": { "browserslist": "^4.22.3" +======= + "node_modules/core-js-compat": { + "version": "3.33.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", + "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.1" +>>>>>>> main }, "funding": { "type": "opencollective", @@ -7166,6 +9959,7 @@ } }, "node_modules/cosmiconfig": { +<<<<<<< HEAD "version": "9.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", @@ -7175,6 +9969,17 @@ "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", "parse-json": "^5.2.0" +======= + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" +>>>>>>> main }, "engines": { "node": ">=14" @@ -7308,6 +10113,21 @@ "node": ">= 8" } }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-loader": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", @@ -7383,12 +10203,50 @@ "node": ">=4" } }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", "dev": true }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/date-format": { "version": "4.0.14", "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", @@ -7415,6 +10273,15 @@ } } }, +<<<<<<< HEAD +======= + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, +>>>>>>> main "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7472,6 +10339,18 @@ } }, "node_modules/delayed-stream": { +<<<<<<< HEAD +======= + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { +>>>>>>> main "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", @@ -7609,6 +10488,27 @@ } ] }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -7639,6 +10539,7 @@ } }, "node_modules/dotenv": { +<<<<<<< HEAD "version": "16.3.2", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", @@ -7657,6 +10558,14 @@ "dev": true, "engines": { "node": ">=12" +======= + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" +>>>>>>> main } }, "node_modules/duplexer": { @@ -7693,9 +10602,15 @@ } }, "node_modules/electron-to-chromium": { +<<<<<<< HEAD "version": "1.4.690", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", +======= + "version": "1.4.559", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", + "integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", +>>>>>>> main "dev": true }, "node_modules/emoji-regex": { @@ -7755,9 +10670,15 @@ } }, "node_modules/engine.io": { +<<<<<<< HEAD "version": "6.5.4", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", +======= + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.3.tgz", + "integrity": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==", +>>>>>>> main "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -7773,17 +10694,47 @@ }, "engines": { "node": ">=10.2.0" +<<<<<<< HEAD } }, "node_modules/engine.io-parser": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", +======= + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "dev": true, "engines": { "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", +>>>>>>> main + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/enhanced-resolve": { "version": "5.15.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", @@ -7864,6 +10815,7 @@ "is-arrayish": "^0.2.1" } }, +<<<<<<< HEAD "node_modules/es-define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", @@ -7895,6 +10847,18 @@ "version": "0.20.0", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", +======= + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", +>>>>>>> main "dev": true, "hasInstallScript": true, "optional": true, @@ -7905,6 +10869,7 @@ "node": ">=12" }, "optionalDependencies": { +<<<<<<< HEAD "@esbuild/aix-ppc64": "0.20.0", "@esbuild/android-arm": "0.20.0", "@esbuild/android-arm64": "0.20.0", @@ -7930,155 +10895,526 @@ "@esbuild/win32-x64": "0.20.0" } }, - "node_modules/esbuild-wasm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.0.tgz", - "integrity": "sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==", + "node_modules/esbuild-wasm": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.0.tgz", + "integrity": "sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==", +======= + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", + "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", +>>>>>>> main + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, +<<<<<<< HEAD + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", +======= + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", +>>>>>>> main + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", +<<<<<<< HEAD + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", +======= + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", +>>>>>>> main + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.0.tgz", + "integrity": "sha512-zj3Byw6jX4TcFCJmxOzLt6iol5FAr9xQyZZSQjEzW2UiCJXLwXdRIKCYVFftnpZckaC9Ps9xlC7jB8tSeWWOaw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, "bin": { - "esbuild": "bin/esbuild" + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escalade": { + "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" - }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-scope": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.0.tgz", - "integrity": "sha512-zj3Byw6jX4TcFCJmxOzLt6iol5FAr9xQyZZSQjEzW2UiCJXLwXdRIKCYVFftnpZckaC9Ps9xlC7jB8tSeWWOaw==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -8128,16 +11464,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/eslint/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8229,9 +11555,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -8285,18 +11611,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint/node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -8351,6 +11665,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -8518,6 +11844,33 @@ "node": ">= 0.10.0" } }, +<<<<<<< HEAD +======= + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, +>>>>>>> main "node_modules/express/node_modules/cookie": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", @@ -8614,9 +11967,15 @@ "dev": true }, "node_modules/fast-glob": { +<<<<<<< HEAD "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", +======= + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", +>>>>>>> main "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -8698,6 +12057,18 @@ "minimatch": "^5.0.1" } }, +<<<<<<< HEAD +======= + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, +>>>>>>> main "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -8806,9 +12177,15 @@ } }, "node_modules/flat-cache": { +<<<<<<< HEAD "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", +======= + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", + "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", +>>>>>>> main "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -8816,6 +12193,7 @@ "rimraf": "^3.0.2" }, "engines": { +<<<<<<< HEAD "node": "^10.12.0 || >=12.0.0" } }, @@ -8823,6 +12201,15 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", +======= + "node": ">=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", +>>>>>>> main "dev": true }, "node_modules/follow-redirects": { @@ -8874,9 +12261,15 @@ } }, "node_modules/form-data": { +<<<<<<< HEAD "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", +======= + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", +>>>>>>> main "dev": true, "dependencies": { "asynckit": "^0.4.0", @@ -8950,6 +12343,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/fs-monkey": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", @@ -8980,6 +12382,18 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", +<<<<<<< HEAD +======= + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", +>>>>>>> main "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9113,15 +12527,26 @@ } }, "node_modules/globby": { +<<<<<<< HEAD "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", +======= + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", +>>>>>>> main "dev": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", +<<<<<<< HEAD "fast-glob": "^3.2.9", "ignore": "^5.2.0", +======= + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", +>>>>>>> main "merge2": "^1.4.1", "slash": "^3.0.0" }, @@ -9156,12 +12581,56 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "dependencies": { + "@wessberg/ts-evaluator": "0.0.27" + }, + "peerDependencies": { + "typescript": ">=3.7.5" + } + }, +>>>>>>> main "node_modules/handle-thing": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", "dev": true }, +<<<<<<< HEAD + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, +======= + "node_modules/has": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", + "dev": true, +>>>>>>> main + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -9303,6 +12772,18 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/html-entities": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", @@ -9402,6 +12883,7 @@ } }, "node_modules/http-proxy-agent": { +<<<<<<< HEAD "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", @@ -9409,6 +12891,16 @@ "dependencies": { "agent-base": "^7.1.0", "debug": "^4.3.4" +======= + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" +>>>>>>> main }, "engines": { "node": ">= 14" @@ -9525,6 +13017,30 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/image-size": { "version": "0.5.5", "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", @@ -9539,9 +13055,15 @@ } }, "node_modules/immutable": { +<<<<<<< HEAD "version": "4.3.5", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", +======= + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", +>>>>>>> main "dev": true }, "node_modules/import-fresh": { @@ -9613,6 +13135,7 @@ } }, "node_modules/inquirer": { +<<<<<<< HEAD "version": "9.2.14", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.14.tgz", "integrity": "sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==", @@ -9645,11 +13168,65 @@ "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" +======= + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" +>>>>>>> main }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, +<<<<<<< HEAD "node_modules/ip-address": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", @@ -9667,6 +13244,51 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", +======= + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", +>>>>>>> main "dev": true }, "node_modules/ipaddr.js": { @@ -9697,9 +13319,15 @@ } }, "node_modules/is-core-module": { +<<<<<<< HEAD "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", +======= + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", +>>>>>>> main "dev": true, "dependencies": { "hasown": "^2.0.0" @@ -9810,6 +13438,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -9978,9 +13612,15 @@ } }, "node_modules/istanbul-reports": { +<<<<<<< HEAD "version": "3.1.7", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", +======= + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", +>>>>>>> main "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10041,6 +13681,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, +<<<<<<< HEAD "node_modules/jake/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10051,6 +13692,8 @@ "concat-map": "0.0.1" } }, +======= +>>>>>>> main "node_modules/jake/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -10094,6 +13737,7 @@ "node": ">=8" } }, +<<<<<<< HEAD "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10106,6 +13750,8 @@ "node": "*" } }, +======= +>>>>>>> main "node_modules/jake/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -10257,9 +13903,15 @@ } }, "node_modules/jiti": { +<<<<<<< HEAD "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", +======= + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", +>>>>>>> main "dev": true, "bin": { "jiti": "bin/jiti.js" @@ -10284,10 +13936,63 @@ "js-yaml": "bin/js-yaml.js" } }, +<<<<<<< HEAD "node_modules/jsbn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", +======= + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", +>>>>>>> main "dev": true }, "node_modules/jsesc": { @@ -10306,6 +14011,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", +<<<<<<< HEAD +======= + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", +>>>>>>> main "dev": true }, "node_modules/json-parse-even-better-errors": { @@ -10415,18 +14129,6 @@ "which": "^1.2.1" } }, - "node_modules/karma-chrome-launcher/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/karma-coverage": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", @@ -10444,28 +14146,6 @@ "node": ">=10.0.0" } }, - "node_modules/karma-coverage/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma-coverage/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/karma-jasmine": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", @@ -10501,6 +14181,7 @@ "source-map-support": "^0.5.5" } }, +<<<<<<< HEAD "node_modules/karma/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -10526,6 +14207,8 @@ "concat-map": "0.0.1" } }, +======= +>>>>>>> main "node_modules/karma/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -10537,6 +14220,7 @@ "wrap-ansi": "^7.0.0" } }, +<<<<<<< HEAD "node_modules/karma/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -10567,6 +14251,8 @@ "node": "*" } }, +======= +>>>>>>> main "node_modules/karma/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -10940,9 +14626,15 @@ } }, "node_modules/loglevel": { +<<<<<<< HEAD "version": "1.9.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", +======= + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", +>>>>>>> main "dev": true, "engines": { "node": ">= 0.6.0" @@ -11027,9 +14719,15 @@ } }, "node_modules/magic-string": { +<<<<<<< HEAD "version": "0.30.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", +======= + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", +>>>>>>> main "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -11072,7 +14770,43 @@ "ssri": "^10.0.0" }, "engines": { +<<<<<<< HEAD "node": "^16.14.0 || >=18.0.0" +======= + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" +>>>>>>> main } }, "node_modules/media-typer": { @@ -11220,18 +14954,21 @@ "dev": true }, "node_modules/minimatch": { +<<<<<<< HEAD "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", +======= + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", +>>>>>>> main "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/minimist": { @@ -11275,10 +15012,19 @@ "minizlib": "^2.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-flush": { @@ -11471,6 +15217,7 @@ } }, "node_modules/mute-stream": { +<<<<<<< HEAD "version": "1.0.0", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", @@ -11478,6 +15225,12 @@ "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } +======= + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true +>>>>>>> main }, "node_modules/nanoid": { "version": "3.3.7", @@ -11503,6 +15256,15 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, +>>>>>>> main "node_modules/needle": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", @@ -11580,8 +15342,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true + "dev": true }, "node_modules/node-forge": { "version": "1.3.1", @@ -11617,17 +15378,23 @@ } }, "node_modules/node-gyp-build": { +<<<<<<< HEAD "version": "4.8.0", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", +======= + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", + "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", +>>>>>>> main "dev": true, - "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, +<<<<<<< HEAD "node_modules/node-gyp/node_modules/glob": { "version": "10.3.10", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", @@ -11657,6 +15424,21 @@ "dev": true, "engines": { "node": ">=16" +======= + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" +>>>>>>> main } }, "node_modules/node-gyp/node_modules/which": { @@ -11681,9 +15463,15 @@ "dev": true }, "node_modules/node-releases": { +<<<<<<< HEAD "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", +======= + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", +>>>>>>> main "dev": true }, "node_modules/nopt": { @@ -11851,6 +15639,7 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, +<<<<<<< HEAD "node_modules/nx": { "version": "17.2.8", "resolved": "https://registry.npmjs.org/nx/-/nx-17.2.8.tgz", @@ -11870,17 +15659,51 @@ "dotenv": "~16.3.1", "dotenv-expand": "~10.0.0", "enquirer": "~2.3.6", +======= + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/nx": { + "version": "16.5.1", + "resolved": "https://registry.npmjs.org/nx/-/nx-16.5.1.tgz", + "integrity": "sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nrwl/tao": "16.5.1", + "@parcel/watcher": "2.0.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.0.0", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^7.0.2", + "dotenv": "~10.0.0", + "enquirer": "~2.3.6", + "fast-glob": "3.2.7", +>>>>>>> main "figures": "3.2.0", "flat": "^5.0.2", "fs-extra": "^11.1.0", "glob": "7.1.4", "ignore": "^5.0.4", +<<<<<<< HEAD "jest-diff": "^29.4.1", +======= +>>>>>>> main "js-yaml": "4.1.0", "jsonc-parser": "3.2.0", "lines-and-columns": "~2.0.3", "minimatch": "3.0.5", +<<<<<<< HEAD "node-machine-id": "1.1.12", +======= +>>>>>>> main "npm-run-path": "^4.0.1", "open": "^8.4.0", "semver": "7.5.3", @@ -11890,10 +15713,15 @@ "tmp": "~0.2.1", "tsconfig-paths": "^4.1.2", "tslib": "^2.3.0", +<<<<<<< HEAD +======= + "v8-compile-cache": "2.3.0", +>>>>>>> main "yargs": "^17.6.2", "yargs-parser": "21.1.1" }, "bin": { +<<<<<<< HEAD "nx": "bin/nx.js", "nx-cloud": "bin/nx-cloud.js" }, @@ -11912,6 +15740,25 @@ "peerDependencies": { "@swc-node/register": "^1.6.7", "@swc/core": "^1.3.85" +======= + "nx": "bin/nx.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "16.5.1", + "@nx/nx-darwin-x64": "16.5.1", + "@nx/nx-freebsd-x64": "16.5.1", + "@nx/nx-linux-arm-gnueabihf": "16.5.1", + "@nx/nx-linux-arm64-gnu": "16.5.1", + "@nx/nx-linux-arm64-musl": "16.5.1", + "@nx/nx-linux-x64-gnu": "16.5.1", + "@nx/nx-linux-x64-musl": "16.5.1", + "@nx/nx-win32-arm64-msvc": "16.5.1", + "@nx/nx-win32-x64-msvc": "16.5.1" + }, + "peerDependencies": { + "@swc-node/register": "^1.4.2", + "@swc/core": "^1.2.173" +>>>>>>> main }, "peerDependenciesMeta": { "@swc-node/register": { @@ -11943,6 +15790,7 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, +<<<<<<< HEAD "node_modules/nx/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -11953,6 +15801,8 @@ "concat-map": "0.0.1" } }, +======= +>>>>>>> main "node_modules/nx/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -11969,6 +15819,32 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, +<<<<<<< HEAD +======= + "node_modules/nx/node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nx/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, +>>>>>>> main "node_modules/nx/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -11987,6 +15863,39 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, +<<<<<<< HEAD +======= + "node_modules/nx/node_modules/fast-glob": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", + "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nx/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, +>>>>>>> main "node_modules/nx/node_modules/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -12025,11 +15934,34 @@ "js-yaml": "bin/js-yaml.js" } }, +<<<<<<< HEAD "node_modules/nx/node_modules/jsonc-parser": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true +======= + "node_modules/nx/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/nx/node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } +>>>>>>> main }, "node_modules/nx/node_modules/lru-cache": { "version": "6.0.0", @@ -12082,6 +16014,30 @@ "node": ">=8" } }, +<<<<<<< HEAD +======= + "node_modules/nx/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/nx/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, +>>>>>>> main "node_modules/nx/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -12098,14 +16054,29 @@ } }, "node_modules/object-inspect": { +<<<<<<< HEAD "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", +======= + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", + "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", +>>>>>>> main "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "engines": { + "node": ">= 10.12.0" + } + }, "node_modules/obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -12546,9 +16517,15 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { +<<<<<<< HEAD "version": "10.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", +======= + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", + "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", +>>>>>>> main "dev": true, "engines": { "node": "14 || >=16.14" @@ -12598,9 +16575,15 @@ } }, "node_modules/piscina": { +<<<<<<< HEAD "version": "4.3.1", "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.3.1.tgz", "integrity": "sha512-MBj0QYm3hJQ/C/wIXTN1OCYC8uQ4BBJ4LVele2P4ZwVQAH04vkk8E1SpDbuemLAL1dZorbuOob9rYqJeWCcCRg==", +======= + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", + "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", +>>>>>>> main "dev": true, "optionalDependencies": { "nice-napi": "^1.0.2" @@ -12689,6 +16672,7 @@ "dev": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" +<<<<<<< HEAD } }, "node_modules/pkg-dir/node_modules/yocto-queue": { @@ -12707,6 +16691,14 @@ "version": "8.4.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", +======= + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", +>>>>>>> main "dev": true, "funding": [ { @@ -12732,6 +16724,7 @@ } }, "node_modules/postcss-loader": { +<<<<<<< HEAD "version": "8.1.0", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.0.tgz", "integrity": "sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==", @@ -12740,6 +16733,16 @@ "cosmiconfig": "^9.0.0", "jiti": "^1.20.0", "semver": "^7.5.4" +======= + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" +>>>>>>> main }, "engines": { "node": ">= 18.12.0" @@ -12850,9 +16853,15 @@ } }, "node_modules/prettier": { +<<<<<<< HEAD "version": "3.2.5", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", +======= + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", +>>>>>>> main "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -12865,9 +16874,15 @@ } }, "node_modules/prettier-eslint": { +<<<<<<< HEAD "version": "16.3.0", "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", +======= + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.2.0.tgz", + "integrity": "sha512-GDTSKc62VaLceiaI/qMaKo2oco2CIWtbj4Zr6ckhbTgcBL/uR0d9jkMzh9OtBIT/Z7iBoCB4OHj/aJ5YuNgAuA==", +>>>>>>> main "dev": true, "dependencies": { "@typescript-eslint/parser": "^6.7.5", @@ -12884,21 +16899,169 @@ "vue-eslint-parser": "^9.1.0" }, "engines": { - "node": ">=16.10.0" - }, - "peerDependencies": { - "prettier-plugin-svelte": "^3.0.0", - "svelte-eslint-parser": "*" - }, - "peerDependenciesMeta": { - "prettier-plugin-svelte": { - "optional": true - }, - "svelte-eslint-parser": { - "optional": true - } + "node": ">=16.10.0" +<<<<<<< HEAD + }, + "peerDependencies": { + "prettier-plugin-svelte": "^3.0.0", + "svelte-eslint-parser": "*" + }, + "peerDependenciesMeta": { + "prettier-plugin-svelte": { + "optional": true + }, + "svelte-eslint-parser": { +======= + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", + "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.9.0", + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/typescript-estree": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { +>>>>>>> main + "optional": true + } + } + }, +<<<<<<< HEAD +======= + "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", + "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", + "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", + "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "@typescript-eslint/visitor-keys": "6.9.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", + "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.9.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/prettier-eslint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prettier-eslint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/prettier-eslint/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" } }, +>>>>>>> main "node_modules/prettier-linter-helpers": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", @@ -13018,6 +17181,12 @@ "dev": true, "optional": true }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -13051,6 +17220,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -13154,6 +17329,64 @@ "glob": "dist/esm/bin.mjs" }, "engines": { +<<<<<<< HEAD +======= + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { +>>>>>>> main + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" +<<<<<<< HEAD +======= + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" +>>>>>>> main + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { "node": ">=16 || 14 >=14.17" }, "funding": { @@ -13199,9 +17432,15 @@ } }, "node_modules/reflect-metadata": { +<<<<<<< HEAD "version": "0.2.1", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", +======= + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", +>>>>>>> main "dev": true }, "node_modules/regenerate": { @@ -13430,9 +17669,15 @@ } }, "node_modules/rollup": { +<<<<<<< HEAD "version": "4.12.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", +======= + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", +>>>>>>> main "dev": true, "dependencies": { "@types/estree": "1.0.5" @@ -13462,9 +17707,15 @@ } }, "node_modules/run-async": { +<<<<<<< HEAD "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", +======= + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", +>>>>>>> main "dev": true, "engines": { "node": ">=0.12.0" @@ -13533,9 +17784,15 @@ "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" }, "node_modules/sass": { +<<<<<<< HEAD "version": "1.70.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", +======= + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", +>>>>>>> main "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -13550,9 +17807,15 @@ } }, "node_modules/sass-loader": { +<<<<<<< HEAD "version": "14.1.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.0.tgz", "integrity": "sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==", +======= + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", +>>>>>>> main "dev": true, "dependencies": { "neo-async": "^2.6.2" @@ -13596,6 +17859,18 @@ "dev": true, "optional": true }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -13635,9 +17910,15 @@ } }, "node_modules/semver": { +<<<<<<< HEAD "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", +======= + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", +>>>>>>> main "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -13916,6 +18197,7 @@ "dev": true }, "node_modules/sigstore": { +<<<<<<< HEAD "version": "2.2.2", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz", "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==", @@ -13927,6 +18209,21 @@ "@sigstore/sign": "^2.2.3", "@sigstore/tuf": "^2.3.1", "@sigstore/verify": "^1.1.0" +======= + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" +>>>>>>> main }, "engines": { "node": "^16.14.0 || >=18.0.0" @@ -13952,9 +18249,15 @@ } }, "node_modules/socket.io": { +<<<<<<< HEAD "version": "4.7.4", "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", +======= + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", +>>>>>>> main "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -13979,6 +18282,27 @@ "ws": "~8.11.0" } }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -14127,9 +18451,15 @@ } }, "node_modules/spdx-license-ids": { +<<<<<<< HEAD "version": "3.0.17", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", +======= + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", +>>>>>>> main "dev": true }, "node_modules/spdy": { @@ -14180,6 +18510,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -14378,6 +18717,15 @@ "node": ">=0.10" } }, +<<<<<<< HEAD +======= + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, +>>>>>>> main "node_modules/synckit": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", @@ -14488,9 +18836,15 @@ "dev": true }, "node_modules/terser": { +<<<<<<< HEAD "version": "5.27.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", +======= + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", +>>>>>>> main "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -14602,6 +18956,7 @@ "node": ">=8" } }, +<<<<<<< HEAD "node_modules/test-exclude/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -14624,6 +18979,8 @@ "node": "*" } }, +======= +>>>>>>> main "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -14684,6 +19041,42 @@ "node": ">=0.6" } }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -14694,16 +19087,68 @@ } }, "node_modules/ts-api-utils": { +<<<<<<< HEAD "version": "1.2.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, "engines": { "node": ">=16" +======= + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" +>>>>>>> main }, "peerDependencies": { "typescript": ">=4.2.0" } +<<<<<<< HEAD +======= + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true +>>>>>>> main }, "node_modules/tsconfig-paths": { "version": "4.2.0", @@ -14750,6 +19195,18 @@ "node": ">= 0.8.0" } }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -14795,9 +19252,15 @@ } }, "node_modules/ua-parser-js": { +<<<<<<< HEAD "version": "0.7.37", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", +======= + "version": "0.7.36", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.36.tgz", + "integrity": "sha512-CPPLoCts2p7D8VbybttE3P2ylv0OBZEAy7a12DsulIEcAiMtWJy+PBgMXgWDI80D5UwqE8oQPHYnk13tm38M2Q==", +>>>>>>> main "dev": true, "funding": [ { @@ -14817,6 +19280,7 @@ "node": "*" } }, +<<<<<<< HEAD "node_modules/undici": { "version": "6.6.2", "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", @@ -14833,6 +19297,12 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", +======= + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", +>>>>>>> main "dev": true }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -14956,6 +19426,16 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -14980,6 +19460,12 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -15012,6 +19498,7 @@ } }, "node_modules/vite": { +<<<<<<< HEAD "version": "5.0.12", "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", @@ -15020,6 +19507,16 @@ "esbuild": "^0.19.3", "postcss": "^8.4.32", "rollup": "^4.2.0" +======= + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" +>>>>>>> main }, "bin": { "vite": "bin/vite.js" @@ -15030,6 +19527,9 @@ "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, "optionalDependencies": { "fsevents": "~2.3.3" }, @@ -15482,9 +19982,15 @@ } }, "node_modules/vue-eslint-parser": { +<<<<<<< HEAD "version": "9.4.2", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", +======= + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", + "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", +>>>>>>> main "dev": true, "dependencies": { "debug": "^4.3.4", @@ -15521,6 +20027,31 @@ "url": "https://opencollective.com/eslint" } }, +<<<<<<< HEAD +======= + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, +>>>>>>> main "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -15552,10 +20083,25 @@ "defaults": "^1.0.3" } }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, "node_modules/webpack": { +<<<<<<< HEAD "version": "5.90.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", +======= + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", +>>>>>>> main "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -15874,19 +20420,45 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "which": "bin/which" } }, "node_modules/wildcard": { @@ -16000,12 +20572,12 @@ "dev": true }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -16020,6 +20592,18 @@ } } }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -16063,21 +20647,36 @@ } }, "node_modules/yocto-queue": { +<<<<<<< HEAD "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" +======= + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" +>>>>>>> main }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zone.js": { +<<<<<<< HEAD "version": "0.14.4", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", +======= + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", + "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", +>>>>>>> main "dependencies": { "tslib": "^2.3.0" } diff --git a/modules/ui/package.json b/modules/ui/package.json index 1fb2a3661..397c5af7a 100644 --- a/modules/ui/package.json +++ b/modules/ui/package.json @@ -17,6 +17,7 @@ }, "private": true, "dependencies": { +<<<<<<< HEAD "@angular/animations": "^17.0.8", "@angular/cdk": "^17.0.4", "@angular/common": "^17.0.8", @@ -48,6 +49,36 @@ "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", +======= + "@angular/animations": "^16.2.12", + "@angular/cdk": "^16.2.13", + "@angular/common": "^16.2.12", + "@angular/compiler": "^16.2.12", + "@angular/core": "^16.2.12", + "@angular/forms": "^16.2.12", + "@angular/material": "^16.2.13", + "@angular/platform-browser": "^16.2.12", + "@angular/platform-browser-dynamic": "^16.2.12", + "@angular/router": "^16.2.12", + "ngx-mask": "^16.4.2", + "rxjs": "~7.8.0", + "tslib": "^2.6.2", + "zone.js": "~0.13.3" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.2.12", + "@angular-eslint/builder": "16.2.0", + "@angular-eslint/eslint-plugin": "16.2.0", + "@angular-eslint/eslint-plugin-template": "16.2.0", + "@angular-eslint/schematics": "16.2.0", + "@angular-eslint/template-parser": "16.2.0", + "@angular/cli": "~16.1.8", + "@angular/compiler-cli": "^16.2.12", + "@types/jasmine": "~4.3.6", + "@typescript-eslint/eslint-plugin": "5.62.0", + "@typescript-eslint/parser": "5.62.0", + "eslint": "^8.56.0", +>>>>>>> main "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jasmine-core": "~4.6.0", @@ -56,8 +87,14 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", +<<<<<<< HEAD "prettier": "^3.2.5", "prettier-eslint": "^16.3.0", "typescript": "~5.2.2" +======= + "prettier": "^3.1.1", + "prettier-eslint": "^16.2.0", + "typescript": "~5.1.3" +>>>>>>> main } } diff --git a/modules/ui/src/app/app-routing.module.ts b/modules/ui/src/app/app-routing.module.ts index d503116d6..0c43b2349 100644 --- a/modules/ui/src/app/app-routing.module.ts +++ b/modules/ui/src/app/app-routing.module.ts @@ -18,15 +18,25 @@ import { RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { +<<<<<<< HEAD path: 'testing', loadChildren: () => import('./pages/testrun/progress.module').then(m => m.ProgressModule), +======= + path: 'testrun', + loadChildren: () => + import('./progress/progress.module').then(m => m.ProgressModule), +>>>>>>> main title: 'Testrun', }, { path: 'devices', loadChildren: () => +<<<<<<< HEAD import('./pages/devices/device-repository.module').then( +======= + import('./device-repository/device-repository.module').then( +>>>>>>> main m => m.DeviceRepositoryModule ), title: 'Testrun - Devices', @@ -34,7 +44,11 @@ const routes: Routes = [ { path: 'reports', loadChildren: () => +<<<<<<< HEAD import('./pages/reports/history.module').then(m => m.HistoryModule), +======= + import('./history/history.module').then(m => m.HistoryModule), +>>>>>>> main title: 'Testrun - Reports', }, { diff --git a/modules/ui/src/app/app.component.html b/modules/ui/src/app/app.component.html index a89ee0b51..201fd098b 100644 --- a/modules/ui/src/app/app.component.html +++ b/modules/ui/src/app/app.component.html @@ -14,21 +14,31 @@ limitations under the License. --> +<<<<<<< HEAD +======= + +>>>>>>> main
    @@ -55,9 +65,13 @@ } "> +<<<<<<< HEAD +======= + +>>>>>>> main
    @@ -73,7 +87,11 @@
    >>>>>> main aria-label="Testrun ui logo">

    Testrun

    @@ -83,12 +101,17 @@

    Testrun

    #toggleSettingsBtn class="app-toolbar-button app-toolbar-button-general-settings" mat-icon-button +<<<<<<< HEAD aria-label="System settings" +======= + aria-label="Connection settings" +>>>>>>> main (click)="openGeneralSettings(true)"> tune
    @@ -180,8 +245,14 @@

    Testrun

    autoFocus="#setting-panel-close-button" class="settings-drawer"> +======= + [interfaces]="interfaces" + (closeSettingEvent)="closeSetting()" + (reloadInterfacesEvent)="reloadInterfaces()"> +>>>>>>> main diff --git a/modules/ui/src/app/app.component.scss b/modules/ui/src/app/app.component.scss index d5589fabd..04d9b5b0e 100644 --- a/modules/ui/src/app/app.component.scss +++ b/modules/ui/src/app/app.component.scss @@ -40,7 +40,11 @@ $nav-open-btn-width: 210px; margin-top: $toolbar-height; } +<<<<<<< HEAD .active-menu { +======= +:host.active-menu { +>>>>>>> main .app-sidebar { width: $nav-open-width; align-items: start; @@ -51,7 +55,11 @@ $nav-open-btn-width: 210px; height: $toolbar-height; border-radius: 0 100px 100px 0; margin: 0; +<<<<<<< HEAD padding: 0 24px; +======= + padding: 0 16px; +>>>>>>> main } .app-sidebar-button:first-child { @@ -126,7 +134,11 @@ $nav-open-btn-width: 210px; } .app-sidebar-button > .mat-icon { +<<<<<<< HEAD margin: 0 3px; +======= + margin: 0 11px; +>>>>>>> main min-width: 24px; line-height: 18px !important; } diff --git a/modules/ui/src/app/app.component.spec.ts b/modules/ui/src/app/app.component.spec.ts index 901c08795..71a81772e 100644 --- a/modules/ui/src/app/app.component.spec.ts +++ b/modules/ui/src/app/app.component.spec.ts @@ -25,6 +25,12 @@ import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { AppComponent } from './app.component'; import { TestRunService } from './services/test-run.service'; +<<<<<<< HEAD +======= +import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { Device } from './model/device'; +import { device } from './mocks/device.mock'; +>>>>>>> main import { Component, EventEmitter, Input, Output } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; @@ -40,6 +46,7 @@ import { MOCK_PROGRESS_DATA_IDLE, MOCK_PROGRESS_DATA_IN_PROGRESS, } from './mocks/progress.mock'; +<<<<<<< HEAD import { Routes } from './model/routes'; import { MockStore, provideMockStore } from '@ngrx/store/testing'; import { State } from '@ngrx/store'; @@ -58,6 +65,11 @@ import { selectInterfaces, selectMenuOpened, } from './store/selectors'; +======= +import { LoaderService } from './services/loader.service'; +import { Routes } from './model/routes'; +import { StateService } from './services/state.service'; +>>>>>>> main describe('AppComponent', () => { let component: AppComponent; @@ -65,9 +77,14 @@ describe('AppComponent', () => { let compiled: HTMLElement; let router: Router; let mockService: SpyObj; +<<<<<<< HEAD let store: MockStore; let focusNavigation = true; let mockFocusManagerService: SpyObj; +======= + let mockLoaderService: SpyObj; + let mockStateService: SpyObj; +>>>>>>> main const enterKeyEvent = new KeyboardEvent('keydown', { key: 'Enter', @@ -84,6 +101,7 @@ describe('AppComponent', () => { beforeEach(() => { mockService = jasmine.createSpyObj([ +<<<<<<< HEAD 'getSystemStatus', 'systemStatus$', 'isTestrunStarted$', @@ -98,6 +116,32 @@ describe('AppComponent', () => { (mockService.systemStatus$ as unknown) = of({}); mockService.isTestrunStarted$ = of(true); +======= + 'getDevices', + 'fetchDevices', + 'getSystemStatus', + 'fetchHistory', + 'getSystemInterfaces', + 'setIsOpenAddDevice', + 'systemStatus$', + 'isTestrunStarted$', + 'hasConnectionSetting$', + 'setIsOpenStartTestrun', + ]); + + mockLoaderService = jasmine.createSpyObj(['setLoading']); + mockStateService = jasmine.createSpyObj('mockStateService', [ + 'focusFirstElementInMain', + ]); + + mockService.getDevices.and.returnValue( + new BehaviorSubject([device]) + ); + mockService.getSystemInterfaces.and.returnValue(of({})); + (mockService.systemStatus$ as unknown) = of({}); + mockService.isTestrunStarted$ = of(true); + mockService.hasConnectionSetting$ = of(true); +>>>>>>> main TestBed.configureTestingModule({ imports: [ @@ -114,6 +158,7 @@ describe('AppComponent', () => { ], providers: [ { provide: TestRunService, useValue: mockService }, +<<<<<<< HEAD { provide: State, useValue: { @@ -136,6 +181,10 @@ describe('AppComponent', () => { ], }), { provide: FocusManagerService, useValue: mockFocusManagerService }, +======= + { provide: LoaderService, useValue: mockLoaderService }, + { provide: StateService, useValue: mockStateService }, +>>>>>>> main ], declarations: [ AppComponent, @@ -211,8 +260,11 @@ describe('AppComponent', () => { }); it('should navigate to the devices when "devices" button is clicked', fakeAsync(() => { +<<<<<<< HEAD fixture.detectChanges(); +======= +>>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-devices' ) as HTMLButtonElement; @@ -224,8 +276,11 @@ describe('AppComponent', () => { })); it('should navigate to the testrun when "testrun" button is clicked', fakeAsync(() => { +<<<<<<< HEAD fixture.detectChanges(); +======= +>>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-testrun' ) as HTMLButtonElement; @@ -233,12 +288,19 @@ describe('AppComponent', () => { button?.click(); tick(); +<<<<<<< HEAD expect(router.url).toBe(Routes.Testing); })); it('should navigate to the reports when "reports" button is clicked', fakeAsync(() => { fixture.detectChanges(); +======= + expect(router.url).toBe(Routes.Testrun); + })); + + it('should navigate to the reports when "reports" button is clicked', fakeAsync(() => { +>>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-reports' ) as HTMLButtonElement; @@ -250,8 +312,11 @@ describe('AppComponent', () => { })); it('should call toggleSettingsBtn focus when settingsDrawer close on closeSetting', fakeAsync(() => { +<<<<<<< HEAD fixture.detectChanges(); +======= +>>>>>>> main spyOn(component.settingsDrawer, 'close').and.returnValue( Promise.resolve('close') ); @@ -263,6 +328,24 @@ describe('AppComponent', () => { component.settingsDrawer.close().then(() => { expect(component.toggleSettingsBtn.focus).toHaveBeenCalled(); }); +<<<<<<< HEAD +======= + })); + + it('should call focusFirstElementInMain if settingsDrawer opened not from toggleBtn', fakeAsync(() => { + spyOn(component.settingsDrawer, 'close').and.returnValue( + Promise.resolve('close') + ); + + component.openGeneralSettings(false); + tick(); + component.closeSetting(); + flush(); + + component.settingsDrawer.close().then(() => { + expect(mockStateService.focusFirstElementInMain).toHaveBeenCalled(); + }); +>>>>>>> main })); it('should call focusFirstElementInContainer if settingsDrawer opened not from toggleBtn', fakeAsync(() => { @@ -305,8 +388,11 @@ describe('AppComponent', () => { })); it('should call settingsDrawer open on click settings button', () => { +<<<<<<< HEAD fixture.detectChanges(); +======= +>>>>>>> main const settingsBtn = compiled.querySelector( '.app-toolbar-button-general-settings' ) as HTMLButtonElement; @@ -317,6 +403,7 @@ describe('AppComponent', () => { expect(component.settingsDrawer.open).toHaveBeenCalledTimes(1); }); +<<<<<<< HEAD describe('menu button', () => { beforeEach(() => { store.overrideSelector(selectHasDevices, false); @@ -324,21 +411,54 @@ describe('AppComponent', () => { }); it('should dispatch toggleMenu action', () => { +======= + it('#reloadInterfaces should call setLoading in loaderService', () => { + component.reloadInterfaces(); + + expect(mockLoaderService.setLoading).toHaveBeenCalledWith(true); + }); + + describe('menu button', () => { + it('should toggle menu open state on click', () => { +>>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; menuBtn.click(); +<<<<<<< HEAD expect(store.dispatch).toHaveBeenCalledWith(toggleMenu()); }); it('should focus navigation on tab press if menu button was clicked', () => { focusNavigation = true; +======= + expect(component.isMenuOpen).toBeTrue(); + + menuBtn.click(); + + expect(component.isMenuOpen).toBeFalse(); + }); + + it('should set flag focusNavigation if menu opens on click', () => { + component.isMenuOpen = false; + const menuBtn = compiled.querySelector( + '.app-toolbar-button-menu' + ) as HTMLButtonElement; + + menuBtn.click(); + + expect(component.focusNavigation).toBeTrue(); + }); + + it('should focus navigation on tab press if menu button was clicked', () => { +>>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; +<<<<<<< HEAD menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); const navigation = compiled.querySelector('.app-sidebar'); @@ -352,12 +472,28 @@ describe('AppComponent', () => { it('should not focus navigation button on tab press if menu button was not clicked', () => { focusNavigation = false; +======= + menuBtn.click(); + menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); + const navigationButton = compiled.querySelectorAll('.app-sidebar-button'); + + expect(component.focusNavigation).toBeFalse(); + expect(document.activeElement).toBe(navigationButton[0]); + }); + + it('should not focus navigation button on tab press if menu button was not clicked', () => { + component.focusNavigation = false; +>>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); +<<<<<<< HEAD +======= + expect(component.focusNavigation).toBeFalse(); +>>>>>>> main expect(document.activeElement).toBe(document.body); }); }); @@ -375,7 +511,10 @@ describe('AppComponent', () => { }); it('should have version', () => { +<<<<<<< HEAD fixture.detectChanges(); +======= +>>>>>>> main const version = compiled.querySelector('app-version'); expect(version).toBeTruthy(); @@ -384,7 +523,11 @@ describe('AppComponent', () => { describe('Callout component visibility', () => { describe('with no connection settings', () => { beforeEach(() => { +<<<<<<< HEAD component.hasConnectionSetting$ = of(false); +======= + mockService.hasConnectionSetting$ = of(false); +>>>>>>> main component.ngOnInit(); fixture.detectChanges(); }); @@ -397,14 +540,22 @@ describe('AppComponent', () => { expect(calloutContent).toContain('Step 1'); }); +<<<<<<< HEAD it('should have callout content with "System settings" link ', () => { +======= + it('should have callout content with "Connection settings" link ', () => { +>>>>>>> main const calloutLinkEl = compiled.querySelector( '.message-link' ) as HTMLAnchorElement; const calloutLinkContent = calloutLinkEl.innerHTML.trim(); expect(calloutLinkEl).toBeTruthy(); +<<<<<<< HEAD expect(calloutLinkContent).toContain('System settings'); +======= + expect(calloutLinkContent).toContain('Connection settings'); +>>>>>>> main }); keyboardCases.forEach(testCase => { @@ -424,8 +575,15 @@ describe('AppComponent', () => { describe('with system status as "Idle"', () => { beforeEach(() => { +<<<<<<< HEAD component.hasConnectionSetting$ = of(true); store.overrideSelector(selectHasDevices, true); +======= + mockService.hasConnectionSetting$ = of(true); + mockService.getDevices.and.returnValue( + new BehaviorSubject([device]) + ); +>>>>>>> main mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IDLE); mockService.isTestrunStarted$ = of(false); component.ngOnInit(); @@ -443,7 +601,14 @@ describe('AppComponent', () => { describe('with no devices setted', () => { beforeEach(() => { +<<<<<<< HEAD store.overrideSelector(selectHasDevices, false); +======= + mockService.getDevices.and.returnValue( + new BehaviorSubject(null) + ); + component.ngOnInit(); +>>>>>>> main fixture.detectChanges(); }); @@ -493,16 +658,28 @@ describe('AppComponent', () => { flush(); expect(router.url).toBe(Routes.Devices); +<<<<<<< HEAD expect(store.dispatch).toHaveBeenCalledWith( setIsOpenAddDevice({ isOpenAddDevice: true }) ); +======= + expect(mockService.setIsOpenAddDevice).toHaveBeenCalledWith(true); +>>>>>>> main })); }); describe('with devices setted but without systemStatus data', () => { beforeEach(() => { +<<<<<<< HEAD store.overrideSelector(selectHasDevices, true); mockService.isTestrunStarted$ = of(false); +======= + mockService.getDevices.and.returnValue( + new BehaviorSubject([device]) + ); + mockService.isTestrunStarted$ = of(false); + component.ngOnInit(); +>>>>>>> main fixture.detectChanges(); }); @@ -514,7 +691,11 @@ describe('AppComponent', () => { expect(calloutContent).toContain('Step 3'); }); +<<<<<<< HEAD it('should have callout component with "testing" link', () => { +======= + it('should have callout component with "Testrun" link', () => { +>>>>>>> main const callout = compiled.querySelector('app-callout'); const calloutLinkEl = compiled.querySelector( '.message-link' @@ -522,7 +703,11 @@ describe('AppComponent', () => { const calloutLinkContent = calloutLinkEl.innerHTML.trim(); expect(callout).toBeTruthy(); +<<<<<<< HEAD expect(calloutLinkContent).toContain('testing'); +======= + expect(calloutLinkContent).toContain('Testrun'); +>>>>>>> main }); keyboardCases.forEach(testCase => { @@ -534,15 +719,27 @@ describe('AppComponent', () => { calloutLinkEl.dispatchEvent(testCase.event); flush(); +<<<<<<< HEAD expect(router.url).toBe(Routes.Testing); +======= + expect(router.url).toBe(Routes.Testrun); +>>>>>>> main })); }); }); describe('with devices setted, without systemStatus data, but run the tests ', () => { beforeEach(() => { +<<<<<<< HEAD store.overrideSelector(selectHasDevices, true); mockService.isTestrunStarted$ = of(true); +======= + mockService.getDevices.and.returnValue( + new BehaviorSubject([device]) + ); + mockService.isTestrunStarted$ = of(true); + component.ngOnInit(); +>>>>>>> main fixture.detectChanges(); }); @@ -553,10 +750,20 @@ describe('AppComponent', () => { }); }); +<<<<<<< HEAD describe('with devices setted and systemStatus data', () => { beforeEach(() => { store.overrideSelector(selectHasDevices, true); mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IN_PROGRESS); +======= + describe('with devices setted and systemStatus data ', () => { + beforeEach(() => { + mockService.getDevices.and.returnValue( + new BehaviorSubject([device]) + ); + mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IN_PROGRESS); + component.ngOnInit(); +>>>>>>> main fixture.detectChanges(); }); @@ -566,6 +773,7 @@ describe('AppComponent', () => { expect(callout).toBeNull(); }); }); +<<<<<<< HEAD describe('error', () => { describe('with settingMissedError with one port is missed', () => { @@ -624,6 +832,15 @@ describe('AppComponent', () => { }); it('should not call toggleSettingsBtn focus on closeSetting when device length is 0', async () => { +======= + }); + + it('should not call toggleSettingsBtn focus on closeSetting when device length is 0', async () => { + mockService.getDevices.and.returnValue( + new BehaviorSubject([]) + ); + component.ngOnInit(); +>>>>>>> main fixture.detectChanges(); spyOn(component.settingsDrawer, 'close').and.returnValue( @@ -631,7 +848,11 @@ describe('AppComponent', () => { ); const spyToggle = spyOn(component.toggleSettingsBtn, 'focus'); +<<<<<<< HEAD await component.closeSetting(false); +======= + await component.closeSetting(); +>>>>>>> main expect(spyToggle).toHaveBeenCalledTimes(0); }); @@ -643,6 +864,7 @@ describe('AppComponent', () => { }) class FakeGeneralSettingsComponent { @Input() interfaces = []; +<<<<<<< HEAD @Input() hasConnectionSettings = false; @Output() closeSettingEvent = new EventEmitter(); @Output() reloadInterfacesEvent = new EventEmitter(); @@ -662,4 +884,20 @@ class FakeSpinnerComponent {} class FakeVersionComponent { @Input() consentShown!: boolean; @Output() consentShownEvent = new EventEmitter(); +======= + @Output() closeSettingEvent = new EventEmitter(); + @Output() reloadInterfacesEvent = new EventEmitter(); +>>>>>>> main } + +@Component({ + selector: 'app-spinner', + template: '
    ', +}) +class FakeSpinnerComponent {} + +@Component({ + selector: 'app-version', + template: '
    ', +}) +class FakeVersionComponent {} diff --git a/modules/ui/src/app/app.component.ts b/modules/ui/src/app/app.component.ts index 55d6ab9dc..a4c8db80d 100644 --- a/modules/ui/src/app/app.component.ts +++ b/modules/ui/src/app/app.component.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { MatIconRegistry } from '@angular/material/icon'; import { DomSanitizer } from '@angular/platform-browser'; @@ -42,6 +43,30 @@ import { appFeatureKey } from './store/reducers'; import { SettingMissedError, SystemInterfaces } from './model/setting'; import { GeneralSettingsComponent } from './pages/settings/general-settings.component'; import { AppStore } from './app.store'; +======= +import { + Component, + ElementRef, + HostBinding, + OnInit, + ViewChild, +} from '@angular/core'; +import { MatIconRegistry } from '@angular/material/icon'; +import { DomSanitizer } from '@angular/platform-browser'; +import { MatDrawer } from '@angular/material/sidenav'; +import { SystemInterfaces, TestRunService } from './services/test-run.service'; +import { Observable } from 'rxjs/internal/Observable'; +import { Device } from './model/device'; +import { take } from 'rxjs'; +import { TestrunStatus, StatusOfTestrun } from './model/testrun-status'; +import { Router } from '@angular/router'; +import { LoaderService } from './services/loader.service'; +import { CalloutType } from './model/callout-type'; +import { tap } from 'rxjs/internal/operators/tap'; +import { shareReplay } from 'rxjs/internal/operators/shareReplay'; +import { Routes } from './model/routes'; +import { StateService } from './services/state.service'; +>>>>>>> main const DEVICES_LOGO_URL = '/assets/icons/devices.svg'; const REPORTS_LOGO_URL = '/assets/icons/reports.svg'; @@ -53,6 +78,7 @@ const CLOSE_URL = '/assets/icons/close.svg'; selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], +<<<<<<< HEAD providers: [AppStore], }) export class AppComponent implements OnInit { @@ -77,11 +103,33 @@ export class AppComponent implements OnInit { @ViewChild('navigation') public navigation!: ElementRef; @ViewChild('settings') public settings!: GeneralSettingsComponent; viewModel$ = this.appStore.viewModel$; +======= +}) +export class AppComponent implements OnInit { + public readonly CalloutType = CalloutType; + devices$!: Observable; + systemStatus$!: Observable; + isTestrunStarted$!: Observable; + hasConnectionSetting$!: Observable; + interfaces: SystemInterfaces = {}; + isDevicesLoaded = false; + isStatusLoaded = false; + isConnectionSettingsLoaded = false; + public readonly StatusOfTestrun = StatusOfTestrun; + public readonly Routes = Routes; + private devicesLength = 0; + private openedSettingFromToggleBtn = true; + @ViewChild('settingsDrawer') public settingsDrawer!: MatDrawer; + @ViewChild('toggleSettingsBtn') public toggleSettingsBtn!: HTMLButtonElement; + @ViewChild('navigation') public navigation!: ElementRef; + @HostBinding('class.active-menu') isMenuOpen = false; +>>>>>>> main constructor( private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer, private testRunService: TestRunService, +<<<<<<< HEAD private route: Router, private store: Store, private state: State, @@ -89,6 +137,13 @@ export class AppComponent implements OnInit { private appStore: AppStore ) { this.appStore.getDevices(); +======= + private readonly loaderService: LoaderService, + private readonly state: StateService, + private route: Router + ) { + this.testRunService.fetchDevices(); +>>>>>>> main this.testRunService.getSystemStatus(); this.matIconRegistry.addSvgIcon( 'devices', @@ -113,6 +168,7 @@ export class AppComponent implements OnInit { } ngOnInit(): void { +<<<<<<< HEAD this.systemStatus$ = this.testRunService.systemStatus$.pipe( tap(() => (this.isStatusLoaded = true)), shareReplay({ refCount: true, bufferSize: 1 }) @@ -149,28 +205,130 @@ export class AppComponent implements OnInit { public toggleMenu(event: MouseEvent) { event.stopPropagation(); this.store.dispatch(toggleMenu()); +======= + this.devices$ = this.testRunService.getDevices().pipe( + tap(result => { + if (result !== null) { + this.devicesLength = result.length; + this.isDevicesLoaded = true; + } else { + this.devicesLength = 0; + } + }), + shareReplay({ refCount: true, bufferSize: 1 }) + ); + + this.systemStatus$ = this.testRunService.systemStatus$.pipe( + tap(() => (this.isStatusLoaded = true)) + ); + + this.isTestrunStarted$ = this.testRunService.isTestrunStarted$; + + this.hasConnectionSetting$ = this.testRunService.hasConnectionSetting$.pipe( + tap(result => { + if (result !== null) { + this.isConnectionSettingsLoaded = true; + } + }), + shareReplay({ refCount: true, bufferSize: 1 }) + ); + } + + navigateToDeviceRepository(): void { + this.route.navigate([Routes.Devices]); + this.testRunService.setIsOpenAddDevice(true); + } + + navigateToRuntime(): void { + this.route.navigate([Routes.Testrun]); + this.testRunService.setIsOpenStartTestrun(true); + } + + async closeSetting(): Promise { + return await this.settingsDrawer.close().then(() => { + if (this.devicesLength > 0) { + this.toggleSettingsBtn.focus(); + } // else device create window will be opened + + if (!this.openedSettingFromToggleBtn) { + this.state.focusFirstElementInMain(); + } + }); + } + + async openSetting(): Promise { + return await this.openGeneralSettings(false); + } + + reloadInterfaces(): void { + this.showLoading(); + this.getSystemInterfaces(); + } + + /** + * Indicates, if side menu should be focused on keyboard navigation after menu is opened + */ + focusNavigation = false; + + public toggleMenu(event: MouseEvent) { + event.stopPropagation(); + this.isMenuOpen = !this.isMenuOpen; + if (this.isMenuOpen) { + this.focusNavigation = true; // user will be navigated to side menu on tab + } +>>>>>>> main } /** * When side menu is opened */ skipToNavigation(event: Event) { +<<<<<<< HEAD if (this.state.getValue()[appFeatureKey].appComponent.focusNavigation) { event.preventDefault(); // if not prevented, second element will be focused this.focusManagerService.focusFirstElementInContainer( this.navigation.nativeElement ); this.store.dispatch(updateFocusNavigation({ focusNavigation: false })); // user will be navigated according to normal flow on tab +======= + if (this.focusNavigation) { + event.preventDefault(); // if not prevented, second element will be focused + this.navigation.nativeElement.firstChild.focus(); // focus first button on side + this.focusNavigation = false; // user will be navigated according to normal flow on tab +>>>>>>> main } } async openGeneralSettings(openSettingFromToggleBtn: boolean) { this.openedSettingFromToggleBtn = openSettingFromToggleBtn; +<<<<<<< HEAD this.settings.getSystemInterfaces(); await this.settingsDrawer.open(); } consentShown() { this.appStore.setContent(); +======= + this.getSystemInterfaces(); + await this.settingsDrawer.open(); + } + + private getSystemInterfaces(): void { + this.testRunService + .getSystemInterfaces() + .pipe(take(1)) + .subscribe(interfaces => { + this.interfaces = interfaces; + this.hideLoading(); + }); + } + + private showLoading() { + this.loaderService.setLoading(true); + } + + private hideLoading() { + this.loaderService.setLoading(false); +>>>>>>> main } } diff --git a/modules/ui/src/app/app.module.ts b/modules/ui/src/app/app.module.ts index 42ade0ddd..ce1f4439f 100644 --- a/modules/ui/src/app/app.module.ts +++ b/modules/ui/src/app/app.module.ts @@ -26,7 +26,11 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +<<<<<<< HEAD import { GeneralSettingsComponent } from './pages/settings/general-settings.component'; +======= +import { GeneralSettingsComponent } from './components/general-settings/general-settings.component'; +>>>>>>> main import { ReactiveFormsModule } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSnackBarModule } from '@angular/material/snack-bar'; @@ -38,12 +42,15 @@ import { SpinnerComponent } from './components/spinner/spinner.component'; import { BypassComponent } from './components/bypass/bypass.component'; import { VersionComponent } from './components/version/version.component'; import { CalloutComponent } from './components/callout/callout.component'; +<<<<<<< HEAD import { StoreModule } from '@ngrx/store'; import { appFeatureKey, rootReducer } from './store/reducers'; import { EffectsModule } from '@ngrx/effects'; import { AppEffects } from './store/effects'; import { CdkTrapFocus } from '@angular/cdk/a11y'; import { SettingsDropdownComponent } from './pages/settings/components/settings-dropdown/settings-dropdown.component'; +======= +>>>>>>> main @NgModule({ declarations: [AppComponent, GeneralSettingsComponent], @@ -67,10 +74,13 @@ import { SettingsDropdownComponent } from './pages/settings/components/settings- BypassComponent, VersionComponent, CalloutComponent, +<<<<<<< HEAD StoreModule.forRoot({ [appFeatureKey]: rootReducer }), EffectsModule.forRoot([AppEffects]), CdkTrapFocus, SettingsDropdownComponent, +======= +>>>>>>> main ], providers: [ { diff --git a/modules/ui/src/app/components/bypass/bypass.component.spec.ts b/modules/ui/src/app/components/bypass/bypass.component.spec.ts index 8ba531e7e..c0149d082 100644 --- a/modules/ui/src/app/components/bypass/bypass.component.spec.ts +++ b/modules/ui/src/app/components/bypass/bypass.component.spec.ts @@ -17,7 +17,11 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BypassComponent } from './bypass.component'; import { Component } from '@angular/core'; +<<<<<<< HEAD import { FocusManagerService } from '../../services/focus-manager.service'; +======= +import { StateService } from '../../services/state.service'; +>>>>>>> main import SpyObj = jasmine.SpyObj; @Component({ @@ -31,6 +35,7 @@ class TestBypassComponent {} describe('BypassComponent', () => { let component: TestBypassComponent; let fixture: ComponentFixture; +<<<<<<< HEAD let mockService: SpyObj; beforeEach(() => { @@ -39,6 +44,16 @@ describe('BypassComponent', () => { imports: [BypassComponent], declarations: [TestBypassComponent], providers: [{ provide: FocusManagerService, useValue: mockService }], +======= + let mockService: SpyObj; + + beforeEach(() => { + mockService = jasmine.createSpyObj(['focusFirstElementInMain']); + TestBed.configureTestingModule({ + imports: [BypassComponent], + declarations: [TestBypassComponent], + providers: [{ provide: StateService, useValue: mockService }], +>>>>>>> main }); fixture = TestBed.createComponent(TestBypassComponent); component = fixture.componentInstance; @@ -57,7 +72,11 @@ describe('BypassComponent', () => { button?.click(); +<<<<<<< HEAD expect(mockService.focusFirstElementInContainer).toHaveBeenCalled(); +======= + expect(mockService.focusFirstElementInMain).toHaveBeenCalled(); +>>>>>>> main }); }); }); diff --git a/modules/ui/src/app/components/bypass/bypass.component.ts b/modules/ui/src/app/components/bypass/bypass.component.ts index 3a7d2819c..1d7985edc 100644 --- a/modules/ui/src/app/components/bypass/bypass.component.ts +++ b/modules/ui/src/app/components/bypass/bypass.component.ts @@ -16,7 +16,11 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; +<<<<<<< HEAD import { FocusManagerService } from '../../services/focus-manager.service'; +======= +import { StateService } from '../../services/state.service'; +>>>>>>> main @Component({ selector: 'app-bypass', @@ -26,9 +30,16 @@ import { FocusManagerService } from '../../services/focus-manager.service'; styleUrls: ['./bypass.component.scss'], }) export class BypassComponent { +<<<<<<< HEAD constructor(private readonly focusManagerService: FocusManagerService) {} skipToMainContent(event: Event) { event.preventDefault(); this.focusManagerService.focusFirstElementInContainer(); +======= + constructor(private readonly state: StateService) {} + skipToMainContent(event: Event) { + event.preventDefault(); + this.state.focusFirstElementInMain(); +>>>>>>> main } } diff --git a/modules/ui/src/app/components/callout/callout.component.scss b/modules/ui/src/app/components/callout/callout.component.scss index 262552c91..b73f8d1df 100644 --- a/modules/ui/src/app/components/callout/callout.component.scss +++ b/modules/ui/src/app/components/callout/callout.component.scss @@ -21,6 +21,7 @@ width: 100%; } +<<<<<<< HEAD :host:has(.callout-container.info), :host:has(.callout-container.error) { position: absolute; @@ -30,6 +31,12 @@ top: 60px; } +======= +:host:has(.callout-container.info) { + position: absolute; +} + +>>>>>>> main .callout-container { display: flex; box-sizing: border-box; @@ -63,6 +70,7 @@ } } +<<<<<<< HEAD .callout-container.error { margin: 24px 32px; background-color: $red-50; @@ -86,6 +94,8 @@ } } +======= +>>>>>>> main .callout-context { margin: 0; padding: 6px 0; diff --git a/modules/ui/src/app/components/callout/callout.component.ts b/modules/ui/src/app/components/callout/callout.component.ts index bfb6ea9bf..7b5456138 100644 --- a/modules/ui/src/app/components/callout/callout.component.ts +++ b/modules/ui/src/app/components/callout/callout.component.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<<< HEAD:modules/ui/src/app/components/callout/callout.component.ts import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatIconModule } from '@angular/material/icon'; @@ -27,4 +28,33 @@ import { MatIconModule } from '@angular/material/icon'; }) export class CalloutComponent { @Input() type = ''; +======== +@import '../../../theming/colors'; + +:host { + display: grid; + overflow: hidden; + width: 570px; + padding: 24px 16px 8px 24px; + gap: 10px; +} + +.delete-form-title { + color: #202124; + font-size: 18px; + line-height: 24px; +} + +.delete-form-content { + font-family: Roboto, sans-serif; + font-size: 14px; + line-height: 20px; + letter-spacing: 0.2px; + color: $grey-800; +} + +.delete-form-actions { + padding: 0; + min-height: 30px; +>>>>>>>> main:modules/ui/src/app/components/delete-form/delete-form.component.scss } diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.html b/modules/ui/src/app/components/delete-report/delete-report.component.html new file mode 100644 index 000000000..51458b23b --- /dev/null +++ b/modules/ui/src/app/components/delete-report/delete-report.component.html @@ -0,0 +1,24 @@ + + + + + + diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.scss b/modules/ui/src/app/components/delete-report/delete-report.component.scss new file mode 100644 index 000000000..54464931e --- /dev/null +++ b/modules/ui/src/app/components/delete-report/delete-report.component.scss @@ -0,0 +1,26 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +:host { + display: inline-block; +} + +.delete-report-button { + cursor: pointer; + display: inline-block; + & ::ng-deep .mdc-icon-button__ripple { + display: none; + } +} diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts b/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts new file mode 100644 index 000000000..11e9c2a2e --- /dev/null +++ b/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts @@ -0,0 +1,110 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DeleteReportComponent } from './delete-report.component'; +import { of } from 'rxjs'; +import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { DeleteFormComponent } from '../delete-form/delete-form.component'; +import { TestRunService } from '../../services/test-run.service'; +import SpyObj = jasmine.SpyObj; +import { MOCK_PROGRESS_DATA_COMPLIANT } from '../../mocks/progress.mock'; + +describe('DeleteReportComponent', () => { + let compiled: HTMLElement; + let component: DeleteReportComponent; + let fixture: ComponentFixture; + let mockService: SpyObj; + + beforeEach(() => { + mockService = jasmine.createSpyObj(['deleteReport', 'removeReport']); + TestBed.configureTestingModule({ + imports: [DeleteReportComponent, MatDialogModule], + providers: [ + { provide: TestRunService, useValue: mockService }, + { + provide: MatDialogRef, + useValue: { + close: () => ({}), + }, + }, + ], + }); + fixture = TestBed.createComponent(DeleteReportComponent); + component = fixture.componentInstance; + component.data = MOCK_PROGRESS_DATA_COMPLIANT; + compiled = fixture.nativeElement as HTMLElement; + }); + + describe('Class tests', () => { + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('#deleteReport should open delete dialog', () => { + const deviceRemovedSpy = spyOn(component.deviceRemoved, 'emit'); + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + mockService.deleteReport.and.returnValue(of(true)); + mockService.removeReport.and.callThrough(); + + component.deleteReport(new Event('click')); + + expect(mockService.deleteReport).toHaveBeenCalledWith( + '01:02:03:04:05:06', + '2023-06-22T09:20:00.123Z' + ); + expect(mockService.removeReport).toHaveBeenCalledWith( + '01:02:03:04:05:06', + '2023-06-22T09:20:00.123Z' + ); + expect(deviceRemovedSpy).toHaveBeenCalled(); + }); + }); + + describe('DOM tests', () => { + describe('with not data provided', () => { + beforeEach(() => { + (component.data as unknown) = null; + fixture.detectChanges(); + }); + + it('should not have content', () => { + const deleteReportButton = compiled.querySelector( + '.delete-report-button' + ); + + expect(deleteReportButton).toBeNull(); + }); + }); + + describe('with data provided', () => { + beforeEach(() => { + component.data = MOCK_PROGRESS_DATA_COMPLIANT; + fixture.detectChanges(); + }); + + it('should have delete report button', () => { + const deleteReportButton = compiled.querySelector( + '.delete-report-button' + ); + + expect(deleteReportButton).toBeTruthy(); + }); + }); + }); +}); diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.ts b/modules/ui/src/app/components/delete-report/delete-report.component.ts new file mode 100644 index 000000000..4f76b1859 --- /dev/null +++ b/modules/ui/src/app/components/delete-report/delete-report.component.ts @@ -0,0 +1,91 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ChangeDetectionStrategy, + Component, + EventEmitter, + OnDestroy, + Output, +} from '@angular/core'; +import { CommonModule, DatePipe } from '@angular/common'; +import { MatButtonModule } from '@angular/material/button'; +import { ReportActionComponent } from '../report-action/report-action.component'; +import { TestRunService } from '../../services/test-run.service'; +import { MatDialog } from '@angular/material/dialog'; +import { DeleteFormComponent } from '../delete-form/delete-form.component'; +import { takeUntil } from 'rxjs/internal/operators/takeUntil'; +import { Subject } from 'rxjs'; + +@Component({ + selector: 'app-delete-report', + standalone: true, + imports: [CommonModule, MatButtonModule], + templateUrl: './delete-report.component.html', + styleUrls: ['./delete-report.component.scss'], + providers: [DatePipe], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class DeleteReportComponent + extends ReportActionComponent + implements OnDestroy +{ + @Output() deviceRemoved = new EventEmitter(); + private destroy$: Subject = new Subject(); + constructor( + private testRunService: TestRunService, + public dialog: MatDialog, + datePipe: DatePipe + ) { + super(datePipe); + } + + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.unsubscribe(); + } + + deleteReport(event: Event) { + event.preventDefault(); + const dialogRef = this.dialog.open(DeleteFormComponent, { + ariaLabel: 'Delete report', + data: { + title: 'Delete report', + content: this.getTestRunId(this.data), + }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'delete-form-dialog', + }); + + dialogRef + ?.afterClosed() + .pipe(takeUntil(this.destroy$)) + .subscribe(deleteReport => { + if (deleteReport) { + this.testRunService + .deleteReport(this.data.device.mac_addr, this.data.started || '') + .subscribe(() => { + this.deviceRemoved.emit(); + this.testRunService.removeReport( + this.data.device.mac_addr, + this.data.started || '' + ); + }); + } + }); + } +} diff --git a/modules/ui/src/app/components/device-item/device-item.component.html b/modules/ui/src/app/components/device-item/device-item.component.html index 0496d74fb..4f120d69b 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.html +++ b/modules/ui/src/app/components/device-item/device-item.component.html @@ -14,11 +14,17 @@ limitations under the License. -->
    >>>>>> main @import '../../../theming/colors'; @import '../../../theming/variables'; @@ -34,8 +37,13 @@ $border-radius: 12px; grid-row-gap: 4px; font-family: 'Open Sans', sans-serif; grid-template-areas: +<<<<<<< HEAD 'manufacturer manufacturer' 'name address'; +======= + 'manufacturer manufacturer icon' + 'name address icon'; +>>>>>>> main &:hover { cursor: pointer; @@ -122,10 +130,30 @@ $border-radius: 12px; } } +.item-manufacturer { + padding: 0 16px; + grid-area: manufacturer; + justify-self: start; +<<<<<<< HEAD +======= + align-self: end; + color: #1f1f1f; + justify-content: start; + font-size: 16px; + font-weight: 500; + line-height: 24px; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 230px; + text-align: start; +} + .item-name { padding: 0 16px; grid-area: name; justify-self: start; +>>>>>>> main color: $grey-800; font-size: 14px; font-style: normal; @@ -153,7 +181,11 @@ $border-radius: 12px; grid-area: start; width: $icon-width; height: calc($icon-width - 2px); +<<<<<<< HEAD background-color: mat.get-color-from-palette($color-primary, 50); +======= + background-color: #e8f0fe; +>>>>>>> main justify-self: end; border-radius: 0 $border-radius $border-radius 0; diff --git a/modules/ui/src/app/components/device-item/device-item.component.spec.ts b/modules/ui/src/app/components/device-item/device-item.component.spec.ts index b7dd90524..638cd1fb9 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.spec.ts +++ b/modules/ui/src/app/components/device-item/device-item.component.spec.ts @@ -14,10 +14,17 @@ * limitations under the License. */ import { ComponentFixture, TestBed } from '@angular/core/testing'; +<<<<<<< HEAD import { Device, DeviceView } from '../../model/device'; import { DeviceItemComponent } from './device-item.component'; import { DeviceRepositoryModule } from '../../pages/devices/device-repository.module'; +======= +import { Device } from '../../model/device'; + +import { DeviceItemComponent } from './device-item.component'; +import { DeviceRepositoryModule } from '../../device-repository/device-repository.module'; +>>>>>>> main describe('DeviceItemComponent', () => { let component: DeviceItemComponent; @@ -54,6 +61,7 @@ describe('DeviceItemComponent', () => { fixture.detectChanges(); }); +<<<<<<< HEAD it('should display information about device', () => { const name = compiled.querySelector('.item-name'); const manufacturer = compiled.querySelector('.item-manufacturer'); @@ -79,6 +87,11 @@ describe('DeviceItemComponent', () => { expect(item.tabIndex).toBe(-2); }); +======= + expect(name?.textContent?.trim()).toEqual('O3-DIN-CPU'); + expect(manufacturer?.textContent?.trim()).toEqual('Delta'); + expect(mac?.textContent?.trim()).toEqual('00:1e:42:35:73:c4'); +>>>>>>> main }); describe('with device view as WithActions', () => { @@ -103,4 +116,12 @@ describe('DeviceItemComponent', () => { expect(clickSpy).toHaveBeenCalledWith(component.device); }); }); + + it('should have tabindex', () => { + component.tabIndex = -2; + fixture.detectChanges(); + const item = compiled.querySelector('.device-item') as HTMLElement; + + expect(item.tabIndex).toBe(-2); + }); }); diff --git a/modules/ui/src/app/components/device-item/device-item.component.ts b/modules/ui/src/app/components/device-item/device-item.component.ts index 2b1c44e0f..3b5e9e9ce 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.ts +++ b/modules/ui/src/app/components/device-item/device-item.component.ts @@ -14,22 +14,32 @@ * limitations under the License. */ import { Component, EventEmitter, Input, Output } from '@angular/core'; +<<<<<<< HEAD import { Device, DeviceView } from '../../model/device'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; +======= +import { Device } from '../../model/device'; +>>>>>>> main @Component({ selector: 'app-device-item', templateUrl: './device-item.component.html', styleUrls: ['./device-item.component.scss'], standalone: true, +<<<<<<< HEAD imports: [CommonModule, MatButtonModule, MatIconModule], +======= +>>>>>>> main }) export class DeviceItemComponent { @Input() device!: Device; @Input() tabIndex = 0; +<<<<<<< HEAD @Input() deviceView!: string; +======= +>>>>>>> main @Output() itemClicked = new EventEmitter(); @Output() startTestrunClicked = new EventEmitter(); readonly DeviceView = DeviceView; @@ -37,9 +47,12 @@ export class DeviceItemComponent { itemClick(): void { this.itemClicked.emit(this.device); } +<<<<<<< HEAD startTestrunClick(): void { this.startTestrunClicked.emit(this.device); } +======= +>>>>>>> main get label() { return `${this.device.manufacturer} ${this.device.model} ${this.device.mac_addr}`; diff --git a/modules/ui/src/app/components/download-report/download-report.component.html b/modules/ui/src/app/components/download-report/download-report.component.html index 14f2a0bf3..055937041 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.html +++ b/modules/ui/src/app/components/download-report/download-report.component.html @@ -16,10 +16,17 @@ +======= + download="{{ getReportTitle(data) }}" + href="{{ data.report }}" + target="_blank" + title="Download report for Test Run # {{ getTestRunId(data) }}"> +>>>>>>> main diff --git a/modules/ui/src/app/components/download-report/download-report.component.spec.ts b/modules/ui/src/app/components/download-report/download-report.component.spec.ts index d167c638f..41ecb015d 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.spec.ts +++ b/modules/ui/src/app/components/download-report/download-report.component.spec.ts @@ -75,10 +75,13 @@ describe('DownloadReportComponent', () => { describe('with data provided', () => { beforeEach(() => { component.data = MOCK_PROGRESS_DATA_COMPLIANT; +<<<<<<< HEAD component.title = 'Download pdf for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20'; component.href = MOCK_PROGRESS_DATA_COMPLIANT.report; +======= +>>>>>>> main fixture.detectChanges(); }); @@ -95,7 +98,11 @@ describe('DownloadReportComponent', () => { 'delta_03-din-cpu_1.2.2_compliant_22_jun_2023_9:20' ); expect(downloadReportLink.title).toEqual( +<<<<<<< HEAD 'Download pdf for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20' +======= + 'Download report for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20' +>>>>>>> main ); }); }); diff --git a/modules/ui/src/app/components/download-report/download-report.component.ts b/modules/ui/src/app/components/download-report/download-report.component.ts index 90c47ed4a..0f1de7b57 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.ts +++ b/modules/ui/src/app/components/download-report/download-report.component.ts @@ -13,7 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +======= +import { ChangeDetectionStrategy, Component } from '@angular/core'; +>>>>>>> main import { TestrunStatus } from '../../model/testrun-status'; import { CommonModule, DatePipe } from '@angular/common'; import { ReportActionComponent } from '../report-action/report-action.component'; @@ -28,9 +32,12 @@ import { ReportActionComponent } from '../report-action/report-action.component' changeDetection: ChangeDetectionStrategy.OnPush, }) export class DownloadReportComponent extends ReportActionComponent { +<<<<<<< HEAD @Input() href: string | undefined; @Input() title!: string; +======= +>>>>>>> main getReportTitle(data: TestrunStatus) { return `${data.device.manufacturer} ${data.device.model} ${ data.device.firmware diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.html b/modules/ui/src/app/components/filter-chips/filter-chips.component.html new file mode 100644 index 000000000..07cf43aa0 --- /dev/null +++ b/modules/ui/src/app/components/filter-chips/filter-chips.component.html @@ -0,0 +1,54 @@ + + + + + Device contains "{{ item.value }}" + + Firmware contains "{{ item.value }}" + + + {{ item.value }} + + + + + + Clear all filters + + diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.scss b/modules/ui/src/app/components/filter-chips/filter-chips.component.scss new file mode 100644 index 000000000..5dc1c5ede --- /dev/null +++ b/modules/ui/src/app/components/filter-chips/filter-chips.component.scss @@ -0,0 +1,76 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@import '../../../theming/colors'; + +:host { + display: flex; +} + +.clear-all { + display: flex; + align-items: center; + justify-content: center; + padding: 0 8px; + cursor: pointer; + color: $primary; + font-weight: 400; + height: 32px; + margin: 4px 0 4px 8px; + border-radius: 16px; + flex-shrink: 0; + background: $white; + font-family: Roboto, sans-serif; +} + +.filter-chip.mat-mdc-chip { + background: $white; + border: 1px solid $primary; +} + +.filter-chip.mat-mdc-chip ::ng-deep .mat-mdc-chip-action-label { + color: $primary; + font-weight: 500; +} + +.filter-chip.mat-mdc-chip ::ng-deep .mat-mdc-chip-remove { + color: $primary; +} + +.filter-chip.cdk-keyboard-focused, +.filter-chip-remove:focus-visible { + outline: $black solid 2px; +} + +.filter-chip .filter-chip-remove { + margin: 0 8px; + padding-left: 0; + padding-right: 0; + border-radius: 8px; +} + +.mat-mdc-standard-chip:not( + .mdc-evolution-chip--disabled + ).filter-chip-clear-all { + background-color: $white; + + & ::ng-deep .mat-mdc-chip-action { + padding: 0; + } + + & ::ng-deep .mat-mdc-chip-focus-overlay { + display: none; + } +} diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts b/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts new file mode 100644 index 000000000..34cb9459f --- /dev/null +++ b/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts @@ -0,0 +1,138 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterChipsComponent } from './filter-chips.component'; + +describe('FilterChipsComponent', () => { + let component: FilterChipsComponent; + let fixture: ComponentFixture; + let compiled: HTMLElement; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [FilterChipsComponent], + }); + fixture = TestBed.createComponent(FilterChipsComponent); + component = fixture.componentInstance; + compiled = fixture.nativeElement as HTMLElement; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('DOM tests', () => { + describe('"Clear all filters" button', () => { + it('should exist', () => { + const button = compiled.querySelector('.clear-all'); + + expect(button).toBeTruthy(); + }); + + it('should clear all filters on click', () => { + const clearAllFiltersSpy = spyOn(component, 'clearAllFilters'); + const button = compiled.querySelector( + '.clear-all' + ) as HTMLButtonElement; + button.click(); + + expect(clearAllFiltersSpy).toHaveBeenCalled(); + }); + }); + + describe('filter chips', () => { + describe('with no filter data', () => { + beforeEach(() => { + component.filters = { + deviceInfo: '', + deviceFirmware: '', + results: [], + dateRange: '', + }; + fixture.detectChanges(); + }); + it('should not be displayed', () => { + const chips = compiled.querySelectorAll('.filter-chip'); + + expect(chips.length).toEqual(0); + }); + }); + + describe('with filter data', () => { + beforeEach(() => { + component.filters = { + deviceInfo: 'Delta', + deviceFirmware: '03', + results: ['Compliant'], + dateRange: '', + }; + fixture.detectChanges(); + }); + it('should be displayed', () => { + const chips = compiled.querySelectorAll('.filter-chip'); + + expect(chips.length).toEqual(3); + }); + + it('should call clearFilter on close button click', () => { + const clearFilterSpy = spyOn(component, 'clearFilter'); + const chipRemoveButtons = compiled.querySelectorAll( + '.filter-chip button' + ); + (chipRemoveButtons[1] as HTMLButtonElement).click(); + + expect(clearFilterSpy).toHaveBeenCalledWith('deviceInfo'); + }); + }); + }); + }); + + describe('Class tests', () => { + beforeEach(() => { + component.filters = { + deviceInfo: 'Delta', + deviceFirmware: '03', + results: ['Compliant'], + dateRange: '', + }; + fixture.detectChanges(); + }); + + it('should clear filters on clearAllFilters', () => { + component.clearAllFilters(); + + expect(component.filters).toEqual({ + deviceInfo: '', + deviceFirmware: '', + results: [], + dateRange: '', + }); + }); + + it('should filter by kay on clearFilter', () => { + component.clearFilter('deviceInfo'); + + expect(component.filters).toEqual({ + deviceInfo: '', + deviceFirmware: '03', + results: ['Compliant'], + dateRange: '', + }); + }); + }); +}); diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.ts b/modules/ui/src/app/components/filter-chips/filter-chips.component.ts new file mode 100644 index 000000000..3a6d0c9e3 --- /dev/null +++ b/modules/ui/src/app/components/filter-chips/filter-chips.component.ts @@ -0,0 +1,66 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { MatIconModule } from '@angular/material/icon'; +import { MatChipsModule } from '@angular/material/chips'; +import { CommonModule, KeyValuePipe } from '@angular/common'; +import { DateRange, FilterName, Filters } from '../../model/filters'; + +@Component({ + selector: 'app-filter-chips', + templateUrl: './filter-chips.component.html', + styleUrls: ['./filter-chips.component.scss'], + standalone: true, + imports: [MatIconModule, MatChipsModule, KeyValuePipe, CommonModule], +}) +export class FilterChipsComponent { + @Input() filters!: Filters; + + @Output() filterCleared = new EventEmitter(); + + isValueEmpty(value: string | string[] | DateRange) { + if (value instanceof DateRange) { + return !value.start && !value.end; + } + return value === null || value.length === 0; + } + + clearFilter(filter: string) { + switch (filter) { + case FilterName.DeviceInfo: + this.filters.deviceInfo = ''; + break; + case FilterName.DeviceFirmware: + this.filters.deviceFirmware = ''; + break; + case FilterName.Results: + this.filters.results = []; + break; + case FilterName.DateRange: + this.filters.dateRange = ''; + break; + } + this.filterCleared.emit(this.filters); + } + + clearAllFilters() { + this.filters.deviceInfo = ''; + this.filters.deviceFirmware = ''; + this.filters.results = []; + this.filters.dateRange = ''; + this.filterCleared.emit(this.filters); + } +} diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html new file mode 100644 index 000000000..459ad20d6 --- /dev/null +++ b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html @@ -0,0 +1,79 @@ + + +
    + + + + + + +
    +

    + + {{ resultList[i].value }} + +

    +
    +
    + + + + + + + + + + + +
    + + + + diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss new file mode 100644 index 000000000..e8f24fcc8 --- /dev/null +++ b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss @@ -0,0 +1,66 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@use '@angular/material' as mat; +@import '../../../theming/colors'; + +.filter-dialog-content { + display: flex; + flex-direction: column; + padding: 16px 16px 0 16px; +} + +.date-field { + flex-shrink: 0; +} + +.date-calendar { + flex-grow: 1; + overflow: auto; + min-height: 2em; +} + +.filter-dialog-actions { + border-top: 1px solid $lighter-grey; + gap: 16px; + + button { + min-width: 38px; + margin: 0; + padding: 0 8px; + color: mat.get-color-from-palette($color-primary, 600); + font-weight: 500; + line-height: 20px; + letter-spacing: 0.25px; + } +} + +.text-field, +.date-field { + width: 100%; +} + +.filter-result-item { + padding: 4px 0; + margin: 0; + + &:first-child { + padding-top: 0; + } + + &:last-child { + padding-bottom: 20px; + } +} diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts new file mode 100644 index 000000000..4ecc15e52 --- /dev/null +++ b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts @@ -0,0 +1,208 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterDialogComponent } from './filter-dialog.component'; +import { CommonModule } from '@angular/common'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { + MatDatepickerInputEvent, + MatDatepickerModule, +} from '@angular/material/datepicker'; +import { MatNativeDateModule } from '@angular/material/core'; +import { DateRange, FilterName } from '../../model/filters'; +import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { of } from 'rxjs'; + +describe('FilterDialogComponent', () => { + let component: FilterDialogComponent; + let fixture: ComponentFixture; + let compiled: HTMLElement; + const mockData = { left: 0, bottom: 0 }; + const mockClientRest = { + nativeElement: { + getBoundingClientRect: () => mockData, + }, + }; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [ + FilterDialogComponent, + CommonModule, + NoopAnimationsModule, + MatDialogModule, + MatButtonModule, + FormsModule, + ReactiveFormsModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatCheckboxModule, + MatDatepickerModule, + MatNativeDateModule, + ], + providers: [ + { + provide: MatDialogRef, + useValue: { + keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), + close: () => ({}), + updateSize: () => ({}), + updatePosition: () => ({}), + }, + }, + { provide: MAT_DIALOG_DATA, useValue: {} }, + ], + }); + fixture = TestBed.createComponent(FilterDialogComponent); + component = fixture.componentInstance; + + component.data = { + trigger: mockClientRest, + filter: FilterName.DeviceInfo, + }; + component.data.trigger.nativeElement = { + getBoundingClientRect: () => mockData, + }; + compiled = fixture.nativeElement as HTMLElement; + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should close dialog on "cancel" click', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const closeButton = compiled.querySelector( + '.cancel-button' + ) as HTMLButtonElement; + + closeButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith(); + + closeSpy.calls.reset(); + }); + + it('should close dialog with data on "confirm" click', () => { + fixture.detectChanges(); + component.filterForm.get('deviceInfo')?.setValue('deviceInfo '); + const mockFormData = { + deviceInfo: 'deviceInfo', + deviceFirmware: '', + results: [], + dateRange: new DateRange(), + }; + const closeSpy = spyOn(component.dialogRef, 'close'); + const confirmButton = compiled.querySelector( + '.confirm-button' + ) as HTMLButtonElement; + + confirmButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith(mockFormData); + + closeSpy.calls.reset(); + }); + + describe('date filter', () => { + beforeEach(() => { + component.data = { + trigger: mockClientRest, + filter: FilterName.Started, + }; + fixture.detectChanges(); + }); + + it('#selectedChange should set date range data', () => { + const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); + const mockDate2 = new Date('Thu Jun 22 2023 00:00:00 GMT+0000'); + const range = new DateRange(); + range.start = mockDate; + range.end = null; + + component.selectedChange(mockDate); + + expect(component.range).toEqual(range); + + range.end = mockDate2; + component.selectedChange(mockDate2); + + expect(component.range).toEqual(range); + }); + + it('#startDateChanged should set date range data', () => { + const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); + component.startDateChanged({ + value: mockDate, + } as MatDatepickerInputEvent); + + expect(component.selectedRangeValue?.end).toEqual(null); + expect(component.selectedRangeValue?.start).toEqual(mockDate); + }); + + it('#startDateChanged should replace year if selected year later than current', () => { + const mockDate = new Date('Wed Jun 21 99999 00:00:00 GMT+0000'); + const currentDate = new Date(mockDate); + currentDate.setFullYear(new Date().getFullYear()); + + component.startDateChanged({ + value: mockDate, + } as MatDatepickerInputEvent); + + expect(component.selectedRangeValue?.start).toEqual(currentDate); + expect(component.range.start).toEqual(currentDate); + }); + + it('#endDateChanged should set date range data', () => { + const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); + component.endDateChanged({ + value: mockDate, + } as MatDatepickerInputEvent); + + expect(component.selectedRangeValue?.start).toEqual(null); + expect(component.selectedRangeValue?.end).toEqual(mockDate); + }); + + it('#endDateChanged should replace year if selected year later than current', () => { + const mockDate = new Date('Wed Jun 21 99999 00:00:00 GMT+0000'); + const currentDate = new Date(mockDate); + currentDate.setFullYear(new Date().getFullYear()); + + component.endDateChanged({ + value: mockDate, + } as MatDatepickerInputEvent); + + expect(component.selectedRangeValue?.end).toEqual(currentDate); + expect(component.range.end).toEqual(currentDate); + }); + + it('should max date as today', () => { + expect(component.calendar.maxDate?.getDate()).toBe(new Date().getDate()); + }); + }); +}); diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts new file mode 100644 index 000000000..d8ed991ae --- /dev/null +++ b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts @@ -0,0 +1,233 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ChangeDetectionStrategy, + Component, + ElementRef, + HostListener, + Inject, + OnInit, + ViewChild, +} from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { + MAT_DIALOG_DATA, + MatDialogConfig, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { + FormArray, + FormBuilder, + FormControl, + FormGroup, + FormsModule, + ReactiveFormsModule, +} from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { + DateRange, + DefaultMatCalendarRangeStrategy, + MAT_DATE_RANGE_SELECTION_STRATEGY, + MatCalendar, + MatDatepickerInputEvent, + MatDatepickerModule, +} from '@angular/material/datepicker'; +import { MatNativeDateModule } from '@angular/material/core'; +import { FilterName, DateRange as LocalDateRange } from '../../model/filters'; +import { EscapableDialogComponent } from '../escapable-dialog/escapable-dialog.component'; + +interface DialogData { + trigger: ElementRef; + filter: string; +} + +@Component({ + selector: 'app-filter-dialog', + standalone: true, + imports: [ + CommonModule, + MatDialogModule, + MatButtonModule, + FormsModule, + ReactiveFormsModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatCheckboxModule, + MatDatepickerModule, + MatNativeDateModule, + ], + templateUrl: './filter-dialog.component.html', + styleUrls: ['./filter-dialog.component.scss'], + providers: [ + { + provide: MAT_DATE_RANGE_SELECTION_STRATEGY, + useClass: DefaultMatCalendarRangeStrategy, + }, + ], + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class FilterDialogComponent + extends EscapableDialogComponent + implements OnInit +{ + resultList = [ + { value: 'Compliant', enabled: false }, + { value: 'Non-Compliant', enabled: false }, + ]; + filterForm!: FormGroup; + selectedRangeValue!: DateRange | undefined; + + public readonly FilterName = FilterName; + + range: LocalDateRange = new LocalDateRange(); + + topPosition = 0; + + today = new Date(); + + private dialog_actions_height = 50; + + @HostListener('window:resize', ['$event']) + onResize() { + this.setDialogView(); + } + + @ViewChild(MatCalendar) calendar!: MatCalendar; + + constructor( + public override dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: DialogData, + private fb: FormBuilder + ) { + super(dialogRef); + } + + ngOnInit() { + this.setDialogView(); + this.createFilterForm(); + } + + private setDialogView(): void { + const matDialogConfig: MatDialogConfig = new MatDialogConfig(); + const rect = this.data.trigger?.nativeElement.getBoundingClientRect(); + + matDialogConfig.position = { + left: `${rect.left - 80}px`, + top: `${rect.bottom + 0}px`, + }; + + this.topPosition = rect.bottom + this.dialog_actions_height; + matDialogConfig.width = this.data.filter === 'results' ? '240px' : '328px'; + + this.dialogRef.updateSize(matDialogConfig.width); + this.dialogRef.updatePosition(matDialogConfig.position); + } + private createFilterForm() { + this.filterForm = this.fb.group({ + deviceInfo: [''], + deviceFirmware: [''], + results: new FormArray(this.resultList.map(() => new FormControl(false))), + }); + } + + get results() { + return this.filterForm.controls['results'] as FormArray; + } + + selectedChange(date: Date): void { + if (!this.selectedRangeValue?.start || this.selectedRangeValue?.end) { + this.selectedRangeValue = new DateRange(date, null); + } else { + const start = this.selectedRangeValue.start; + const end = date; + if (end < start) { + this.selectedRangeValue = new DateRange(end, start); + } else { + this.selectedRangeValue = new DateRange(start, end); + } + } + + this.range.start = this.selectedRangeValue.start; + this.range.end = this.selectedRangeValue.end; + } + + confirm(): void { + const formData = this.filterForm.value; + const results = this.resultList + .filter((item, i) => { + return !!this.results.controls[i].value; + }) + .map(item => item.value); + + if ( + this.range.start && + (this.range.end === null || this.range.end === '') + ) { + this.range.end = new Date(); + } + + const filtersData = { + deviceInfo: formData.deviceInfo.trim(), + deviceFirmware: formData.deviceFirmware.trim(), + results, + dateRange: this.range, + }; + + this.dialogRef.close(filtersData); + } + + cancel(): void { + this.dialogRef.close(); + } + + startDateChanged(event: MatDatepickerInputEvent) { + const date = event.value; + if (date && date.getFullYear() > this.today.getFullYear()) { + date.setFullYear(this.today.getFullYear()); + this.range.start = date; + } + this.selectedRangeValue = new DateRange( + date, + this.selectedRangeValue?.end || null + ); + if (this.selectedRangeValue.start) { + this.calendar.activeDate = this.selectedRangeValue.start; + this.calendar.updateTodaysDate(); + } + } + + endDateChanged(event: MatDatepickerInputEvent) { + const date = event.value; + if (date && date.getFullYear() > this.today.getFullYear()) { + date.setFullYear(this.today.getFullYear()); + this.range.end = date; + } + this.selectedRangeValue = new DateRange( + this.selectedRangeValue?.start || null, + event.value + ); + if (this.selectedRangeValue?.end) { + this.calendar.activeDate = this.selectedRangeValue.end; + this.calendar.updateTodaysDate(); + } + } +} diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.html b/modules/ui/src/app/components/general-settings/general-settings.component.html new file mode 100644 index 000000000..3f951dcc9 --- /dev/null +++ b/modules/ui/src/app/components/general-settings/general-settings.component.html @@ -0,0 +1,163 @@ + +
    +

    Connection settings

    + +
    +
    +
    + + + Warning! Testrun requires two ports to operate correctly. + + +

    + Choose one of the options where you’ll connect IoT device for testing +

    + + Device connection port + + + +

    + {{ deviceControl.value.key }} +

    +

    + {{ deviceControl.value.value }} +

    +
    +
    + +

    {{ interface.key }}

    +

    {{ interface.value }}

    +
    +
    +
    + +

    + Choose one of the following ports on your Laptop or Desktop +

    + + Internet connection port + + + +

    + {{ internetControl.value.key }} +

    +

    + {{ internetControl.value.value }} +

    +
    +
    + +

    {{ defaultInternetOption.key }}

    +

    {{ defaultInternetOption.value }}

    +
    + +

    {{ interface.key }}

    +

    {{ interface.value }}

    +
    +
    +
    +
    +

    + If a port is missing from this list, you can + + Refresh + + the Connection settings +

    + + Both interfaces must have different values + + +
    + + + Warning! No ports is detected. + + +
    + diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts b/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts new file mode 100644 index 000000000..08f9309e5 --- /dev/null +++ b/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts @@ -0,0 +1,330 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GeneralSettingsComponent } from './general-settings.component'; +import { + SystemInterfaces, + TestRunService, +} from '../../services/test-run.service'; +import { of } from 'rxjs'; +import { SystemConfig } from '../../model/setting'; +import { MatRadioModule } from '@angular/material/radio'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIcon, MatIconModule } from '@angular/material/icon'; +import { MatIconTestingModule } from '@angular/material/icon/testing'; +import { Component, Input } from '@angular/core'; +import { LiveAnnouncer } from '@angular/cdk/a11y'; +import SpyObj = jasmine.SpyObj; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +const MOCK_SYSTEM_CONFIG_EMPTY: SystemConfig = { + network: { + device_intf: '', + internet_intf: '', + }, +}; + +const MOCK_SYSTEM_CONFIG_WITH_DATA: SystemConfig = { + network: { + device_intf: 'mockDeviceKey', + internet_intf: 'mockInternetKey', + }, +}; + +const MOCK_INTERFACES: SystemInterfaces = { + mockDeviceKey: 'mockDeviceValue', + mockInternetKey: 'mockInternetValue', +}; + +describe('GeneralSettingsComponent', () => { + let component: GeneralSettingsComponent; + let fixture: ComponentFixture; + let testRunServiceMock: SpyObj; + let mockLiveAnnouncer: SpyObj; + let compiled: HTMLElement; + + beforeEach(async () => { + testRunServiceMock = jasmine.createSpyObj([ + 'getSystemInterfaces', + 'getSystemConfig', + 'setSystemConfig', + 'createSystemConfig', + 'hasConnectionSetting$', + 'setHasConnectionSetting', + 'systemConfig$', + ]); + testRunServiceMock.getSystemInterfaces.and.returnValue(of({})); + testRunServiceMock.getSystemConfig.and.returnValue( + of(MOCK_SYSTEM_CONFIG_EMPTY) + ); + testRunServiceMock.createSystemConfig.and.returnValue( + of(MOCK_SYSTEM_CONFIG_WITH_DATA) + ); + testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_EMPTY); + testRunServiceMock.hasConnectionSetting$ = of(true); + + mockLiveAnnouncer = jasmine.createSpyObj(['announce']); + + await TestBed.configureTestingModule({ + declarations: [ + GeneralSettingsComponent, + MatIcon, + FakeSpinnerComponent, + FakeCalloutComponent, + ], + providers: [ + { provide: TestRunService, useValue: testRunServiceMock }, + { provide: LiveAnnouncer, useValue: mockLiveAnnouncer }, + ], + imports: [ + BrowserAnimationsModule, + MatButtonModule, + MatIconModule, + MatRadioModule, + ReactiveFormsModule, + MatIconTestingModule, + MatInputModule, + MatSelectModule, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(GeneralSettingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + compiled = fixture.nativeElement as HTMLElement; + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should set default values to form if systemConfig data', () => { + testRunServiceMock.getSystemConfig.and.returnValue( + of(MOCK_SYSTEM_CONFIG_WITH_DATA) + ); + component.interfaces = { mockDeviceKey: 'mockDeviceValue' }; + + const expectedDevice = { key: 'mockDeviceKey', value: 'mockDeviceValue' }; + + component.ngOnInit(); + + expect(component.deviceControl.value).toEqual(expectedDevice); + expect(component.internetControl.value).toEqual( + component.defaultInternetOption + ); + }); + + it('#reloadSetting should emit reloadInterfacesEvent', () => { + spyOn(component.reloadInterfacesEvent, 'emit'); + + component.reloadSetting(); + + expect(component.reloadInterfacesEvent.emit).toHaveBeenCalled(); + }); + + describe('#closeSetting', () => { + beforeEach(() => { + testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); + component.interfaces = MOCK_INTERFACES; + }); + + it('should emit closeSettingEvent', () => { + spyOn(component.closeSettingEvent, 'emit'); + + component.closeSetting('Message'); + + expect(component.closeSettingEvent.emit).toHaveBeenCalled(); + }); + + it('should call liveAnnouncer with provided message', () => { + const mockMessage = 'mock event'; + + component.closeSetting(mockMessage); + + expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( + `The ${mockMessage} finished. The connection setting panel is closed.` + ); + }); + + it('should call reset settingForm', () => { + spyOn(component.settingForm, 'reset'); + + component.closeSetting('Message'); + + expect(component.settingForm.reset).toHaveBeenCalled(); + }); + + it('should set value of settingForm on setSystemSetting', () => { + component.closeSetting('Message'); + + const expectedDevice = { key: 'mockDeviceKey', value: 'mockDeviceValue' }; + const expectedInternet = { + key: 'mockInternetKey', + value: 'mockInternetValue', + }; + + expect(component.settingForm.value.device_intf).toEqual(expectedDevice); + + expect(component.settingForm.value.internet_intf).toEqual( + expectedInternet + ); + }); + }); + + describe('#saveSetting', () => { + beforeEach(() => { + testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); + }); + + it('should have form error if form has the same value', () => { + const mockSameValue = 'sameValue'; + component.deviceControl.setValue(mockSameValue); + component.internetControl.setValue(mockSameValue); + + component.saveSetting(); + + expect(component.settingForm.invalid).toBeTrue(); + expect(component.isSubmitting).toBeTrue(); + expect(component.isFormError).toBeTrue(); + }); + + it('should call createSystemConfig when setting form valid', () => { + const expectedResult = { + network: { + device_intf: 'mockDeviceKey', + internet_intf: '', + }, + }; + + component.deviceControl.setValue({ + key: 'mockDeviceKey', + value: 'mockDeviceValue', + }); + component.internetControl.setValue(component.defaultInternetOption); + + component.saveSetting(); + + expect(component.settingForm.invalid).toBeFalse(); + expect(testRunServiceMock.createSystemConfig).toHaveBeenCalledWith( + expectedResult + ); + }); + }); + + describe('with no intefaces data', () => { + beforeEach(() => { + component.interfaces = {}; + fixture.detectChanges(); + }); + + it('should have callout component', () => { + const callout = compiled.querySelector('app-callout'); + + expect(callout).toBeTruthy(); + }); + + it('should have disabled "Save" button', () => { + const saveBtn = compiled.querySelector( + '.save-button' + ) as HTMLButtonElement; + + expect(saveBtn.disabled).toBeTrue(); + }); + }); + + describe('with interfaces length less than one', () => { + beforeEach(() => { + component.interfaces = {}; + fixture.detectChanges(); + }); + + it('should have callout component', () => { + const callout = compiled.querySelector('app-callout'); + + expect(callout).toBeTruthy(); + }); + + it('should have disabled "Save" button', () => { + component.deviceControl.setValue( + MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.device_intf + ); + component.internetControl.setValue( + MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.internet_intf + ); + fixture.detectChanges(); + + const saveBtn = compiled.querySelector( + '.save-button' + ) as HTMLButtonElement; + + expect(saveBtn.disabled).toBeTrue(); + }); + }); + + describe('with interfaces length more then one', () => { + beforeEach(() => { + component.interfaces = { + mockDeviceValue: 'mockDeviceValue', + mockInterfaceValue: 'mockInterfaceValue', + }; + testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); + testRunServiceMock.getSystemConfig.and.returnValue( + of(MOCK_SYSTEM_CONFIG_WITH_DATA) + ); + fixture.detectChanges(); + }); + + it('should not have callout component', () => { + const callout = compiled.querySelector('app-callout'); + + expect(callout).toBeFalsy(); + }); + + it('should not have disabled "Save" button', () => { + component.deviceControl.setValue( + MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.device_intf + ); + component.internetControl.setValue( + MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.internet_intf + ); + fixture.detectChanges(); + + const saveBtn = compiled.querySelector( + '.save-button' + ) as HTMLButtonElement; + + expect(saveBtn.disabled).toBeFalse(); + }); + }); +}); + +@Component({ + selector: 'app-spinner', + template: '
    ', +}) +class FakeSpinnerComponent {} + +@Component({ + selector: 'app-callout', + template: '
    ', +}) +class FakeCalloutComponent { + @Input() type = ''; +} diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.ts b/modules/ui/src/app/components/general-settings/general-settings.component.ts new file mode 100644 index 000000000..d9bbecea1 --- /dev/null +++ b/modules/ui/src/app/components/general-settings/general-settings.component.ts @@ -0,0 +1,234 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + Component, + EventEmitter, + Input, + OnDestroy, + OnInit, + Output, +} from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { Subject, takeUntil, tap } from 'rxjs'; +import { + SystemInterfaces, + TestRunService, +} from '../../services/test-run.service'; +import { OnlyDifferentValuesValidator } from './only-different-values.validator'; +import { CalloutType } from '../../model/callout-type'; +import { Observable } from 'rxjs/internal/Observable'; +import { shareReplay } from 'rxjs/internal/operators/shareReplay'; +import { LiveAnnouncer } from '@angular/cdk/a11y'; +import { EventType } from '../../model/event-type'; +import { SettingOption } from '../../model/setting'; + +@Component({ + selector: 'app-general-settings', + templateUrl: './general-settings.component.html', + styleUrls: ['./general-settings.component.scss'], +}) +export class GeneralSettingsComponent implements OnInit, OnDestroy { + private _interfaces: SystemInterfaces = {}; + @Input() + get interfaces(): SystemInterfaces { + return this._interfaces; + } + set interfaces(value: SystemInterfaces) { + this._interfaces = value; + this.setSystemSetting(); + } + @Output() closeSettingEvent = new EventEmitter(); + @Output() reloadInterfacesEvent = new EventEmitter(); + public readonly CalloutType = CalloutType; + public readonly EventType = EventType; + public settingForm!: FormGroup; + public isSubmitting = false; + public defaultInternetOption = { + key: '', + value: 'Not specified', + }; + hasConnectionSetting$!: Observable; + private destroy$: Subject = new Subject(); + + get deviceControl(): FormControl { + return this.settingForm?.get('device_intf') as FormControl; + } + + get internetControl(): FormControl { + return this.settingForm?.get('internet_intf') as FormControl; + } + + get isFormValues(): boolean { + return this.internetControl.value && this.deviceControl.value; + } + + get isFormError(): boolean { + return this.settingForm.hasError('hasSameValues'); + } + + get isLessThanOneInterface(): boolean { + return Object.keys(this.interfaces).length < 1; + } + + constructor( + private readonly testRunService: TestRunService, + private readonly fb: FormBuilder, + private liveAnnouncer: LiveAnnouncer, + private readonly onlyDifferentValuesValidator: OnlyDifferentValuesValidator + ) {} + + ngOnInit() { + this.hasConnectionSetting$ = this.testRunService.hasConnectionSetting$.pipe( + shareReplay({ refCount: true, bufferSize: 1 }) + ); + + this.createSettingForm(); + this.setSettingView(); + this.cleanFormErrorMessage(); + } + + reloadSetting(): void { + this.reloadInterfacesEvent.emit(); + } + + closeSetting(message: string): void { + this.resetForm(); + this.closeSettingEvent.emit(); + this.liveAnnouncer.announce( + `The ${message} finished. The connection setting panel is closed.` + ); + this.setSystemSetting(); + } + + saveSetting(): void { + if (this.settingForm.invalid) { + this.isSubmitting = true; + this.settingForm.markAllAsTouched(); + } else { + this.createSystemConfig(); + } + } + + private createSettingForm(): FormGroup { + return (this.settingForm = this.fb.group( + { + device_intf: [''], + internet_intf: [this.defaultInternetOption], + }, + { + validators: [this.onlyDifferentValuesValidator.onlyDifferentSetting()], + updateOn: 'change', + } + )); + } + + private setSettingView(): void { + this.testRunService + .getSystemConfig() + .pipe(takeUntil(this.destroy$)) + .subscribe(config => { + if (config?.network) { + const { device_intf, internet_intf } = config.network; + if (device_intf && internet_intf) { + this.testRunService.setHasConnectionSetting(true); + } else { + this.testRunService.setHasConnectionSetting(false); + } + this.setDefaultFormValues(device_intf, internet_intf); + } else { + this.testRunService.setHasConnectionSetting(false); + } + this.testRunService.setSystemConfig(config); + }); + } + + compare(c1: SettingOption, c2: SettingOption): boolean { + return c1 && c2 && c1.key === c2.key && c1.value === c2.value; + } + + private setDefaultFormValues( + device: string | undefined, + internet: string | undefined + ): void { + if (device && this.interfaces[device]) { + const deviceData = this.transformValueToObj(device); + this.deviceControl.setValue(deviceData); + } + if (internet && this.interfaces[internet]) { + const interneData = this.transformValueToObj(internet); + this.internetControl.setValue(interneData); + } else { + this.internetControl.setValue(this.defaultInternetOption); + } + } + + private transformValueToObj(value: string): SettingOption { + return { + key: value, + value: this.interfaces[value], + }; + } + + private cleanFormErrorMessage(): void { + this.settingForm.valueChanges + .pipe( + takeUntil(this.destroy$), + tap(() => (this.isSubmitting = false)) + ) + .subscribe(); + } + + private createSystemConfig(): void { + const { device_intf, internet_intf } = this.settingForm.value; + const data = { + network: { + device_intf: device_intf.key, + internet_intf: internet_intf.key, + }, + }; + + this.testRunService + .createSystemConfig(data) + .pipe(takeUntil(this.destroy$)) + .subscribe(() => { + this.closeSetting(EventType.Save); + this.testRunService.setSystemConfig(data); + this.testRunService.setHasConnectionSetting(true); + }); + } + + private setSystemSetting(): void { + this.testRunService.systemConfig$ + .pipe(takeUntil(this.destroy$)) + .subscribe(config => { + if (config?.network) { + const { device_intf, internet_intf } = config.network; + this.setDefaultFormValues(device_intf, internet_intf); + } else { + this.internetControl?.setValue(this.defaultInternetOption); + } + }); + } + + private resetForm(): void { + this.settingForm.reset(); + } + + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.unsubscribe(); + } +} diff --git a/modules/ui/src/app/components/spinner/spinner.component.spec.ts b/modules/ui/src/app/components/spinner/spinner.component.spec.ts index b9831986f..2576a3b2c 100644 --- a/modules/ui/src/app/components/spinner/spinner.component.spec.ts +++ b/modules/ui/src/app/components/spinner/spinner.component.spec.ts @@ -3,7 +3,10 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { SpinnerComponent } from './spinner.component'; import { LoaderService } from '../../services/loader.service'; import { of } from 'rxjs'; +<<<<<<< HEAD import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +======= +>>>>>>> main describe('SpinnerComponent', () => { let component: SpinnerComponent; @@ -14,7 +17,11 @@ describe('SpinnerComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ +<<<<<<< HEAD imports: [SpinnerComponent, BrowserAnimationsModule], +======= + imports: [SpinnerComponent], +>>>>>>> main providers: [{ provide: LoaderService, useValue: loaderServiceMock }], }); fixture = TestBed.createComponent(SpinnerComponent); diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html new file mode 100644 index 000000000..b319f9b97 --- /dev/null +++ b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html @@ -0,0 +1,46 @@ + +Software is outdated! +

    + You are currently using an outdated software ({{ + data.installed_version + }}). +
    + The actual version number is {{ data.latest_version }}. Please consider to update or continue at your own risk. +

    + + + + + Download + + diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss new file mode 100644 index 000000000..e340a6192 --- /dev/null +++ b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss @@ -0,0 +1,43 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@import '../../../../theming/colors'; + +:host { + display: grid; + overflow: hidden; + width: 570px; + padding: 24px 16px 8px 24px; + gap: 10px; +} + +.version-update-title { + color: #202124; + font-size: 18px; + line-height: 24px; +} + +.version-update-content { + font-family: Roboto, sans-serif; + font-size: 14px; + line-height: 20px; + letter-spacing: 0.2px; + color: $grey-800; +} + +.version-update-actions { + padding: 0; + min-height: 30px; +} diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts new file mode 100644 index 000000000..72fee490b --- /dev/null +++ b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts @@ -0,0 +1,107 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UpdateDialogComponent } from './update-dialog.component'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { NEW_VERSION } from '../../../mocks/version.mock'; +import { of } from 'rxjs'; + +describe('UpdateDialogComponent', () => { + let component: UpdateDialogComponent; + let fixture: ComponentFixture; + let compiled: HTMLElement; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [UpdateDialogComponent, MatDialogModule, MatButtonModule], + providers: [ + { + provide: MatDialogRef, + useValue: { + keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), + close: () => ({}), + }, + }, + { provide: MAT_DIALOG_DATA, useValue: {} }, + ], + }); + fixture = TestBed.createComponent(UpdateDialogComponent); + component = fixture.componentInstance; + component.data = NEW_VERSION; + fixture.detectChanges(); + compiled = fixture.nativeElement as HTMLElement; + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should has title', () => { + const title = compiled.querySelector( + '.version-update-title' + ) as HTMLElement; + + expect(title.innerHTML).toEqual('Software is outdated!'); + }); + + it('should has content', () => { + const content = compiled.querySelector( + '.version-update-content' + ) as HTMLElement; + + const innerContent = content.innerHTML.trim(); + expect(innerContent).toContain( + 'You are currently using an outdated software' + ); + expect(innerContent).toContain('v1'); + expect(innerContent).toContain('v2'); + expect(innerContent).toContain( + 'Please consider to update or continue at your own risk.' + ); + }); + + it('should close dialog on "cancel" click', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const closeButton = compiled.querySelector( + '.cancel-button' + ) as HTMLButtonElement; + + closeButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith(); + + closeSpy.calls.reset(); + }); + + it('should close dialog on download link click', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const confirmButton = compiled.querySelector( + '.download-link' + ) as HTMLAnchorElement; + + confirmButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith(); + + closeSpy.calls.reset(); + }); +}); diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts new file mode 100644 index 000000000..86ed5db43 --- /dev/null +++ b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts @@ -0,0 +1,44 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { Component, Inject } from '@angular/core'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { Version } from '../../../model/version'; +import { EscapableDialogComponent } from '../../escapable-dialog/escapable-dialog.component'; + +@Component({ + selector: 'app-update-dialog', + standalone: true, + imports: [MatDialogModule, MatButtonModule], + templateUrl: './update-dialog.component.html', + styleUrls: ['./update-dialog.component.scss'], +}) +export class UpdateDialogComponent extends EscapableDialogComponent { + constructor( + public override dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) public data: Version + ) { + super(dialogRef); + } + + cancel() { + this.dialogRef.close(); + } +} diff --git a/modules/ui/src/app/components/version/version.component.html b/modules/ui/src/app/components/version/version.component.html index d45ea69da..c730ca740 100644 --- a/modules/ui/src/app/components/version/version.component.html +++ b/modules/ui/src/app/components/version/version.component.html @@ -16,6 +16,7 @@ + + + + + + + diff --git a/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts b/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts new file mode 100644 index 000000000..47f8fa423 --- /dev/null +++ b/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts @@ -0,0 +1,472 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + ComponentFixture, + fakeAsync, + flush, + TestBed, +} from '@angular/core/testing'; + +import { DeviceFormComponent, FormAction } from './device-form.component'; +import { TestRunService } from '../../services/test-run.service'; +import { MatButtonModule } from '@angular/material/button'; +import { FormControl, ReactiveFormsModule } from '@angular/forms'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatInputModule } from '@angular/material/input'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef, +} from '@angular/material/dialog'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { Device } from '../../model/device'; +import { of, throwError } from 'rxjs'; +import { DeviceTestsComponent } from '../../components/device-tests/device-tests.component'; +import { SpinnerComponent } from '../../components/spinner/spinner.component'; +import { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask'; + +describe('DeviceFormComponent', () => { + let component: DeviceFormComponent; + let fixture: ComponentFixture; + let testRunServiceMock: jasmine.SpyObj; + let compiled: HTMLElement; + + beforeEach(() => { + testRunServiceMock = jasmine.createSpyObj([ + 'getTestModules', + 'hasDevice', + 'saveDevice', + 'editDevice', + 'setIsOpenAddDevice', + ]); + testRunServiceMock.getTestModules.and.returnValue([ + { + displayName: 'Connection', + name: 'connection', + enabled: true, + }, + { + displayName: 'Smart Ready', + name: 'udmi', + enabled: false, + }, + ]); + TestBed.configureTestingModule({ + declarations: [DeviceFormComponent], + providers: [ + { + provide: TestRunService, + useValue: testRunServiceMock, + }, + { + provide: MatDialogRef, + useValue: { + keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), + close: () => ({}), + }, + }, + { provide: MAT_DIALOG_DATA, useValue: {} }, + provideNgxMask(), + ], + imports: [ + MatButtonModule, + ReactiveFormsModule, + MatCheckboxModule, + MatInputModule, + MatDialogModule, + BrowserAnimationsModule, + DeviceTestsComponent, + SpinnerComponent, + NgxMaskDirective, + NgxMaskPipe, + ], + }); + fixture = TestBed.createComponent(DeviceFormComponent); + component = fixture.componentInstance; + compiled = fixture.nativeElement as HTMLElement; + component.data = {}; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should contain device form', () => { + const form = compiled.querySelector('.device-form'); + + expect(form).toBeTruthy(); + }); + + it('should close dialog on "cancel" click', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const closeButton = compiled.querySelector( + '.close-button' + ) as HTMLButtonElement; + + closeButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith(); + + closeSpy.calls.reset(); + }); + + it('should call setIsOpenAddDevice with false on "cancel" click', () => { + const closeButton = compiled.querySelector( + '.close-button' + ) as HTMLButtonElement; + + closeButton?.click(); + + expect(testRunServiceMock.setIsOpenAddDevice).toHaveBeenCalledWith(false); + }); + + it('should not save data when fields are empty', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const saveButton = compiled.querySelector( + '.save-button' + ) as HTMLButtonElement; + const model: HTMLInputElement = compiled.querySelector( + '.device-form-model' + ) as HTMLInputElement; + const manufacturer: HTMLInputElement = compiled.querySelector( + '.device-form-manufacturer' + ) as HTMLInputElement; + const macAddress: HTMLInputElement = compiled.querySelector( + '.device-form-mac-address' + ) as HTMLInputElement; + + ['', ' '].forEach(value => { + model.value = value; + model.dispatchEvent(new Event('input')); + manufacturer.value = value; + manufacturer.dispatchEvent(new Event('input')); + macAddress.value = value; + macAddress.dispatchEvent(new Event('input')); + saveButton?.click(); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + const requiredErrors = compiled.querySelectorAll('mat-error'); + expect(requiredErrors?.length).toEqual(3); + + requiredErrors.forEach(error => { + expect(error?.innerHTML).toContain('required'); + }); + }); + + expect(closeSpy).not.toHaveBeenCalled(); + + closeSpy.calls.reset(); + }); + }); + + it('should not save data if no test selected', fakeAsync(() => { + const closeSpy = spyOn(component.dialogRef, 'close'); + component.model.setValue('model'); + component.manufacturer.setValue('manufacturer'); + component.mac_addr.setValue('07:07:07:07:07:07'); + component.test_modules.setValue([false, false]); + testRunServiceMock.hasDevice.and.returnValue(true); + + component.saveDevice(); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + const error = compiled.querySelector('mat-error'); + expect(error?.innerHTML).toContain( + 'At least one test has to be selected to save a Device.' + ); + }); + + expect(closeSpy).not.toHaveBeenCalled(); + + closeSpy.calls.reset(); + flush(); + })); + + it('should not save data when server response with error', fakeAsync(() => { + const closeSpy = spyOn(component.dialogRef, 'close'); + component.model.setValue('model'); + component.manufacturer.setValue('manufacturer'); + component.mac_addr.setValue('07:07:07:07:07:07'); + testRunServiceMock.hasDevice.and.returnValue(false); + testRunServiceMock.saveDevice.and.returnValue( + throwError({ error: 'some error' }) + ); + + component.saveDevice(); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + const error = compiled.querySelector('mat-error'); + expect(error?.innerHTML).toContain('some error'); + }); + expect(closeSpy).not.toHaveBeenCalled(); + + closeSpy.calls.reset(); + flush(); + })); + + it('should save data when form is valid', () => { + const device: Device = { + manufacturer: 'manufacturer', + model: 'model', + mac_addr: '07:07:07:07:07:07', + test_modules: { + connection: { + enabled: true, + }, + udmi: { + enabled: false, + }, + }, + }; + const closeSpy = spyOn(component.dialogRef, 'close'); + component.model.setValue('model'); + component.manufacturer.setValue('manufacturer'); + component.mac_addr.setValue('07:07:07:07:07:07'); + testRunServiceMock.hasDevice.and.returnValue(false); + testRunServiceMock.saveDevice.and.returnValue(of(true)); + + component.saveDevice(); + + expect(closeSpy).toHaveBeenCalledTimes(1); + expect(closeSpy).toHaveBeenCalledWith({ + action: FormAction.Save, + device, + }); + + closeSpy.calls.reset(); + }); + + describe('test modules', () => { + it('should be present', () => { + const test = compiled.querySelectorAll('mat-checkbox'); + + expect(test.length).toEqual(2); + }); + + it('should be enabled', () => { + const tests = compiled.querySelectorAll('.device-form-test-modules p'); + + expect(tests[0].classList.contains('disabled')).toEqual(false); + }); + }); + + describe('device model', () => { + it('should not contain errors when input is correct', () => { + const model: HTMLInputElement = compiled.querySelector( + '.device-form-model' + ) as HTMLInputElement; + ['model', 'Gebäude', 'jardín'].forEach(value => { + model.value = value; + model.dispatchEvent(new Event('input')); + + const errors = component.model.errors; + const uiValue = model.value; + const formValue = component.model.value; + + expect(uiValue).toEqual(formValue); + expect(errors).toBeNull(); + }); + }); + }); + + describe('device manufacturer', () => { + it('should not contain errors when input is correct', () => { + const manufacturer: HTMLInputElement = compiled.querySelector( + '.device-form-manufacturer' + ) as HTMLInputElement; + ['manufacturer', 'Gebäude', 'jardín'].forEach(value => { + manufacturer.value = value; + manufacturer.dispatchEvent(new Event('input')); + + const errors = component.manufacturer.errors; + const uiValue = manufacturer.value; + const formValue = component.manufacturer.value; + + expect(uiValue).toEqual(formValue); + expect(errors).toBeNull(); + }); + }); + }); + + describe('mac address', () => { + it('should not be disabled', () => { + expect(component.mac_addr.disabled).toBeFalse(); + }); + + it('should not contain errors when input is correct', () => { + const macAddress: HTMLInputElement = compiled.querySelector( + '.device-form-mac-address' + ) as HTMLInputElement; + ['07:07:07:07:07:07', ' 07:07:07:07:07:07 '].forEach(value => { + macAddress.value = value; + macAddress.dispatchEvent(new Event('input')); + + const errors = component.mac_addr.errors; + const formValue = component.mac_addr.value; + + expect(macAddress.value).toEqual(formValue); + expect(errors).toBeNull(); + }); + }); + + it('should have "pattern" error when field does not satisfy pattern', () => { + ['value', 'q01e423573c4'].forEach(value => { + const macAddress: HTMLInputElement = compiled.querySelector( + '.device-form-mac-address' + ) as HTMLInputElement; + macAddress.value = value; + macAddress.dispatchEvent(new Event('input')); + component.mac_addr.markAsTouched(); + fixture.detectChanges(); + + const macAddressError = compiled.querySelector('mat-error')?.innerHTML; + const error = component.mac_addr.hasError('pattern'); + + expect(error).toBeTruthy(); + expect(macAddressError).toContain( + 'Please, check. A MAC address consists of 12 hexadecimal digits (0 to 9, a to f, or A to F).' + ); + }); + }); + + it('should have "has_same_mac_address" error when MAC address is already used', () => { + testRunServiceMock.hasDevice.and.returnValue(true); + const macAddress: HTMLInputElement = compiled.querySelector( + '.device-form-mac-address' + ) as HTMLInputElement; + macAddress.value = '07:07:07:07:07:07'; + macAddress.dispatchEvent(new Event('input')); + component.mac_addr.markAsTouched(); + fixture.detectChanges(); + + const macAddressError = compiled.querySelector('mat-error')?.innerHTML; + const error = component.mac_addr.hasError('has_same_mac_address'); + + expect(error).toBeTruthy(); + expect(macAddressError).toContain( + 'This MAC address is already used for another device in the repository.' + ); + }); + }); + + it('should have hidden delete device button', () => { + const deleteButton = compiled.querySelector( + '.delete-button' + ) as HTMLButtonElement; + + expect(deleteButton.classList.contains('hidden')).toBeTrue(); + }); + + describe('when device is present', () => { + beforeEach(() => { + component.data = { + device: { + manufacturer: 'Delta', + model: 'O3-DIN-CPU', + mac_addr: '00:1e:42:35:73:c4', + test_modules: { + udmi: { + enabled: true, + }, + }, + }, + }; + component.ngOnInit(); + fixture.detectChanges(); + }); + + it('should fill form values with device values', () => { + const model: HTMLInputElement = compiled.querySelector( + '.device-form-model' + ) as HTMLInputElement; + const manufacturer: HTMLInputElement = compiled.querySelector( + '.device-form-manufacturer' + ) as HTMLInputElement; + + expect(model.value).toEqual('O3-DIN-CPU'); + expect(manufacturer.value).toEqual('Delta'); + }); + + it('should save data even mac address already exist', fakeAsync(() => { + const closeSpy = spyOn(component.dialogRef, 'close'); + testRunServiceMock.saveDevice.and.returnValue(of(true)); + testRunServiceMock.editDevice.and.returnValue(of(true)); + testRunServiceMock.hasDevice.and.returnValue(true); + // fill the test controls + component.test_modules.push(new FormControl(false)); + component.test_modules.push(new FormControl(true)); + component.saveDevice(); + fixture.detectChanges(); + + fixture.whenStable().then(() => { + const error = compiled.querySelector('mat-error'); + expect(error).toBeFalse(); + }); + + expect(closeSpy).toHaveBeenCalledWith({ + action: FormAction.Save, + device: { + manufacturer: 'Delta', + model: 'O3-DIN-CPU', + mac_addr: '00:1e:42:35:73:c4', + test_modules: { + connection: { + enabled: false, + }, + udmi: { + enabled: true, + }, + }, + }, + }); + + closeSpy.calls.reset(); + flush(); + })); + + it('should have delete device button', () => { + const deleteButton = compiled.querySelector( + '.delete-button' + ) as HTMLButtonElement; + + expect(deleteButton.classList.contains('hidden')).toBeFalse(); + expect(deleteButton).toBeTruthy(); + }); + + it('should close dialog with delete action on "delete" click', () => { + const closeSpy = spyOn(component.dialogRef, 'close'); + const closeButton = compiled.querySelector( + '.delete-button' + ) as HTMLButtonElement; + + closeButton?.click(); + + expect(closeSpy).toHaveBeenCalledWith({ action: FormAction.Delete }); + + closeSpy.calls.reset(); + }); + }); + + it('should has loader element', () => { + const spinner = compiled.querySelector('app-spinner'); + + expect(spinner).toBeTruthy(); + }); +}); diff --git a/modules/ui/src/app/device-repository/device-repository.component.html b/modules/ui/src/app/device-repository/device-repository.component.html new file mode 100644 index 000000000..8ce001edb --- /dev/null +++ b/modules/ui/src/app/device-repository/device-repository.component.html @@ -0,0 +1,47 @@ + + + +

    Devices

    + +
    +
    + + + +
    +
    + + +
    + +
    +
    + + + + diff --git a/modules/ui/src/app/device-repository/device-repository.component.spec.ts b/modules/ui/src/app/device-repository/device-repository.component.spec.ts new file mode 100644 index 000000000..3bcc131f3 --- /dev/null +++ b/modules/ui/src/app/device-repository/device-repository.component.spec.ts @@ -0,0 +1,343 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; +import { of } from 'rxjs'; +import { Device } from '../model/device'; +import { TestRunService } from '../services/test-run.service'; + +import { DeviceRepositoryComponent } from './device-repository.component'; +import { DeviceRepositoryModule } from './device-repository.module'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { + DeviceFormComponent, + FormAction, +} from './device-form/device-form.component'; +import { MatDialogRef } from '@angular/material/dialog'; +import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { device } from '../mocks/device.mock'; +import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; +import SpyObj = jasmine.SpyObj; +import { StateService } from '../services/state.service'; + +describe('DeviceRepositoryComponent', () => { + let component: DeviceRepositoryComponent; + let fixture: ComponentFixture; + let compiled: HTMLElement; + let mockService: SpyObj; + + const stateServiceMock: jasmine.SpyObj = jasmine.createSpyObj( + 'stateServiceMock', + ['focusFirstElementInMain'] + ); + + beforeEach(() => { + mockService = jasmine.createSpyObj([ + 'getDevices', + 'fetchDevices', + 'setDevices', + 'getTestModules', + 'addDevice', + 'updateDevice', + 'deleteDevice', + 'removeDevice', + 'isOpenAddDevice$', + ]); + mockService.isOpenAddDevice$ = new BehaviorSubject(false); + mockService.getDevices.and.returnValue( + new BehaviorSubject([]) + ); + mockService.getTestModules.and.returnValue([ + { + displayName: 'Connection', + name: 'connection', + enabled: true, + }, + { + displayName: 'Smart Ready', + name: 'udmi', + enabled: false, + }, + ]); + TestBed.configureTestingModule({ + imports: [DeviceRepositoryModule, BrowserAnimationsModule], + providers: [ + { provide: TestRunService, useValue: mockService }, + { provide: StateService, useValue: stateServiceMock }, + ], + declarations: [DeviceRepositoryComponent], + }); + fixture = TestBed.createComponent(DeviceRepositoryComponent); + component = fixture.componentInstance; + compiled = fixture.nativeElement as HTMLElement; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('with no devices devices', () => { + beforeEach(() => { + mockService.getDevices = jasmine.createSpy().and.returnValue(of([])); + mockService.isOpenAddDevice$ = new BehaviorSubject(true); + component.ngOnInit(); + }); + + it('should show only add device button if no device added', () => { + fixture.detectChanges(); + const button = compiled.querySelector( + '.device-repository-content-empty button' + ); + + expect(button).toBeTruthy(); + }); + + it('should open the modal if isOpenAddDevice$ as true', () => { + const openDialogSpy = spyOn(component, 'openDialog'); + + component.ngOnInit(); + + expect(openDialogSpy).toHaveBeenCalled(); + }); + }); + + describe('with devices', () => { + beforeEach(() => { + mockService.getDevices.and.returnValue( + new BehaviorSubject([device, device, device]) + ); + component.ngOnInit(); + }); + + it('should show device item', fakeAsync(() => { + fixture.detectChanges(); + const item = compiled.querySelectorAll('app-device-item'); + + expect(item.length).toEqual(3); + })); + + it('should add device-item-selected class for selected device', fakeAsync(() => { + component.selectedDevice = device; + fixture.detectChanges(); + const item = compiled.querySelector('app-device-item'); + + expect(item?.classList.contains('device-item-selected')).toBeTrue(); + })); + + describe('#openDialog', () => { + it('should open device dialog on item click', () => { + const openSpy = spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + fixture.detectChanges(); + + component.openDialog(device); + + expect(openSpy).toHaveBeenCalled(); + expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { + ariaLabel: 'Edit device', + data: { + device: device, + title: 'Edit device', + }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'device-form-dialog', + }); + + openSpy.calls.reset(); + }); + + it('should open device dialog with delete-button focus element', () => { + const openSpy = spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + fixture.detectChanges(); + + component.openDialog(device, true); + + expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { + ariaLabel: 'Edit device', + data: { + device: device, + title: 'Edit device', + }, + autoFocus: '.delete-button', + hasBackdrop: true, + disableClose: true, + panelClass: 'device-form-dialog', + }); + + openSpy.calls.reset(); + }); + }); + }); + + it('should open device dialog on "add device button" click', () => { + const openSpy = spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + fixture.detectChanges(); + const button = compiled.querySelector( + '.device-repository-content-empty button' + ) as HTMLButtonElement; + button?.click(); + + expect(button).toBeTruthy(); + expect(openSpy).toHaveBeenCalled(); + expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { + ariaLabel: 'Create device', + data: { device: null, title: 'Create device' }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'device-form-dialog', + }); + + openSpy.calls.reset(); + }); + + it('should not add device if dialog closes with null', () => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(null), + } as MatDialogRef); + mockService.addDevice.and.callThrough(); + + component.openDialog(); + + expect(mockService.addDevice).not.toHaveBeenCalled(); + }); + + it('should add device if dialog closes with object and save action', () => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => + of({ + device, + action: FormAction.Save, + }), + } as MatDialogRef); + mockService.addDevice.and.callThrough(); + + component.openDialog(); + + expect(mockService.addDevice).toHaveBeenCalledWith(device); + }); + + it('should update device if dialog closes with object, action save and selected device', () => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => + of({ + device, + action: FormAction.Save, + }), + } as MatDialogRef); + mockService.updateDevice.and.callThrough(); + + component.openDialog(device); + + expect(mockService.updateDevice).toHaveBeenCalledWith(device, device); + }); + + it('should delete device if dialog closes with object, action delete and selected device', () => { + const openDeleteDialogSpy = spyOn(component, 'openDeleteDialog'); + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => + of({ + device, + action: FormAction.Delete, + }), + } as MatDialogRef); + + component.openDialog(device); + + expect(openDeleteDialogSpy).toHaveBeenCalledWith(device); + }); + + describe('delete device dialog', () => { + beforeEach(() => { + mockService.getDevices.and.returnValue( + new BehaviorSubject([device, device, device]) + ); + component.ngOnInit(); + }); + + it('should show device item', fakeAsync(() => { + fixture.detectChanges(); + const item = compiled.querySelectorAll('app-device-item'); + + expect(item.length).toEqual(3); + })); + + it('should delete device when dialog return true', () => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + mockService.deleteDevice.and.returnValue(of(true)); + mockService.removeDevice.and.callThrough(); + + component.openDeleteDialog(device); + + expect(mockService.deleteDevice).toHaveBeenCalledWith(device); + expect(mockService.removeDevice).toHaveBeenCalledWith(device); + }); + + it('should focus next device when dialog return true and next device is exist', fakeAsync(() => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + component.selectedDevice = device; + mockService.deleteDevice.and.returnValue(of(true)); + mockService.removeDevice.and.callThrough(); + fixture.detectChanges(); + const deviceButton = compiled.querySelector( + '.device-item-selected + app-device-item button' + ) as HTMLButtonElement; + const buttonFocusSpy = spyOn(deviceButton, 'focus'); + + component.openDeleteDialog(device); + + expect(buttonFocusSpy).toHaveBeenCalled(); + })); + + it('should focus add button when dialog return true and next device is not exist', fakeAsync(() => { + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + component.selectedDevice = null; + mockService.deleteDevice.and.returnValue(of(true)); + mockService.removeDevice.and.callThrough(); + fixture.detectChanges(); + + component.openDeleteDialog(device); + + expect( + document.activeElement?.classList.contains('device-add-button') + ).toBeTrue(); + })); + + it('should open device dialog when dialog return null', () => { + const openDeleteDialogSpy = spyOn(component, 'openDialog'); + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(null), + } as MatDialogRef); + + component.openDeleteDialog(device); + + expect(openDeleteDialogSpy).toHaveBeenCalledWith(device, true); + }); + }); +}); diff --git a/modules/ui/src/app/device-repository/device-repository.component.ts b/modules/ui/src/app/device-repository/device-repository.component.ts new file mode 100644 index 000000000..ef569b55d --- /dev/null +++ b/modules/ui/src/app/device-repository/device-repository.component.ts @@ -0,0 +1,167 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + Component, + ElementRef, + OnDestroy, + OnInit, + ChangeDetectorRef, +} from '@angular/core'; +import { MatDialog } from '@angular/material/dialog'; +import { Observable } from 'rxjs/internal/Observable'; +import { Device } from '../model/device'; +import { TestRunService } from '../services/test-run.service'; +import { + DeviceFormComponent, + FormAction, + FormResponse, +} from './device-form/device-form.component'; +import { Subject, takeUntil } from 'rxjs'; +import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; +import { combineLatest } from 'rxjs/internal/observable/combineLatest'; +import { StateService } from '../services/state.service'; +import { timer } from 'rxjs/internal/observable/timer'; + +@Component({ + selector: 'app-device-repository', + templateUrl: './device-repository.component.html', + styleUrls: ['./device-repository.component.scss'], +}) +export class DeviceRepositoryComponent implements OnInit, OnDestroy { + devices$!: Observable; + private destroy$: Subject = new Subject(); + selectedDevice: Device | undefined | null; + + constructor( + private testRunService: TestRunService, + private readonly state: StateService, + public dialog: MatDialog, + private element: ElementRef, + private readonly changeDetectorRef: ChangeDetectorRef + ) {} + + ngOnInit(): void { + this.devices$ = this.testRunService.getDevices(); + + combineLatest([this.devices$, this.testRunService.isOpenAddDevice$]) + .pipe(takeUntil(this.destroy$)) + .subscribe(([devices, isOpenAddDevice]) => { + if (!devices?.length && isOpenAddDevice) { + this.openDialog(); + } + }); + } + + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.unsubscribe(); + } + + openDialog(selectedDevice?: Device, focusDeleteButton = false): void { + const dialogRef = this.dialog.open(DeviceFormComponent, { + ariaLabel: selectedDevice ? 'Edit device' : 'Create device', + data: { + device: selectedDevice || null, + title: selectedDevice ? 'Edit device' : 'Create device', + }, + autoFocus: focusDeleteButton ? '.delete-button' : true, + hasBackdrop: true, + disableClose: true, + panelClass: 'device-form-dialog', + }); + + dialogRef + ?.afterClosed() + .pipe(takeUntil(this.destroy$)) + .subscribe((response: FormResponse) => { + this.selectedDevice = null; + if (!response) return; + + if ( + response.action === FormAction.Save && + response.device && + !selectedDevice + ) { + this.testRunService.addDevice(response.device); + timer(10) + .pipe(takeUntil(this.destroy$)) + .subscribe(() => { + this.state.focusFirstElementInMain(); + }); + } + if ( + response.action === FormAction.Save && + response.device && + selectedDevice + ) { + this.testRunService.updateDevice(selectedDevice, response.device); + } + if (response.action === FormAction.Delete && selectedDevice) { + this.selectedDevice = selectedDevice; + this.openDeleteDialog(selectedDevice); + } + }); + } + + openDeleteDialog(device: Device) { + const dialogRef = this.dialog.open(DeleteFormComponent, { + ariaLabel: 'Delete device', + data: { + title: 'Delete device', + content: `You are about to delete ${ + device.manufacturer + ' ' + device.model + }. Are you sure?`, + device: device, + }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'delete-form-dialog', + }); + + dialogRef + ?.afterClosed() + .pipe(takeUntil(this.destroy$)) + .subscribe(deleteDevice => { + if (deleteDevice) { + this.testRunService.deleteDevice(device).subscribe(() => { + this.testRunService.removeDevice(device); + this.focusNextButton(); + this.selectedDevice = null; + }); + } else { + this.openDialog(device, true); + this.selectedDevice = null; + } + }); + } + + private focusNextButton() { + // Try to focus next device item, if exitst + const next = this.element.nativeElement.querySelector( + '.device-item-selected + app-device-item button' + ); + if (next) { + next.focus(); + } else { + this.changeDetectorRef.detectChanges(); + // If next device item doest not exist, add device button should be focused + const addButton = + this.element.nativeElement.querySelector('.device-add-button'); + addButton?.focus(); + } + } +} diff --git a/modules/ui/src/app/device-repository/device-repository.module.ts b/modules/ui/src/app/device-repository/device-repository.module.ts new file mode 100644 index 000000000..bc7935875 --- /dev/null +++ b/modules/ui/src/app/device-repository/device-repository.module.ts @@ -0,0 +1,60 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ScrollingModule } from '@angular/cdk/scrolling'; +import { CommonModule } from '@angular/common'; +import { HttpClientModule } from '@angular/common/http'; +import { NgModule } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatIconModule } from '@angular/material/icon'; +import { MatInputModule } from '@angular/material/input'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { DeviceFormComponent } from './device-form/device-form.component'; + +import { DeviceRepositoryRoutingModule } from './device-repository-routing.module'; +import { DeviceRepositoryComponent } from './device-repository.component'; +import { DeviceItemComponent } from '../components/device-item/device-item.component'; +import { DeviceTestsComponent } from '../components/device-tests/device-tests.component'; +import { SpinnerComponent } from '../components/spinner/spinner.component'; +import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; +import { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask'; + +@NgModule({ + declarations: [DeviceRepositoryComponent, DeviceFormComponent], + imports: [ + CommonModule, + DeviceRepositoryRoutingModule, + MatToolbarModule, + MatButtonModule, + MatIconModule, + ScrollingModule, + HttpClientModule, + MatDialogModule, + ReactiveFormsModule, + MatCheckboxModule, + MatInputModule, + DeviceItemComponent, + DeviceTestsComponent, + SpinnerComponent, + DeleteFormComponent, + NgxMaskDirective, + NgxMaskPipe, + ], + providers: [provideNgxMask()], +}) +export class DeviceRepositoryModule {} diff --git a/modules/ui/src/app/history/history.component.html b/modules/ui/src/app/history/history.component.html new file mode 100644 index 000000000..f2c992c82 --- /dev/null +++ b/modules/ui/src/app/history/history.component.html @@ -0,0 +1,230 @@ + + + + +

    Reports

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Started + + + + {{ getFormattedDateString(data.started) }} + + Duration + + {{ data.duration }} + + Device + + + {{ data.deviceInfo }} + Firmware + + + {{ data.deviceFirmware }} + Result + + + + + {{ data.status }} + + Actions + + + file_download + + + + + delete + + + +
    + +
    +
    +
    + +
    +
    +
    +
    +
    + +
    + +
    +
    + + + + + + +
    +
    + {{ header }} + {{ message }} +
    +
    diff --git a/modules/ui/src/app/history/history.component.spec.ts b/modules/ui/src/app/history/history.component.spec.ts new file mode 100644 index 000000000..87ee2ab21 --- /dev/null +++ b/modules/ui/src/app/history/history.component.spec.ts @@ -0,0 +1,379 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; + +import { HistoryComponent } from './history.component'; +import { TestRunService } from '../services/test-run.service'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { HistoryModule } from './history.module'; +import { of } from 'rxjs'; +import { TestrunStatus } from '../model/testrun-status'; +import { LiveAnnouncer } from '@angular/cdk/a11y'; +import { MatDialogRef } from '@angular/material/dialog'; +import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; +import { ElementRef } from '@angular/core'; +import { FilterName, ReportFilters } from '../model/filters'; +import SpyObj = jasmine.SpyObj; +import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { MatSort } from '@angular/material/sort'; + +const history = [ + { + status: 'compliant', + device: { + manufacturer: 'Delta', + model: '03-DIN-SRC', + mac_addr: '01:02:03:04:05:06', + firmware: '1.2.2', + }, + report: 'https://api.testrun.io/report.pdf', + started: '2023-06-23T10:11:00.123Z', + finished: '2023-06-23T10:17:10.123Z', + }, + { + status: 'compliant', + device: { + manufacturer: 'Delta', + model: '03-DIN-SRC', + mac_addr: '01:02:03:04:05:07', + firmware: '1.2.3', + }, + report: 'https://api.testrun.io/report.pdf', + started: '2023-07-23T10:11:00.123Z', + finished: '2023-07-23T10:17:10.123Z', + }, +] as TestrunStatus[]; + +describe('HistoryComponent', () => { + let component: HistoryComponent; + let fixture: ComponentFixture; + let compiled: HTMLElement; + let mockService: SpyObj; + let mockLiveAnnouncer: SpyObj; + + beforeEach(() => { + mockService = jasmine.createSpyObj([ + 'fetchHistory', + 'getHistory', + 'getResultClass', + ]); + mockLiveAnnouncer = jasmine.createSpyObj(['announce']); + + TestBed.configureTestingModule({ + imports: [HistoryModule, BrowserAnimationsModule], + providers: [ + { provide: TestRunService, useValue: mockService }, + { provide: LiveAnnouncer, useValue: mockLiveAnnouncer }, + ], + declarations: [HistoryComponent], + }); + fixture = TestBed.createComponent(HistoryComponent); + component = fixture.componentInstance; + compiled = fixture.nativeElement as HTMLElement; + }); + + describe('Class tests', () => { + beforeEach(() => { + mockService.getHistory.and.returnValue( + new BehaviorSubject(history) + ); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('ngOnInit', () => { + it('should set dataSource data', () => { + component.ngOnInit(); + + expect(component.dataSource.data).toBeTruthy(); + }); + + it('should update sort', fakeAsync(() => { + const sort = new MatSort(); + component.sort = sort; + component.ngOnInit(); + + expect(component.dataSource.sort).toBeTruthy(); + })); + + it('should update filter', fakeAsync(() => { + component.ngOnInit(); + + expect(component.dataSource.filter).toBeTruthy(); + })); + }); + + it('#sortData should call liveAnnouncer with sorted direction message', () => { + component.sortData({ active: '', direction: 'desc' }); + + expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( + 'Sorted descending' + ); + }); + + it('#sortData should call liveAnnouncer with "Sorting cleared" message', () => { + component.sortData({ active: '', direction: '' }); + + expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( + 'Sorting cleared' + ); + }); + + it('#getFormattedDateString should return string in the format "d MMM y H:mm"', () => { + const expectedResult = '23 Jun 2023 10:11'; + + const result = component.getFormattedDateString(history[0].started); + + expect(result).toEqual(expectedResult); + }); + + it('#getFormattedDateString should return empty string if no date', () => { + const expectedResult = ''; + + const result = component.getFormattedDateString(null); + + expect(result).toEqual(expectedResult); + }); + + it('#getDuration should return dates duration in minutes and seconds', () => { + const expectedResult = '06m 10s'; + + const result = component.getDuration( + history[0].started, + history[0].finished + ); + + expect(result).toEqual(expectedResult); + }); + + it('#getDuration should return empty string if any of dates are not provided', () => { + const expectedResult = ''; + + const result = component.getDuration(history[0].started, null); + + expect(result).toEqual(expectedResult); + }); + + it('should open filter dialog with data', () => { + const event = { + currentTarget: null, + stopPropagation: () => undefined, + } as Event; + const openSpy = spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(true), + } as MatDialogRef); + fixture.detectChanges(); + + component.openFilter(event, ''); + + expect(openSpy).toHaveBeenCalled(); + expect(openSpy).toHaveBeenCalledWith(FilterDialogComponent, { + ariaLabel: 'Filters', + data: { + filter: '', + trigger: new ElementRef(event.currentTarget), + }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'filter-form-dialog', + }); + + openSpy.calls.reset(); + }); + + it('should update filteredValues when filter dialog closes with data', () => { + const event = { + currentTarget: null, + stopPropagation: () => undefined, + } as Event; + + const mockFilteredData = { + results: ['compliant'], + deviceInfo: 'mockDevice', + deviceFirmware: 'mockFirmware', + dateRange: { + start: 'Wed Jun 21 2023 00:00:00', + end: 'Thu Jun 22 2023 00:00:00', + }, + }; + + spyOn(component.dialog, 'open').and.returnValue({ + afterClosed: () => of(mockFilteredData), + } as MatDialogRef); + fixture.detectChanges(); + + component.openFilter(event, FilterName.Started); + component.openFilter(event, FilterName.Results); + component.openFilter(event, FilterName.DeviceFirmware); + component.openFilter(event, FilterName.DeviceInfo); + expect(component.filteredValues as ReportFilters).toEqual( + mockFilteredData + ); + }); + + it('should return true if filters has no values', () => { + component.filteredValues = { + deviceInfo: '', + deviceFirmware: '', + results: [], + dateRange: { start: '', end: '' }, + }; + + expect(component.isFiltersEmpty()).toBeTrue(); + }); + + describe('#focusNextButton', () => { + beforeEach(() => { + fixture.detectChanges(); + }); + + it('should focus next active element if exist', () => { + const row = window.document.querySelector('tbody tr') as HTMLElement; + row.classList.add('report-selected'); + const nextButton = window.document.querySelector( + '.report-selected + tr a' + ) as HTMLButtonElement; + const buttonFocusSpy = spyOn(nextButton, 'focus'); + + component.focusNextButton(); + + expect(buttonFocusSpy).toHaveBeenCalled(); + }); + + it('should focus navigation button if next active element does not exist', () => { + const button = document.createElement('BUTTON'); + button.classList.add('app-sidebar-button-reports'); + document.querySelector('body')?.appendChild(button); + const buttonFocusSpy = spyOn(button, 'focus'); + + component.focusNextButton(); + + expect(buttonFocusSpy).toHaveBeenCalled(); + }); + }); + }); + + describe('DOM tests', () => { + describe('data is not fetched', () => { + beforeEach(() => { + mockService.getHistory.and.returnValue( + new BehaviorSubject(null) + ); + component.ngOnInit(); + }); + + it('should have empty page if data not fetched yet', () => { + const empty = compiled.querySelector('.results-content-empty'); + const table = compiled.querySelector('table'); + + expect(table).toBeNull(); + expect(empty).toBeNull(); + }); + }); + + describe('with no devices', () => { + beforeEach(() => { + mockService.getHistory.and.returnValue( + new BehaviorSubject([]) + ); + component.ngOnInit(); + fixture.detectChanges(); + }); + + it('should have empty message', () => { + const empty = compiled.querySelector('.results-content-empty'); + expect(empty).toBeTruthy(); + }); + }); + + describe('with devices', () => { + beforeEach(() => { + mockService.getHistory.and.returnValue( + new BehaviorSubject(history) + ); + mockService.getResultClass.and.returnValue({ + green: false, + red: true, + blue: false, + grey: false, + }); + component.ngOnInit(); + fixture.detectChanges(); + }); + + it('should have data table', () => { + const table = compiled.querySelector('table'); + + expect(table).toBeTruthy(); + }); + + it('should have addition valid class on table cell "Status"', () => { + const statusResultEl = compiled.querySelector( + '.table-cell-result-text' + ); + + expect(statusResultEl?.classList).toContain('red'); + }); + + it('should have report link', () => { + const link = compiled.querySelector( + '.download-report-link' + ) as HTMLAnchorElement; + + expect(link.href).toEqual('https://api.testrun.io/report.pdf'); + expect(link.download).toEqual( + 'delta_03-din-src_1.2.2_compliant_23_jun_2023_10:11' + ); + expect(link.title).toEqual( + 'Download report for Test Run # Delta 03-DIN-SRC 1.2.2 23 Jun 2023 10:11' + ); + }); + + it('should have filter chips', () => { + const chips = compiled.querySelector('app-filter-chips'); + + expect(chips).toBeTruthy(); + }); + + it('should have empty state when no data satisfy filters', () => { + component.dataSource.filter = JSON.stringify({ + deviceInfo: 'some not existing data', + deviceFirmware: 'some not existing data', + results: [], + dateRange: '', + }); + fixture.detectChanges(); + const emptyMessage = compiled.querySelector( + '.results-content-filter-empty' + ); + + expect(emptyMessage).toBeTruthy(); + }); + + it('should select row on row click', () => { + component.selectedRow = null; + const row = window.document.querySelector('tbody tr') as HTMLElement; + + row.click(); + + expect(component.selectedRow).toBeTruthy(); + }); + }); + }); +}); diff --git a/modules/ui/src/app/history/history.component.ts b/modules/ui/src/app/history/history.component.ts new file mode 100644 index 000000000..bb4b54b5e --- /dev/null +++ b/modules/ui/src/app/history/history.component.ts @@ -0,0 +1,320 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { + Component, + ElementRef, + OnDestroy, + OnInit, + ViewChild, +} from '@angular/core'; +import { LiveAnnouncer } from '@angular/cdk/a11y'; +import { TestRunService } from '../services/test-run.service'; +import { + HistoryTestrun, + StatusResultClassName, + TestrunStatus, +} from '../model/testrun-status'; +import { DatePipe } from '@angular/common'; +import { MatSort, Sort } from '@angular/material/sort'; +import { Subject, takeUntil } from 'rxjs'; +import { MatRow, MatTableDataSource } from '@angular/material/table'; +import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; +import { MatDialog } from '@angular/material/dialog'; +import { tap } from 'rxjs/internal/operators/tap'; +import { DateRange, FilterName, Filters } from '../model/filters'; + +@Component({ + selector: 'app-history', + templateUrl: './history.component.html', + styleUrls: ['./history.component.scss'], +}) +export class HistoryComponent implements OnInit, OnDestroy { + displayedColumns: string[] = [ + 'started', + 'duration', + 'deviceInfo', + 'deviceFirmware', + 'status', + 'report', + ]; + chips: string[] = ['chips']; + dataSource: MatTableDataSource = + new MatTableDataSource([]); + + public readonly FilterName = FilterName; + public filterOpened = false; + public activeFilter = ''; + public resultList = ['Compliant', 'Non-Compliant']; + filteredValues: Filters = { + deviceInfo: '', + deviceFirmware: '', + results: [], + dateRange: '', + }; + private destroy$: Subject = new Subject(); + @ViewChild(MatSort, { static: false }) sort!: MatSort; + dataLoaded = false; + selectedRow: MatRow | null = null; + constructor( + private testRunService: TestRunService, + private datePipe: DatePipe, + private liveAnnouncer: LiveAnnouncer, + public dialog: MatDialog + ) { + this.testRunService.fetchHistory(); + } + + ngOnInit() { + this.testRunService + .getHistory() + .pipe(takeUntil(this.destroy$)) + .subscribe(res => { + if (!res) { + return; + } + const data = this.formateData(res); + + this.dataSource = new MatTableDataSource(data); + + this.dataSource.sortingDataAccessor = ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + data: any, + sortHeaderId: string + ): string => { + const value = data[sortHeaderId]; + return typeof value === 'string' ? value.toLocaleLowerCase() : value; + }; + this.dataSource.filterPredicate = this.customFilterPredicate(); + this.dataSource.filter = JSON.stringify(this.filteredValues); + this.dataSource.sort = this.sort; + this.dataLoaded = true; + }); + } + + customFilterPredicate() { + const filterPredicate = (data: HistoryTestrun, filter: string): boolean => { + const searchString = JSON.parse(filter); + const isIncludeDeviceInfo = this.filterStringData( + data.deviceInfo, + searchString.deviceInfo + ); + const isIncludeDeviceFirmware = this.filterStringData( + data.deviceFirmware, + searchString.deviceFirmware + ); + + const isIncludeStatus = + searchString.results?.length === 0 || + searchString.results?.includes(data.status); + const isIncludeStartedDate = this.filterStartedDateRange( + data.started, + searchString + ); + + return ( + isIncludeDeviceInfo && + isIncludeDeviceFirmware && + isIncludeStatus && + isIncludeStartedDate + ); + }; + return filterPredicate; + } + + private filterStringData(data: string, searchString: string): boolean { + return ( + data + .toString() + .trim() + .toLowerCase() + .indexOf(searchString.trim().toLowerCase()) !== -1 + ); + } + + private filterStartedDateRange( + startedDate: string | null, + searchString: { dateRange: DateRange } + ): boolean { + let isIncludeDate = true; + + if (!searchString.dateRange || !startedDate) { + return isIncludeDate; + } + + const startDate = searchString.dateRange.start + ? typeof searchString.dateRange.start === 'string' + ? Date.parse(searchString.dateRange.start) + : searchString.dateRange.start.getDate() + : 0; + const endDate = searchString.dateRange.end + ? typeof searchString.dateRange.end === 'string' + ? Date.parse(searchString.dateRange.end) + : searchString.dateRange.end.getDate() + : 0; + + const startedDateWithoutTime = new Date(startedDate).toDateString(); + const dateToFilter = Date.parse(startedDateWithoutTime); + + if (startDate && endDate && dateToFilter) { + isIncludeDate = dateToFilter >= startDate && dateToFilter <= endDate; + } else if (startDate && dateToFilter) { + isIncludeDate = dateToFilter >= startDate; + } + + return isIncludeDate; + } + + private formateData(data: TestrunStatus[]): HistoryTestrun[] { + return data.map(item => { + return { + ...item, + deviceFirmware: item.device.firmware, + deviceInfo: item.device.manufacturer + ' ' + item.device.model, + duration: this.getDuration(item.started, item.finished), + }; + }); + } + + getFormattedDateString(date: string | null) { + return date ? this.datePipe.transform(date, 'd MMM y H:mm') : ''; + } + sortData(sortState: Sort) { + this.dataSource.sort = this.sort; + if (sortState.direction) { + this.liveAnnouncer.announce(`Sorted ${sortState.direction}ending`); + } else { + this.liveAnnouncer.announce('Sorting cleared'); + } + } + + private transformDate(date: number, format: string) { + return this.datePipe.transform(date, format); + } + + public getDuration(started: string | null, finished: string | null): string { + if (!started || !finished) { + return ''; + } + const startedDate = new Date(started); + const finishedDate = new Date(finished); + + const durationMillisecond = finishedDate.getTime() - startedDate.getTime(); + const durationMinuts = this.transformDate(durationMillisecond, 'mm'); + const durationSeconds = this.transformDate(durationMillisecond, 'ss'); + + return `${durationMinuts}m ${durationSeconds}s`; + } + + public getResultClass(status: string): StatusResultClassName { + return this.testRunService.getResultClass(status); + } + + openFilter(event: Event, filter: string) { + event.stopPropagation(); + const target = new ElementRef(event.currentTarget); + + if (!this.filterOpened) { + this.openFilterDialog(target, filter); + } + } + + openFilterDialog(target: ElementRef, filter: string) { + this.filterOpened = true; + this.activeFilter = filter; + const dialogRef = this.dialog.open(FilterDialogComponent, { + ariaLabel: 'Filters', + data: { + filter, + trigger: target, + }, + autoFocus: true, + hasBackdrop: true, + disableClose: true, + panelClass: 'filter-form-dialog', + }); + + dialogRef + ?.afterClosed() + .pipe( + takeUntil(this.destroy$), + tap(() => { + this.filterOpened = false; + this.activeFilter = ''; + }) + ) + .subscribe(filteredData => { + if (filteredData) { + if (filter === FilterName.Results) { + this.filteredValues.results = filteredData.results; + } + if (filter === FilterName.DeviceInfo) { + this.filteredValues.deviceInfo = filteredData.deviceInfo; + } + if (filter === FilterName.DeviceFirmware) { + this.filteredValues.deviceFirmware = filteredData.deviceFirmware; + } + if (filter === FilterName.Started) { + this.filteredValues.dateRange = filteredData.dateRange; + } + + this.dataSource.filter = JSON.stringify(this.filteredValues); + } + }); + } + + filterCleared(filters: Filters) { + this.filteredValues = filters; + this.dataSource.filter = JSON.stringify(this.filteredValues); + } + + ngOnDestroy() { + this.destroy$.next(true); + this.destroy$.unsubscribe(); + } + + isFiltersEmpty() { + return Object.values(this.filteredValues).every(value => { + if (value.start === '') { + return value.end.length === 0; + } + return value.length === 0; + }); + } + + selectRow(row: MatRow) { + this.selectedRow = row; + } + + trackByStarted(index: number, item: TestrunStatus) { + return item.started; + } + + focusNextButton() { + // Try to focus next interactive element, if exists + const next = window.document.querySelector( + '.report-selected + tr a' + ) as HTMLButtonElement; + if (next) { + next.focus(); + } else { + // If next interactive element doest not exist, add menu reports button should be focused + const menuButton = window.document.querySelector( + '.app-sidebar-button-reports' + ) as HTMLButtonElement; + menuButton?.focus(); + } + } +} diff --git a/modules/ui/src/app/history/history.module.ts b/modules/ui/src/app/history/history.module.ts new file mode 100644 index 000000000..288f4e048 --- /dev/null +++ b/modules/ui/src/app/history/history.module.ts @@ -0,0 +1,45 @@ +/** + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { NgModule } from '@angular/core'; +import { CommonModule, DatePipe } from '@angular/common'; +import { HistoryComponent } from './history.component'; +import { HistoryRoutingModule } from './history-routing.module'; +import { MatTableModule } from '@angular/material/table'; +import { MatIconModule } from '@angular/material/icon'; +import { MatToolbarModule } from '@angular/material/toolbar'; +import { DownloadReportComponent } from '../components/download-report/download-report.component'; +import { MatSortModule } from '@angular/material/sort'; +import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; +import { FilterChipsComponent } from '../components/filter-chips/filter-chips.component'; +import { DeleteReportComponent } from '../components/delete-report/delete-report.component'; + +@NgModule({ + declarations: [HistoryComponent], + imports: [ + CommonModule, + HistoryRoutingModule, + MatTableModule, + MatIconModule, + MatToolbarModule, + MatSortModule, + DownloadReportComponent, + FilterDialogComponent, + FilterChipsComponent, + DeleteReportComponent, + ], + providers: [DatePipe], +}) +export class HistoryModule {} diff --git a/modules/ui/src/app/interceptors/error.interceptor.ts b/modules/ui/src/app/interceptors/error.interceptor.ts index 8fe5d0c23..2a44de58c 100644 --- a/modules/ui/src/app/interceptors/error.interceptor.ts +++ b/modules/ui/src/app/interceptors/error.interceptor.ts @@ -30,11 +30,14 @@ import { } from 'rxjs'; import { NotificationService } from '../services/notification.service'; +<<<<<<< HEAD import { SYSTEM_STOP } from '../services/test-run.service'; const DEFAULT_TIMEOUT_MS = 5000; const SYSTEM_STOP_TIMEOUT_MS = 10000; +======= +>>>>>>> main @Injectable() export class ErrorInterceptor implements HttpInterceptor { constructor(private notificationService: NotificationService) {} @@ -42,6 +45,7 @@ export class ErrorInterceptor implements HttpInterceptor { intercept( request: HttpRequest, next: HttpHandler, +<<<<<<< HEAD timeoutMs = DEFAULT_TIMEOUT_MS ): Observable> { const timeoutValue = request.url.includes(SYSTEM_STOP) @@ -49,6 +53,12 @@ export class ErrorInterceptor implements HttpInterceptor { : timeoutMs; return next.handle(request).pipe( timeout(timeoutValue), +======= + timeoutMs = 5000 + ): Observable> { + return next.handle(request).pipe( + timeout(timeoutMs), +>>>>>>> main catchError((error: HttpErrorResponse | TimeoutError) => { if (error instanceof TimeoutError) { this.notificationService.notify( diff --git a/modules/ui/src/app/mocks/progress.mock.ts b/modules/ui/src/app/mocks/progress.mock.ts index 7d855bfd5..f5565fdd1 100644 --- a/modules/ui/src/app/mocks/progress.mock.ts +++ b/modules/ui/src/app/mocks/progress.mock.ts @@ -34,6 +34,7 @@ export const TEST_DATA_RESULT: IResult[] = [ }, ]; +<<<<<<< HEAD export const TEST_DATA_RESULT_WITH_RECOMMENDATIONS: IResult[] = [ { name: 'dns.network.from_dhcp', @@ -47,6 +48,8 @@ export const TEST_DATA_RESULT_WITH_RECOMMENDATIONS: IResult[] = [ }, ]; +======= +>>>>>>> main export const TEST_DATA_TABLE_RESULT: IResult[] = [ ...TEST_DATA_RESULT, ...new Array(24).fill(null).map(() => ({}) as IResult), diff --git a/modules/ui/src/app/model/callout-type.ts b/modules/ui/src/app/model/callout-type.ts index b8fabd0bc..c41236be2 100644 --- a/modules/ui/src/app/model/callout-type.ts +++ b/modules/ui/src/app/model/callout-type.ts @@ -16,6 +16,9 @@ export enum CalloutType { Info = 'info', Warning = 'warning_amber', +<<<<<<< HEAD Error = 'error', ErrorOutline = 'error_outline', +======= +>>>>>>> main } diff --git a/modules/ui/src/app/model/device.ts b/modules/ui/src/app/model/device.ts index ba526e661..982d3c5a9 100644 --- a/modules/ui/src/app/model/device.ts +++ b/modules/ui/src/app/model/device.ts @@ -37,9 +37,12 @@ export interface TestModule { displayName: string; name: string; enabled: boolean; +<<<<<<< HEAD } export enum DeviceView { Basic = 'basic', WithActions = 'with actions', +======= +>>>>>>> main } diff --git a/modules/ui/src/app/model/routes.ts b/modules/ui/src/app/model/routes.ts index f523f1b15..ad300bb76 100644 --- a/modules/ui/src/app/model/routes.ts +++ b/modules/ui/src/app/model/routes.ts @@ -16,6 +16,10 @@ export enum Routes { Devices = '/devices', +<<<<<<< HEAD Testing = '/testing', +======= + Testrun = '/testrun', +>>>>>>> main Reports = '/reports', } diff --git a/modules/ui/src/app/model/setting.ts b/modules/ui/src/app/model/setting.ts index 101ae6ded..b68cfc44a 100644 --- a/modules/ui/src/app/model/setting.ts +++ b/modules/ui/src/app/model/setting.ts @@ -18,8 +18,16 @@ export interface SystemConfig { device_intf?: string; internet_intf?: string; }; +<<<<<<< HEAD log_level?: string; monitor_period?: number; +======= +} + +export interface SettingOption { + key: string; + value: string; +>>>>>>> main } export interface InterfacesValidation { diff --git a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss index 831f9907a..4d03c175b 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss +++ b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss @@ -13,7 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss @import 'src/theming/colors'; +======= +@import '../../../theming/colors'; +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.scss $device-form-max-width: 580px; $device-form-min-width: 285px; diff --git a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts index 38ab05ffa..a3c4bdec1 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts +++ b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts @@ -22,6 +22,7 @@ import { Validators, } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts import { Device, TestModule } from '../../../../model/device'; import { DeviceValidators } from './device.validators'; @@ -30,6 +31,16 @@ import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { EscapableDialogComponent } from '../../../../components/escapable-dialog/escapable-dialog.component'; import { DevicesStore } from '../../devices.store'; +======= +import { Device, TestModule } from '../../model/device'; +import { TestRunService } from '../../services/test-run.service'; +import { DeviceValidators } from './device.validators'; +import { catchError, of, Subject, takeUntil } from 'rxjs'; +import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; +import { EscapableDialogComponent } from '../../components/escapable-dialog/escapable-dialog.component'; +import { Observable } from 'rxjs/internal/Observable'; + +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts const MAC_ADDRESS_PATTERN = '^[\\s]*[a-fA-F0-9]{2}(?:[:][a-fA-F0-9]{2}){5}[\\s]*$'; @@ -50,11 +61,24 @@ export interface FormResponse { action: FormAction; } +export enum FormAction { + Delete = 'Delete', + Save = 'Save', +} + +export interface FormResponse { + device?: Device; + action: FormAction; +} + @Component({ selector: 'app-device-form', templateUrl: './device-form.component.html', styleUrls: ['./device-form.component.scss'], +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts providers: [DevicesStore], +======= +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts }) export class DeviceFormComponent extends EscapableDialogComponent @@ -71,8 +95,13 @@ export class DeviceFormComponent public override dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: DialogData, private fb: FormBuilder, +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts private deviceValidators: DeviceValidators, private devicesStore: DevicesStore +======= + private testRunService: TestRunService, + private deviceValidators: DeviceValidators +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts ) { super(dialogRef); } @@ -113,6 +142,7 @@ export class DeviceFormComponent } cancel(): void { + this.testRunService.setIsOpenAddDevice(false); this.dialogRef.close(); } @@ -132,6 +162,7 @@ export class DeviceFormComponent const device = this.createDeviceFromForm(); +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts this.updateDevice(device, () => { this.dialogRef.close({ action: FormAction.Save, @@ -146,12 +177,36 @@ export class DeviceFormComponent device, mac_addr: this.data.device.mac_addr, onSuccess: callback, +======= + this.updateDevice(device) + .pipe( + takeUntil(this.destroy$), + catchError(error => { + this.error$.next(error.error); + return of(null); + }) + ) + .subscribe((deviceSaved: boolean | null) => { + if (deviceSaved) { + this.dialogRef.close({ + action: FormAction.Save, + device, + } as FormResponse); + } +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts }); } else { this.devicesStore.saveDevice({ device, onSuccess: callback }); } } + private updateDevice(device: Device): Observable { + if (this.data.device) { + return this.testRunService.editDevice(device, this.data.device.mac_addr); + } + return this.testRunService.saveDevice(device); + } + private isAllTestsDisabled(): boolean { return this.deviceForm.value.test_modules.every((enabled: boolean) => { return !enabled; @@ -199,10 +254,14 @@ export class DeviceFormComponent '', [ Validators.pattern(MAC_ADDRESS_PATTERN), +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts this.deviceValidators.differentMACAddress( this.data.devices, this.data.device ), +======= + this.deviceValidators.differentMACAddress(this.data.device), +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts ], ], test_modules: new FormArray([]), diff --git a/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts b/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts index 5e54e7996..dde599799 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts +++ b/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts @@ -15,13 +15,24 @@ */ import { Injectable } from '@angular/core'; import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts import { Device } from '../../../../model/device'; +======= +import { TestRunService } from '../../services/test-run.service'; +import { Device } from '../../model/device'; + +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts @Injectable({ providedIn: 'root' }) /** * Validator uses for Device Name and Device Manufacturer inputs */ export class DeviceValidators { +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts +======= + constructor(private testRunService: TestRunService) {} + +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts readonly STRING_FORMAT_REGEXP = new RegExp( "^([a-z0-9\\p{L}\\p{M}.',-_ ]{1,64})$", 'u' @@ -42,16 +53,23 @@ export class DeviceValidators { return (control: AbstractControl): ValidationErrors | null => { const value = control.value?.trim(); if (value && (!device || device?.mac_addr !== value)) { +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts const result = this.hasDevice(value, devices); +======= + const result = this.testRunService.hasDevice(value); +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts return result ? { has_same_mac_address: true } : null; } return null; }; +<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts } private hasDevice(macAddress: string, devices: Device[]): boolean { return ( devices.some(device => device.mac_addr === macAddress.trim()) || false ); +======= +>>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts } } diff --git a/modules/ui/src/app/pages/devices/device-repository.component.scss b/modules/ui/src/app/pages/devices/device-repository.component.scss index d15f6bad5..710f421ac 100644 --- a/modules/ui/src/app/pages/devices/device-repository.component.scss +++ b/modules/ui/src/app/pages/devices/device-repository.component.scss @@ -13,8 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD:modules/ui/src/app/pages/devices/device-repository.component.scss @import 'src/theming/colors'; @import 'src/theming/variables'; +======= +@import '../../theming/colors'; +@import '../../theming/variables'; +>>>>>>> main:modules/ui/src/app/device-repository/device-repository.component.scss :host { overflow: hidden; diff --git a/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss b/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss index 54464931e..f1881e077 100644 --- a/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss +++ b/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<<< HEAD:modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss :host { display: inline-block; } @@ -22,5 +23,26 @@ display: inline-block; & ::ng-deep .mdc-icon-button__ripple { display: none; +======== +import { Injectable } from '@angular/core'; +import { MatSnackBar } from '@angular/material/snack-bar'; + +@Injectable({ + providedIn: 'root', +}) +export class NotificationService { + constructor(private snackBar: MatSnackBar) {} + + notify(message: string, duration = 5000) { + this.snackBar.open(message, 'OK', { + horizontalPosition: 'right', + panelClass: 'test-run-notification', + duration: duration, + }); + } + + dismiss() { + this.snackBar.dismiss(); +>>>>>>>> main:modules/ui/src/app/services/notification.service.ts } } diff --git a/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss b/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss index 3dfdd2704..17e3f5c08 100644 --- a/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss +++ b/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD:modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss @use 'node_modules/@angular/material/index' as mat; @import 'src/theming/colors'; @@ -24,6 +25,20 @@ .date-field { flex-shrink: 0; +======= +@import '../../../theming/colors'; +@import '../../../theming/variables'; + +:host { + overflow-y: auto; + margin: 16px 0; +} + +table, +tr { + border: 1px solid $lighter-grey; + border-collapse: collapse; +>>>>>>> main:modules/ui/src/app/progress/progress-table/progress-table.component.scss } .date-calendar { diff --git a/modules/ui/src/app/pages/reports/history.component.scss b/modules/ui/src/app/pages/reports/history.component.scss index 1e3bdc59b..017c90beb 100644 --- a/modules/ui/src/app/pages/reports/history.component.scss +++ b/modules/ui/src/app/pages/reports/history.component.scss @@ -13,9 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +<<<<<<< HEAD:modules/ui/src/app/pages/reports/history.component.scss @use 'node_modules/@angular/material/index' as mat; @import 'src/theming/colors'; @import 'src/theming/variables'; +======= +@use '@angular/material' as mat; +@import '../../theming/colors'; +@import '../../theming/variables'; +>>>>>>> main:modules/ui/src/app/history/history.component.scss :host { overflow: hidden; @@ -130,7 +136,11 @@ color: #202124; } +<<<<<<< HEAD:modules/ui/src/app/pages/reports/history.component.scss ::ng-deep .download-report-icon, +======= +.download-report-icon, +>>>>>>> main:modules/ui/src/app/history/history.component.scss .delete-report-icon { color: $dark-grey; } diff --git a/modules/ui/src/app/pages/settings/general-settings.component.scss b/modules/ui/src/app/pages/settings/general-settings.component.scss index c1f2e259c..2af01f874 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.scss +++ b/modules/ui/src/app/pages/settings/general-settings.component.scss @@ -56,30 +56,42 @@ } .setting-drawer-content { +<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss padding: 0 16px 8px 16px; +======= + padding: 11px 16px 8px 16px; +>>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss overflow: hidden; flex: 1; form { display: grid; +<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss +======= + grid-template-rows: repeat(7, auto) 1fr; +>>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss height: 100%; } .setting-drawer-content-form-empty { grid-template-rows: repeat(2, auto) 1fr; } +<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss } .setting-drawer-content-inputs { overflow: auto; margin: 0 -16px; padding: 0 16px; +======= +>>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss } .error-message-container { display: block; margin-top: auto; padding-bottom: 8px; +<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss } .error-message-container + .setting-drawer-footer { @@ -89,6 +101,78 @@ .message { margin: 0; padding: 6px 0 12px 0; +======= +} + +.error-message-container + .setting-drawer-footer { + margin-top: 0; +} + +.setting-form-label { + font-size: 18px; + color: $dark-grey; +} + +:host:has(.two-ports-message) .internet-label { + padding-top: 16px; +} + +.setting-label-description { + font-family: $font-secondary; + font-size: 14px; + line-height: 20px; + letter-spacing: 0.2px; + margin: 10px 0; + color: $dark-grey; +} + +.setting-option-value { + padding: 14px 16px; +} + +.option-value { + margin: 0; + font-family: Roboto; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.2px; + + &.top { + color: #3c4043; + } + + &.bottom { + color: #5f6368; + } +} + +.setting-field { + ::ng-deep .mat-mdc-form-field-infix { + min-height: 76px; + display: flex; + align-items: center; + } + + ::ng-deep .mat-mdc-floating-label { + font-family: Roboto; + font-size: 14px; + font-style: normal; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.2px; + } + + ::ng-deep .mat-mdc-floating-label:not(.mdc-floating-label--float-above) { + top: 35px; + } +} + +.message { + margin: 0; + padding: 16px 0 0 0; +>>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss color: $grey-800; font-family: $font-secondary; font-size: 14px; diff --git a/modules/ui/src/app/pages/settings/only-different-values.validator.ts b/modules/ui/src/app/pages/settings/only-different-values.validator.ts index a153fb0ef..6d6ae0ffd 100644 --- a/modules/ui/src/app/pages/settings/only-different-values.validator.ts +++ b/modules/ui/src/app/pages/settings/only-different-values.validator.ts @@ -20,7 +20,10 @@ import { ValidationErrors, ValidatorFn, } from '@angular/forms'; +<<<<<<< HEAD:modules/ui/src/app/pages/settings/only-different-values.validator.ts import { FormKey } from '../../model/setting'; +======= +>>>>>>> main:modules/ui/src/app/components/general-settings/only-different-values.validator.ts @Injectable({ providedIn: 'root' }) export class OnlyDifferentValuesValidator { diff --git a/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html b/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html index a5b8e1289..44b2e3e3a 100644 --- a/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html +++ b/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html @@ -22,7 +22,10 @@ >>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html [class.device-item-focused]="device === prevDevice" (itemClicked)="deviceSelected(device)" [device]="device"> @@ -30,7 +33,10 @@ >>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html [tabIndex]="-1" [device]="selectedDevice"> +<<<<<<< HEAD:modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html +======= + +>>>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html
    ', +}) +class DummyComponent {} + +describe('StateService', () => { + let service: StateService; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [DummyComponent], + }); + service = TestBed.inject(StateService); + + fixture = TestBed.createComponent(DummyComponent); + + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + it('should focus element', () => { + const testButton = fixture.nativeElement.querySelector( + '#test-button' + ) as HTMLButtonElement; + + service.focusFirstElementInMain(); + + expect(document.activeElement).toBe(testButton); + }); +}); diff --git a/modules/ui/src/app/services/state.service.ts b/modules/ui/src/app/services/state.service.ts new file mode 100644 index 000000000..509fbd897 --- /dev/null +++ b/modules/ui/src/app/services/state.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root', +}) +export class StateService { + focusFirstElementInMain() { + const firstControl: HTMLElement | null = window.document.querySelector( + '#main button:not([disabled="true"]), ' + + '#main a:not([disabled="true"]), #main table' + ); + + if (firstControl) { + firstControl.focus(); + } + } +} diff --git a/modules/ui/src/app/services/test-run.service.spec.ts b/modules/ui/src/app/services/test-run.service.spec.ts index f6a6294cf..fbafd7567 100644 --- a/modules/ui/src/app/services/test-run.service.spec.ts +++ b/modules/ui/src/app/services/test-run.service.spec.ts @@ -17,18 +17,30 @@ import { HttpClientTestingModule, HttpTestingController, } from '@angular/common/http/testing'; +<<<<<<< HEAD import { getTestBed, TestBed } from '@angular/core/testing'; import { Device, TestModule } from '../model/device'; import { TestRunService, UNAVAILABLE_VERSION } from './test-run.service'; import { SystemConfig, SystemInterfaces } from '../model/setting'; +======= +import { fakeAsync, getTestBed, TestBed, tick } from '@angular/core/testing'; +import { Device, TestModule } from '../model/device'; + +import { SystemInterfaces, TestRunService } from './test-run.service'; +import { SystemConfig } from '../model/setting'; +>>>>>>> main import { MOCK_PROGRESS_DATA_CANCELLING, MOCK_PROGRESS_DATA_IN_PROGRESS, } from '../mocks/progress.mock'; import { StatusOfTestResult, TestrunStatus } from '../model/testrun-status'; import { device } from '../mocks/device.mock'; +<<<<<<< HEAD import { NEW_VERSION, VERSION } from '../mocks/version.mock'; +======= +import { VERSION } from '../mocks/version.mock'; +>>>>>>> main const MOCK_SYSTEM_CONFIG: SystemConfig = { network: { @@ -87,6 +99,7 @@ describe('TestRunService', () => { name: 'tls', enabled: true, }, +<<<<<<< HEAD { displayName: 'Protocol', name: 'protocol', @@ -100,6 +113,24 @@ describe('TestRunService', () => { const deviceArray = [device] as Device[]; service.fetchDevices().subscribe(res => { +======= + ] as TestModule[]); + }); + + it('setIsOpenAddDevice should update the isOpenAddDevice$ value', () => { + service.setIsOpenAddDevice(true); + + service.isOpenAddDevice$.subscribe(value => { + expect(value).toBe(true); + }); + }); + + it('getDevices should return devices', () => { + let result: Device[] | null = null; + const deviceArray = [device] as Device[]; + + service.getDevices().subscribe(res => { +>>>>>>> main expect(res).toEqual(result); }); @@ -114,6 +145,25 @@ describe('TestRunService', () => { req.flush(deviceArray); }); +<<<<<<< HEAD +======= + it('setSystemConfig should update the systemConfig data', () => { + service.setSystemConfig(MOCK_SYSTEM_CONFIG); + + service.systemConfig$.subscribe(data => { + expect(data).toEqual(MOCK_SYSTEM_CONFIG); + }); + }); + + it('setHasConnectionSetting should update the hasConnectionSetting$', () => { + service.setHasConnectionSetting(true); + + service.hasConnectionSetting$.subscribe(data => { + expect(data).toEqual(true); + }); + }); + +>>>>>>> main it('getSystemConfig should return systemConfig data', () => { const apiUrl = 'http://localhost:8000/system/config'; @@ -155,6 +205,18 @@ describe('TestRunService', () => { req.flush(mockSystemInterfaces); }); +<<<<<<< HEAD +======= + it('hasDevice should return true if device with mac address already exist', fakeAsync(() => { + const deviceArray = [device] as Device[]; + service.setDevices(deviceArray); + tick(); + + expect(service.hasDevice('00:1e:42:35:73:c4')).toEqual(true); + expect(service.hasDevice(' 00:1e:42:35:73:c4 ')).toEqual(true); + })); + +>>>>>>> main describe('getSystemStatus', () => { it('should get system status data with no changes', () => { const result = { ...MOCK_PROGRESS_DATA_IN_PROGRESS }; @@ -234,7 +296,11 @@ describe('TestRunService', () => { }); result = reports; +<<<<<<< HEAD service.getHistory(); +======= + service.fetchHistory(); +>>>>>>> main const req = httpTestingController.expectOne( 'http://localhost:8000/reports' ); @@ -243,6 +309,7 @@ describe('TestRunService', () => { req.flush(reports); }); +<<<<<<< HEAD }); describe('#getResultClass', () => { @@ -313,6 +380,98 @@ describe('TestRunService', () => { expect(result).toEqual(expectedResult); }); +======= + + it('should return [] when error happens', () => { + let result: TestrunStatus[] | null = null; + + service.getHistory().subscribe(res => { + expect(res).toEqual(result); + }); + + result = []; + service.fetchHistory(); + const req = httpTestingController.expectOne({ + url: 'http://localhost:8000/reports', + }); + + req.flush([], { status: 500, statusText: 'error' }); + }); + }); + + describe('#getResultClass', () => { + it('should return class "green" if test result is "Compliant" or "Smart Ready"', () => { + const expectedResult = { + green: true, + red: false, + blue: false, + grey: false, + }; + + const result1 = service.getResultClass(StatusOfTestResult.Compliant); + + expect(result1).toEqual(expectedResult); + }); + + it('should return class "blue" if test result is "Smart Ready" or "Informational"', () => { + const expectedResult = { + green: false, + red: false, + blue: true, + grey: false, + }; + + const result1 = service.getResultClass(StatusOfTestResult.SmartReady); + const result2 = service.getResultClass(StatusOfTestResult.Info); + + expect(result1).toEqual(expectedResult); + expect(result2).toEqual(expectedResult); + }); + + it('should return class "read" if test result is "Non Compliant" or "Error"', () => { + const expectedResult = { + green: false, + red: true, + blue: false, + grey: false, + }; + + const result = service.getResultClass(StatusOfTestResult.NonCompliant); + const result2 = service.getResultClass(StatusOfTestResult.Error); + + expect(result).toEqual(expectedResult); + expect(result2).toEqual(expectedResult); + }); + + it('should return class "grey" if test result is "Skipped" or "Not Started"', () => { + const expectedResult = { + green: false, + red: false, + blue: false, + grey: true, + }; + + const result1 = service.getResultClass(StatusOfTestResult.Skipped); + const result2 = service.getResultClass(StatusOfTestResult.NotStarted); + + expect(result1).toEqual(expectedResult); + expect(result2).toEqual(expectedResult); + }); + }); + + describe('#addDevice', () => { + it('should create array with new value if previous value is null', function () { + service.addDevice(device); + + expect(service.getDevices().value).toEqual([device]); + }); + + it('should add new value if previous value is array', function () { + service.setDevices([device, device]); + service.addDevice(device); + + expect(service.getDevices().value).toEqual([device, device, device]); +>>>>>>> main }); }); @@ -329,6 +488,7 @@ describe('TestRunService', () => { req.flush({}); }); +<<<<<<< HEAD describe('#fetchVersion', () => { it('should get system version', () => { const version = VERSION; @@ -375,6 +535,29 @@ describe('TestRunService', () => { service.getVersion().subscribe(res => { expect(res).toEqual(UNAVAILABLE_VERSION); }); +======= + it('removeDevice should remove device from device list', fakeAsync(() => { + const deviceArray = [device] as Device[]; + service.setDevices(deviceArray); + tick(); + service.removeDevice(device); + + expect(service.hasDevice('00:1e:42:35:73:c4')).toEqual(false); + })); + + it('fetchVersion should get system version', () => { + const version = VERSION; + + service.fetchVersion(); + const req = httpTestingController.expectOne( + 'http://localhost:8000/system/version' + ); + expect(req.request.method).toBe('GET'); + req.flush(version); + + service.getVersion().subscribe(res => { + expect(res).toEqual(version); +>>>>>>> main }); }); @@ -396,6 +579,42 @@ describe('TestRunService', () => { req.flush({}); }); +<<<<<<< HEAD +======= + it('removeReport should remove device from history list', fakeAsync(() => { + const reports = [ + { + status: 'Completed', + device: device, + report: 'https://api.testrun.io/report.pdf', + started: '2023-06-22T10:11:00.123Z', + finished: '2023-06-22T10:17:00.123Z', + }, + { + status: 'Completed', + device: device, + report: 'https://api.testrun.io/report.pdf', + started: '2023-07-22T10:11:00.123Z', + finished: '2023-07-22T10:17:00.123Z', + }, + ] as TestrunStatus[]; + + service.getHistory().next(reports); + tick(); + service.removeReport('00:1e:42:35:73:c4', '2023-06-22T10:11:00.123Z'); + + expect( + service + .getHistory() + .value?.some( + report => + report.device.mac_addr === '00:1e:42:35:73:c4' && + report.started === '2023-06-22T10:11:00.123Z' + ) + ).toEqual(false); + })); + +>>>>>>> main it('#saveDevice should have necessary request data', () => { const apiUrl = 'http://localhost:8000/device'; diff --git a/modules/ui/src/app/services/test-run.service.ts b/modules/ui/src/app/services/test-run.service.ts index 0ee0a03e9..370484b63 100644 --- a/modules/ui/src/app/services/test-run.service.ts +++ b/modules/ui/src/app/services/test-run.service.ts @@ -18,8 +18,13 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { Observable } from 'rxjs/internal/Observable'; import { Device, TestModule } from '../model/device'; +<<<<<<< HEAD import { catchError, map, of, ReplaySubject, retry } from 'rxjs'; import { SystemConfig, SystemInterfaces } from '../model/setting'; +======= +import { map, ReplaySubject, retry } from 'rxjs'; +import { SystemConfig } from '../model/setting'; +>>>>>>> main import { StatusOfTestResult, StatusOfTestrun, @@ -29,6 +34,7 @@ import { import { Version } from '../model/version'; const API_URL = `http://${window.location.hostname}:8000`; +<<<<<<< HEAD export const SYSTEM_STOP = '/system/stop'; export const UNAVAILABLE_VERSION = { @@ -36,6 +42,11 @@ export const UNAVAILABLE_VERSION = { update_available: false, latest_version: 'v?.?', latest_version_url: '', +======= + +export type SystemInterfaces = { + [key: string]: string; +>>>>>>> main }; @Injectable({ @@ -68,6 +79,7 @@ export class TestRunService { name: 'tls', enabled: true, }, +<<<<<<< HEAD { displayName: 'Protocol', name: 'protocol', @@ -77,24 +89,75 @@ export class TestRunService { private isOpenStartTestrunSub$ = new BehaviorSubject(false); public isOpenStartTestrun$ = this.isOpenStartTestrunSub$.asObservable(); +======= + ]; + + private devices = new BehaviorSubject(null); + private isOpenAddDeviceSub$ = new BehaviorSubject(false); + public isOpenAddDevice$ = this.isOpenAddDeviceSub$.asObservable(); + private isOpenStartTestrunSub$ = new BehaviorSubject(false); + public isOpenStartTestrun$ = this.isOpenStartTestrunSub$.asObservable(); + private _systemConfig = new BehaviorSubject(null); + public systemConfig$ = this._systemConfig.asObservable(); +>>>>>>> main private systemStatusSubject = new ReplaySubject(1); public systemStatus$ = this.systemStatusSubject.asObservable(); private isTestrunStartedSub$ = new BehaviorSubject(false); public isTestrunStarted$ = this.isTestrunStartedSub$.asObservable(); +<<<<<<< HEAD +======= + private hasConnectionSettingSub$ = new BehaviorSubject(null); + public hasConnectionSetting$ = this.hasConnectionSettingSub$.asObservable(); + private history = new BehaviorSubject(null); +>>>>>>> main private version = new BehaviorSubject(null); constructor(private http: HttpClient) {} +<<<<<<< HEAD +======= + setIsOpenAddDevice(isOpen: boolean): void { + this.isOpenAddDeviceSub$.next(isOpen); + } + +>>>>>>> main setIsOpenStartTestrun(isOpen: boolean): void { this.isOpenStartTestrunSub$.next(isOpen); } +<<<<<<< HEAD +======= + setHasConnectionSetting(hasSetting: boolean): void { + this.hasConnectionSettingSub$.next(hasSetting); + } + getDevices(): BehaviorSubject { + return this.devices; + } + + setDevices(devices: Device[]): void { + this.devices.next(devices); + } + + setSystemConfig(config: SystemConfig): void { + this._systemConfig.next(config); + } + +>>>>>>> main setSystemStatus(status: TestrunStatus): void { this.systemStatusSubject.next(status); } +<<<<<<< HEAD fetchDevices(): Observable { return this.http.get(`${API_URL}/devices`); +======= + fetchDevices(): void { + this.http + .get(`${API_URL}/devices`) + .subscribe((devices: Device[]) => { + this.setDevices(devices); + }); +>>>>>>> main } getSystemConfig(): Observable { @@ -130,7 +193,11 @@ export class TestRunService { stopTestrun(): Observable { return this.http +<<<<<<< HEAD .post<{ success: string }>(`${API_URL}${SYSTEM_STOP}`, {}) +======= + .post<{ success: string }>(`${API_URL}/system/stop`, {}) +>>>>>>> main .pipe(map(() => true)); } @@ -166,23 +233,85 @@ export class TestRunService { .pipe(map(() => true)); } +<<<<<<< HEAD getHistory(): Observable { return this.http.get(`${API_URL}/reports`); +======= + hasDevice(macAddress: string): boolean { + return ( + this.devices.value?.some( + device => device.mac_addr === macAddress.trim() + ) || false + ); + } + + addDevice(device: Device): void { + this.devices.next( + this.devices.value ? this.devices.value.concat([device]) : [device] + ); + } + + updateDevice(deviceToUpdate: Device, update: Device): void { + const device = this.devices.value?.find( + device => deviceToUpdate.mac_addr === device.mac_addr + ); + if (device) { + device.model = update.model; + device.manufacturer = update.manufacturer; + device.test_modules = update.test_modules; + device.mac_addr = update.mac_addr; + + this.devices.next(this.devices.value); + } + } + + removeDevice(deviceToDelete: Device): void { + const idx = this.devices.value?.findIndex( + device => deviceToDelete.mac_addr === device.mac_addr + ); + if (typeof idx === 'number') { + this.devices.value?.splice(idx, 1); + this.devices.next(this.devices.value); + } + } + + fetchHistory(): void { + this.http.get(`${API_URL}/reports`).subscribe( + data => { + this.history.next(data); + }, + () => { + this.history.next([]); + } + ); + } + + getHistory(): BehaviorSubject { + return this.history; +>>>>>>> main } public getResultClass(result: string): StatusResultClassName { return { +<<<<<<< HEAD green: result === StatusOfTestResult.Compliant || result === StatusOfTestResult.CompliantLimited || result === StatusOfTestResult.CompliantHigh, +======= + green: result === StatusOfTestResult.Compliant, +>>>>>>> main red: result === StatusOfTestResult.NonCompliant || result === StatusOfTestResult.Error, blue: result === StatusOfTestResult.SmartReady || +<<<<<<< HEAD result === StatusOfTestResult.Info || result === StatusOfTestResult.InProgress, +======= + result === StatusOfTestResult.Info, +>>>>>>> main grey: result === StatusOfTestResult.Skipped || result === StatusOfTestResult.NotStarted, @@ -207,6 +336,7 @@ export class TestRunService { fetchVersion(): void { this.http .get(`${API_URL}/system/version`) +<<<<<<< HEAD .pipe( catchError(() => { const previousVersion = this.version.value?.installed_version @@ -215,6 +345,9 @@ export class TestRunService { return of(previousVersion); }) ) +======= + .pipe(retry(1)) +>>>>>>> main .subscribe(version => { this.version.next(version); }); @@ -227,4 +360,18 @@ export class TestRunService { }) .pipe(map(() => true)); } +<<<<<<< HEAD +======= + + removeReport(mac_addr: string, started: string): void { + const idx = this.history.value?.findIndex( + report => + report.device.mac_addr === mac_addr && report.started === started + ); + if (typeof idx === 'number') { + this.history.value?.splice(idx, 1); + this.history.next(this.history.value); + } + } +>>>>>>> main } diff --git a/modules/ui/src/index.html b/modules/ui/src/index.html index a13a16ad3..9a1dbefe7 100644 --- a/modules/ui/src/index.html +++ b/modules/ui/src/index.html @@ -39,9 +39,12 @@ function gtag() { dataLayer.push(arguments); } +<<<<<<< HEAD gtag('consent', 'default', { analytics_storage: 'denied', }); +======= +>>>>>>> main gtag('js', new Date()); gtag('config', 'G-XCDFEHN64Z'); @@ -58,9 +61,12 @@ +<<<<<<< HEAD +======= +>>>>>>> main diff --git a/modules/ui/src/styles.scss b/modules/ui/src/styles.scss index 10213326a..012ed6f34 100644 --- a/modules/ui/src/styles.scss +++ b/modules/ui/src/styles.scss @@ -50,7 +50,10 @@ body { border-radius: inherit; } +<<<<<<< HEAD .consent-dialog, +======= +>>>>>>> main .device-form-dialog, .initiate-test-run-dialog { max-height: 100vh; @@ -104,7 +107,11 @@ mat-hint { .active-menu { .app-sidebar-button { .mdc-button__label { +<<<<<<< HEAD left: 8px; +======= + left: 0; +>>>>>>> main } } @@ -117,7 +124,11 @@ mat-hint { fill: mat.get-color-from-palette($color-primary, 600); } +<<<<<<< HEAD .cell-result-text { +======= +.table-cell-result-text { +>>>>>>> main margin: 0; padding: 4px; border-radius: 2px; @@ -178,10 +189,13 @@ h2.title { --mat-option-selected-state-layer-color: #e8f0fe; } +<<<<<<< HEAD .mat-mdc-form-field { --mdc-outlined-text-field-focus-label-text-color: #1a73e8; } +======= +>>>>>>> main body:has(.initiate-test-run-dialog) app-root app-spinner.connection-settings-spinner, @@ -198,6 +212,7 @@ body:has(.filter-dialog-content) opacity: 0; } +<<<<<<< HEAD body:has(app-callout .info):not(:has(app-callout .error)) app-device-repository:not(:has(.device-repository-content-empty)), body:has(app-callout .info):not(:has(app-callout .error)) @@ -222,6 +237,15 @@ body:has(app-callout .info):has(app-callout .error) margin-top: 156px; } +======= +body:has(app-callout .info) + app-device-repository:not(:has(.device-repository-content-empty)), +body:has(app-callout .info) app-history:not(:has(.results-content-empty)), +body:has(app-callout .info) app-progress:not(:has(.progress-content-empty)) { + margin-top: 96px; +} + +>>>>>>> main .text-nowrap { white-space: nowrap; } @@ -235,6 +259,7 @@ body:has(app-callout .info):has(app-callout .error) .filter-chip .mat-mdc-focus-indicator::before { border: none; } +<<<<<<< HEAD .version-content, .version-content-update { @@ -247,3 +272,5 @@ body:has(app-callout .info):has(app-callout .error) opacity: var(--mat-text-button-focus-state-layer-opacity); } } +======= +>>>>>>> main diff --git a/testing/unit/run_tests.sh b/testing/unit/run_tests.sh index fe186c8db..e471405b8 100644 --- a/testing/unit/run_tests.sh +++ b/testing/unit/run_tests.sh @@ -20,7 +20,7 @@ # Move into the root directory of test-run pushd ../../ >/dev/null 2>&1 -echo "Root Dir: $PWD" +echo "Root dir: $PWD" # Add the framework sources PYTHONPATH="$PWD/framework/python/src:$PWD/framework/python/src/common" @@ -31,6 +31,7 @@ PYTHONPATH="$PYTHONPATH:$PWD/modules/test/tls/python/src" PYTHONPATH="$PYTHONPATH:$PWD/modules/test/dns/python/src" PYTHONPATH="$PYTHONPATH:$PWD/modules/test/nmap/python/src" PYTHONPATH="$PYTHONPATH:$PWD/modules/test/ntp/python/src" + # Set the python path with all sources export PYTHONPATH diff --git a/testing/unit/tls/monitor.pcap b/testing/unit/tls/monitor.pcap new file mode 100644 index 0000000000000000000000000000000000000000..52f5034def31520a87f1eeef0a5dba8fd8dec650 GIT binary patch literal 82020 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 L(dozIrWpSp58MF3 literal 0 HcmV?d00001 diff --git a/testing/unit/tls/no_tls.pcap b/testing/unit/tls/no_tls.pcap new file mode 100644 index 0000000000000000000000000000000000000000..557e66b1aa45ba28694f3ece1e6460feea3839c9 GIT binary patch literal 6266 zcmds*dr(w$6vuz73#|Jbr_`v?5p{^1lo@q-=yuNUy6sC(tNvwo=kCDXdq3ab zIp=%My}PFmf4XxR6Eo-La4;rHvWdHoUgBHn7ZUEvv8$FR?B`w5U^l_h=3ix1MFj zTcFf=SML60jXcGf4cBxUDpR6(^9Q<;`c_);FW7DTwty_Jys{1uYCij!w~ zleerV$j>nml6PkX5ZT%BBW9=PwktcZYTd8BVQc-&PMIq^iP-^cAtVNOpE?wDoI$0N zJswKNwe?%p6G{*R)B)asxSfTB1=;r}jhBR=0Anh#9pamODS)VnxfL^~(Ks`=-6Ygx zcOQ{Cs6LYC(d0Hxj`1cBUL(j536eL>2qbC}y%IC^@^n|GVAZ;Y*LU|3nR0jRLZK$8 z6l@J7YBFvyDlIJVP%`G98oWj*x!2^+d)FlNSRgwK6~bM_3g2)HxOL>opOx^ba!!A1 z=rz&b4#z;>xS$GlKvI$wnQJo4Oi5QwQl;nR2ItF0U-L z)>bK`3TZ#2S9yjE^a&oQ{eKW>#6Td?W!o-dFLVz$d*Sj6LYFOXCVBxJiz%E%le;+? zydun0C%L7GAcI4ZJa$14;r$Qxq4#^Ac6lGz#^PsNn*8&=DA?Egs2cii5YgKkkD{tQ z$U{|En6|u`P<8KZGxoMzJOE0Kzmw*BlAG_=V{SeSG(;sK%=dX5TI9qYr$zQA3+8K& zAS?nYMeeIjEHWojv!?>rnE z)ibJxX(~Tr>@7H--_DsNIU_qSQlpLwsIZn4SHP!rkX9yz$lxl}Fb4!tw~k zt5F{N+GRUfwJub0WRS3(`CzRX`{*JG~hfvi) z)nsKaW^Sm@nYoS)LQN(F6Pbhfki3Q_|HaAIy~+6l1R3H%a#)#^$ke6fn5pIrSEgXq z#P^4m0d7bj2gCRZP%Yl7q(H8P?mxf?M%@oHCgVAaO&`>GET*>QL8 zX5X5i>Tg?RL`}Npqw2>?JydlgzZvrPDI`;<$sJItxg%v}nA^Df+z68FlW<5I7kk_Y zBI?J($#^>7~_$?0WYbidbLIZjUWf^;i7w#MXiZ1Xaq7p92`$3oX(R=%Uj?{Tuxo7^TN z$anKSVvU?|WlJl%vik*>D`C~TOR3YuL@&5cidTet2F7rFmz;V$iQ;$r>2;4Oc|*Lli8RGFJp=U zUj_qXDkefL$3(JA)VxbPA0+*pA4vZ!mZZmUdWlDk9)PZXiKJ^deSsIyHnFoN}2WEX0=M!}K5dr0niUqQ^lXD(n@FT3jMYFM@I#Y%e@(bevAut=DL zsI;j=L3Q#Eypy+J1s=VV#osE3S#@DFM)lz?kEo10I-1TAQMu2mi@vjp>Dn!co#YqM OIPNj{P5xoOi2egpc}m&< literal 0 HcmV?d00001 diff --git a/testing/unit/tls/unsupported_tls.pcap b/testing/unit/tls/unsupported_tls.pcap new file mode 100644 index 0000000000000000000000000000000000000000..08e6c3c049bb1882497b3755a452333784de24de GIT binary patch literal 14904 zcmdU$3s{s@8pprE0Y+fZ&ulZX7EM_V)By%WMB_3j-oUs>UP}=X<)RQ^t0}bw_GCA^ zc*!2nji+??46l-1^!+bo+YC~y zBuy}_kfcI+>SzN!Dtvx?R|;7ZCWRde%9!<3F(Ckvx)c=^xn<<$W@M#zNz2U!TDRBB z`qN30zT!*Cf=DZ->7{Y>ems>JN<0=RB71hE6zNv@1ft-ILs`1YxD!8Cvp}1!Nb(B<0xL&b?M>`@`5ioGM__)Bt=SvZd>a>1zlHpC@Zx3v$;gyv!O>@ zTfHkIKLhfctMlDJC$a(LFNqvYk??fTY|c(&nu|4>_Ygg!xV!F3syk`aF})W-2Jv4f z^wL;@;pspekv)eI7ds{PBBFOYu^Gg>yXYhrmq`FG{Yoe`oq?BWz%@*&%t^gulX`Nz zt2%kUtme<2rK#a||4dC;GpMXJl)NO*P^1!V0F|^E8gD}^VZ<3ui82wVI}-1nz-gq3 ztD02i?71xKCpB3gpseTd1N32c=!C|8@f=Z`bt%(0U88XxWqp8UJ*8cvA7y>%DiQad z<)$aEF=B5CX_WV-LL-)0?MNv^8o1lbZzZiRw!oY(F_7>3R!A;oK6s%K9UaP zO%q)Owy@!Is)F43qumxrb=b*sek(g@3mJ+nAW}qvt2CF^0-nm)Da(S{!XwpxN2J4z zTqMiNlGQH?B2f-xK=hr6>!t2~?$@?O4lr~_07>%IBWg&htH6vBvN3O7%dyRyk``U% z)|@N#xZcr>cD3Slm=VZJ{>G8{`QyZlN?JaN={<$$4KSkvv34_hBW1mhsbN`xO61IFcOMX~W(06Gfdx_*GH|{I ze4a_=%xL$0HmO+&ZfYW5R`aw~SeC0Ewl7Oo)~Qt1^H`Rb*C@-9Xd_JxyZb=nZHTWj z;v}a;GNa3@J579z5fe1TX{7N2)A%|^ybl^T@>%oNVNO`Y>X@gg;{~eYG|iBQBlBxS zG&gY5lP5;RR}fJS3IY*JZhfp`Mw^-imO=YH$kWB-t&AL~CAVG_kZB2n{Q3kpff)_` z4J=~Xc)LZA>aZ2dHZ=<@LfxaxRm=#HymQ?IX4HQ^BF%k-i)2YT(t1%4No_{oIhqlo zjw)~yn9+bFjB@n~+bEYBbd{g4%qw(mM%4i}GXmM?pqun1y@01qnz_8KMP;sskID3^ zJmq?Y&qdw$ZEY>h{oS*qorbiDgOg&T5@X_gAM}k&PM$P0a7duhBQ7B+IovlWc=(W@ zkPz$B6dpL-WHNe8jEWEU?U$cFXJPo9%>1<6!t}g;^y(wwzH}ijE6B^CpUlb{oL!Lh zIK3k;Jw0b|ZeB)setKSEW?DM?VK}`xB`G#>aMYOCc)Dl|>nVL>=H=yPrwx3?q%pnZ`y(;%Q!^cF0p%9an1VxSZ-3 zrWx`~WPY8pmj5nXhdtOjy!JC+he$M_gD-Oh6`U2Kj;6?gG<)dkake+%N2=PpU1mdT%c4nCa`h9ZermeO_@F zY-+1&5cQfn7d33=n8oFSsOn8E9-Eq%9+93~?Jn3}n&L5?&wi>*XD@xjKwahX@KX=k zwwKwT*>Al4_0kiz?FHmLvO!Je?ZN808-1VybX{e`z`cJxJDTYJaNW98yX%_o|8oH7 za9xo5_b{l9ho490rUa(>m`1Zd(Z^s3&OV?lY9g)$8N|R|27&7~O=85uPKo5YvyZeB z*MVqtU4XX{_|~r5^e_W|p#cXmspPsUsSFI_<(D}kUsiK|IUFr#nWn5`sH{P7G(&|V zm1It&0<7x*aWf-6>6A#WYoH~7a||`{2eHO?8F8tG7)Kg|na1Bc5+8eo%UV0+iL8#F zYw8$Gb&S&t`7Y>ep*pVlTIjlWkp_9n)t|ZRBGK-?+&bh-7x7^zl}@gG7o~%ryceyw z?)CtIHkts)u|MP#;?ti2@ENkrcfDZcK9HptZ zMZ)O3lc<9H}z{B{T)%)zbG1$K^HNdcb!wFvt%jt(pC0( z@AsLI=y<|V^DJJ+2?NNlb?JIr*Hs^PmU@kPx+03`^WnNL)9sS2*VXSI^dD10&9iV_ zkd6AT0xKKT#56Z+G|wk`G?t+KxU*&x$RO@;?<#QJLCuW#ol_#$>(-QkXmwqH^STP9 zUSi;j8t@_}mFsnD%574=UcwPIt{eO|9BsEn)kmVN(Nxw&aI~sA#nJTpA2d=)%b@W# z#0`uX!z3gCwa<9z6#UzoDP?Z0y-61?A8l^bEb9E}(}YdTc`S z;2=||YgTUBtSox97_WPfjnGwy5%20Qx|i-rm&jAD{LFU~B)U)L{KY;D_?1vZ(+Zjr z@=GZgGr~*Z=rm!%I@)` zI?TuLNvpu))!lT2vYQ}MIz_tmZZh*aBKaTUB3ah2$hE z-Aw=p3`e<5e0U za%!SAQArO$<86o^FrvvRk#>{DD~`n2xtvCRp_>ywV_EmqWPP4=7H9_OEObI+ekMoM zX1$$h9IDY+Kv}a>`o`vVjh86v+8abnZ{wyXuQB2`=SZV`gS8}Ba@8*>W;D=SU>UTq zL4ICLKF`Qa$X-oOX%UcVA%pCf;UTbyhQ+Xm^09V{Ak~&HN2IiL%p!Dy94!J-Jy&=L zEO6WyM2#%vqK2KwALuQJsvLYUEAR9RbV>pFaQg}>hG63htXpe~;3 z^~h^B*M7`2XJ|ApBzivPy8SNQD1!{*7I#lUYg=2zh>toYat8{=9w1uH2;ln-LaEgZ zoUQ>EF{#{vg7Ge!)DufMB41W>+-5Axwd&h{lr^8qS_CtSq!S>R5z#*N*Bg64<86rS z_J6JV_TNqqf_*^A%*fE7IIO;y6w5q z(bLUwiWwnN-?v3$vS0y5Icr<{D4TSZ?`|4Jo1rr^lKa}s2;{V$UY#=|Q|S0(zaaWm zm{HPNyBTfm^+mP6UhWGs0(mEqZ+&FAAd6|<2ADke5EVz^TxnNe|*VjZ0ze#eNzHN;+|v5jf`Pdo8z(ijDer+JOM zb(j~hKefo(uBl@iW!_6Ouwg)tMrH) zoD^#G{_WdsF3SI{-<7-UfT};R|C3MQA&Pi}EKrb-Kg%amlaB|(is)ok$Y*5FJCx6> z9gVo=m%@AkSU&SK`E+=Emi50w`E+=E9`G0DGnnN=9hB;fC7`6k&zD7|1aSNHgjDaRbh;m}4e(TUm+cA`ezt!lJ8b)tqCwc;2AkMtEZr1>h`DJvHd}2FaJq2x610VYmTDdJSl(cT+c-rjCV_`EkvV z=g|OFwNV|%4RDdB({#nNjXhKc@$u)5NK&!vwgyYO!iPSF@Em=Ge;il5K-b;Yl=#L@ zh>ebojg1~16FVt(?C7Z2c*|(|vcyE;D=JEod?g)XwG9$(NG8fxw(y7k9c+L=Pa1NE zHlz-1u!y)LSeQ>B%O{Pq!%pP0F6{rEkLe*{K0z#>*_wPh)G(l0y<+ZAJ{@Wp5HT-J zm=86{G~Z_ZulYQg@&C@}hvS~2EuOX=`lZ@5tC;!GW+lw z0y%iNcjua|(AO8PPa%45G+Q4&XK%LNNU3_p)KHg(W((wXM80(gla-LhY{O9SjG{#W~=UL5UtG?z&;NNrKU4*`v=Rc;J!>M*K8?Z z5JNxUh?-_={5&)=8|kRm_IbThlyx$dwJ#c(GqgC+Y>~`ORMMwAK+I&sUppmIvvua1 zP7~)d;u9KTDrxM;H2%YpSj=b5+mtzLE~{hvN7bx#>_?fWYKD9RGMB>Wqf>i@fAtW` L%r*6YH`o6H9U8CZ literal 0 HcmV?d00001 From 9243bda86440770bb7cda93cfe43930587279fe5 Mon Sep 17 00:00:00 2001 From: Jacob Boddey Date: Tue, 19 Mar 2024 10:37:56 +0000 Subject: [PATCH 2/5] Remove analytics disclaimer --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 78d878cfe..fcce0752e 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,6 @@ [![CodeQL](https://github.com/google/testrun/actions/workflows/github-code-scanning/codeql/badge.svg?branch=main)](https://github.com/google/testrun/actions/workflows/github-code-scanning/codeql) [![Testrun test suite](https://github.com/google/testrun/actions/workflows/testing.yml/badge.svg?branch=main&event=push)](https://github.com/google/testrun/actions/workflows/testing.yml) -Disclaimer: Testrun uses Google Analytics to learn about how our users use Testrun. By installing and running Testrun, you understand and accept the Terms of Service found [here](https://policies.google.com/technologies/partner-sites). - ## Introduction :wave: Testrun automates specific test cases to verify network and security functionality in IoT devices. It is an open source tool which allows manufacturers of IP capable devices to test their devices for the purposes of Device Qualification within the BOS program. From 76614b46707615d23176c66dc9253cfe74349e8c Mon Sep 17 00:00:00 2001 From: kurilova Date: Tue, 19 Mar 2024 13:30:25 +0000 Subject: [PATCH 3/5] Resolve UI merge conflicts --- modules/ui/package-lock.json | 21334 ++++++---------- modules/ui/package.json | 37 - modules/ui/src/app/app-routing.module.ts | 14 - modules/ui/src/app/app.component.html | 71 - modules/ui/src/app/app.component.scss | 12 - modules/ui/src/app/app.component.spec.ts | 238 - modules/ui/src/app/app.component.ts | 158 - modules/ui/src/app/app.module.ts | 10 - .../bypass/bypass.component.spec.ts | 19 - .../app/components/bypass/bypass.component.ts | 11 - .../components/callout/callout.component.scss | 10 - .../components/callout/callout.component.ts | 30 - .../delete-report.component.html | 24 - .../delete-report.component.scss | 26 - .../delete-report.component.spec.ts | 110 - .../delete-report/delete-report.component.ts | 91 - .../device-item/device-item.component.html | 10 - .../device-item/device-item.component.scss | 32 - .../device-item/device-item.component.spec.ts | 21 - .../device-item/device-item.component.ts | 13 - .../download-report.component.html | 7 - .../download-report.component.spec.ts | 7 - .../download-report.component.ts | 7 - .../filter-chips/filter-chips.component.html | 54 - .../filter-chips/filter-chips.component.scss | 76 - .../filter-chips.component.spec.ts | 138 - .../filter-chips/filter-chips.component.ts | 66 - .../filter-dialog.component.html | 79 - .../filter-dialog.component.scss | 66 - .../filter-dialog.component.spec.ts | 208 - .../filter-dialog/filter-dialog.component.ts | 233 - .../general-settings.component.html | 163 - .../general-settings.component.spec.ts | 330 - .../general-settings.component.ts | 234 - .../spinner/spinner.component.spec.ts | 7 - .../update-dialog.component.html | 46 - .../update-dialog.component.scss | 43 - .../update-dialog.component.spec.ts | 107 - .../update-dialog/update-dialog.component.ts | 44 - .../components/version/version.component.html | 19 - .../components/version/version.component.scss | 24 - .../version/version.component.spec.ts | 10 - .../components/version/version.component.ts | 42 - .../device-form/device-form.component.html | 110 - .../device-form/device-form.component.spec.ts | 472 - .../device-repository.component.html | 47 - .../device-repository.component.spec.ts | 343 - .../device-repository.component.ts | 167 - .../device-repository.module.ts | 60 - .../ui/src/app/history/history.component.html | 230 - .../src/app/history/history.component.spec.ts | 379 - .../ui/src/app/history/history.component.ts | 320 - modules/ui/src/app/history/history.module.ts | 45 - .../src/app/interceptors/error.interceptor.ts | 10 - modules/ui/src/app/mocks/progress.mock.ts | 3 - modules/ui/src/app/model/callout-type.ts | 3 - modules/ui/src/app/model/device.ts | 3 - modules/ui/src/app/model/routes.ts | 4 - modules/ui/src/app/model/setting.ts | 8 - .../device-form/device-form.component.scss | 4 - .../device-form/device-form.component.ts | 59 - .../device-form/device.validators.ts | 18 - .../devices/device-repository.component.scss | 5 - .../delete-report.component.scss | 22 - .../filter-dialog.component.scss | 15 - .../app/pages/reports/history.component.scss | 10 - .../settings/general-settings.component.scss | 84 - .../only-different-values.validator.ts | 3 - .../progress-initiate-form.component.html | 12 - .../progress-initiate-form.component.scss | 5 - .../progress-initiate-form.component.spec.ts | 19 - .../progress-status-card.component.scss | 5 - .../progress-status-card.component.spec.ts | 46 - .../app/pages/testrun/progress.component.html | 4 - .../app/pages/testrun/progress.component.scss | 14 - .../progress-initiate-form.component.ts | 141 - .../progress-status-card.component.html | 112 - .../progress-status-card.component.ts | 97 - .../progress-table.component.html | 65 - .../progress-table.component.spec.ts | 113 - .../progress-table.component.ts | 37 - .../app/progress/progress.component.spec.ts | 643 - .../ui/src/app/progress/progress.component.ts | 270 - .../ui/src/app/progress/progress.module.ts | 61 - .../app/services/notification.service.spec.ts | 33 - .../src/app/services/notification.service.ts | 32 - .../ui/src/app/services/state.service.spec.ts | 39 - modules/ui/src/app/services/state.service.ts | 17 - .../src/app/services/test-run.service.spec.ts | 219 - .../ui/src/app/services/test-run.service.ts | 147 - modules/ui/src/index.html | 6 - modules/ui/src/styles.scss | 27 - 92 files changed, 7873 insertions(+), 20996 deletions(-) delete mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.html delete mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.scss delete mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.spec.ts delete mode 100644 modules/ui/src/app/components/delete-report/delete-report.component.ts delete mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.html delete mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.scss delete mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts delete mode 100644 modules/ui/src/app/components/filter-chips/filter-chips.component.ts delete mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.html delete mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss delete mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts delete mode 100644 modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts delete mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.html delete mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.spec.ts delete mode 100644 modules/ui/src/app/components/general-settings/general-settings.component.ts delete mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.html delete mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss delete mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts delete mode 100644 modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts delete mode 100644 modules/ui/src/app/device-repository/device-form/device-form.component.html delete mode 100644 modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts delete mode 100644 modules/ui/src/app/device-repository/device-repository.component.html delete mode 100644 modules/ui/src/app/device-repository/device-repository.component.spec.ts delete mode 100644 modules/ui/src/app/device-repository/device-repository.component.ts delete mode 100644 modules/ui/src/app/device-repository/device-repository.module.ts delete mode 100644 modules/ui/src/app/history/history.component.html delete mode 100644 modules/ui/src/app/history/history.component.spec.ts delete mode 100644 modules/ui/src/app/history/history.component.ts delete mode 100644 modules/ui/src/app/history/history.module.ts delete mode 100644 modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.ts delete mode 100644 modules/ui/src/app/progress/progress-status-card/progress-status-card.component.html delete mode 100644 modules/ui/src/app/progress/progress-status-card/progress-status-card.component.ts delete mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.html delete mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.spec.ts delete mode 100644 modules/ui/src/app/progress/progress-table/progress-table.component.ts delete mode 100644 modules/ui/src/app/progress/progress.component.spec.ts delete mode 100644 modules/ui/src/app/progress/progress.component.ts delete mode 100644 modules/ui/src/app/progress/progress.module.ts delete mode 100644 modules/ui/src/app/services/state.service.spec.ts delete mode 100644 modules/ui/src/app/services/state.service.ts diff --git a/modules/ui/package-lock.json b/modules/ui/package-lock.json index a37802507..3bdd776b1 100644 --- a/modules/ui/package-lock.json +++ b/modules/ui/package-lock.json @@ -8,7 +8,6 @@ "name": "test-run-ui", "version": "0.0.0", "dependencies": { -<<<<<<< HEAD "@angular/animations": "^17.0.8", "@angular/cdk": "^17.0.4", "@angular/common": "^17.0.8", @@ -40,36 +39,6 @@ "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", -======= - "@angular/animations": "^16.2.12", - "@angular/cdk": "^16.2.13", - "@angular/common": "^16.2.12", - "@angular/compiler": "^16.2.12", - "@angular/core": "^16.2.12", - "@angular/forms": "^16.2.12", - "@angular/material": "^16.2.13", - "@angular/platform-browser": "^16.2.12", - "@angular/platform-browser-dynamic": "^16.2.12", - "@angular/router": "^16.2.12", - "ngx-mask": "^16.4.2", - "rxjs": "~7.8.0", - "tslib": "^2.6.2", - "zone.js": "~0.13.3" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^16.2.12", - "@angular-eslint/builder": "16.2.0", - "@angular-eslint/eslint-plugin": "16.2.0", - "@angular-eslint/eslint-plugin-template": "16.2.0", - "@angular-eslint/schematics": "16.2.0", - "@angular-eslint/template-parser": "16.2.0", - "@angular/cli": "~16.1.8", - "@angular/compiler-cli": "^16.2.12", - "@types/jasmine": "~4.3.6", - "@typescript-eslint/eslint-plugin": "5.62.0", - "@typescript-eslint/parser": "5.62.0", - "eslint": "^8.56.0", ->>>>>>> main "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jasmine-core": "~4.6.0", @@ -78,7 +47,6 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", -<<<<<<< HEAD "prettier": "^3.2.5", "prettier-eslint": "^16.3.0", "typescript": "~5.2.2" @@ -91,20 +59,6 @@ "dev": true, "engines": { "node": ">=0.10.0" -======= - "prettier": "^3.1.1", - "prettier-eslint": "^16.2.0", - "typescript": "~5.1.3" ->>>>>>> main - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { @@ -121,21 +75,12 @@ } }, "node_modules/@angular-devkit/architect": { -<<<<<<< HEAD "version": "0.1702.2", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1702.2.tgz", "integrity": "sha512-qBvif8/NquFUqVQgs4U+8wXh/rQZv+YlYwg6eDZly1bIaTd/k9spko/seTtNT1OpK/Be+GLo5IbiQ7i2SON3iQ==", "dev": true, "dependencies": { "@angular-devkit/core": "17.2.2", -======= - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.12.tgz", - "integrity": "sha512-19Fwwfx+KvJ01SyI6cstRgqT9+cwer8Ro1T27t1JqlGyOX8tY3pV78ulwxy2+wCzPjR18V6W7cb7Cv6fyK4xog==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.2.12", ->>>>>>> main "rxjs": "7.8.1" }, "engines": { @@ -145,7 +90,6 @@ } }, "node_modules/@angular-devkit/build-angular": { -<<<<<<< HEAD "version": "17.2.2", "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.2.2.tgz", "integrity": "sha512-K55xBiWBfxD4wmxLR2viOPbBryOk6YaZeNr72IMkp1yIrIy1BES6LDJi7R9fDW7+TprqZdM4B91Tkc+BCwYQzQ==", @@ -181,51 +125,11 @@ "https-proxy-agent": "7.0.2", "inquirer": "9.2.14", "jsonc-parser": "3.2.1", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.12.tgz", - "integrity": "sha512-VVGKZ0N3gyR0DP7VrcZl4io3ruWYT94mrlyJsJMLlrYy/EX8JCvqrJC9c+dscrtKjhZzjwdyhszkJQY4JfwACA==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "2.2.1", - "@angular-devkit/architect": "0.1602.12", - "@angular-devkit/build-webpack": "0.1602.12", - "@angular-devkit/core": "16.2.12", - "@babel/core": "7.22.9", - "@babel/generator": "7.22.9", - "@babel/helper-annotate-as-pure": "7.22.5", - "@babel/helper-split-export-declaration": "7.22.6", - "@babel/plugin-proposal-async-generator-functions": "7.20.7", - "@babel/plugin-transform-async-to-generator": "7.22.5", - "@babel/plugin-transform-runtime": "7.22.9", - "@babel/preset-env": "7.22.9", - "@babel/runtime": "7.22.6", - "@babel/template": "7.22.5", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "16.2.12", - "@vitejs/plugin-basic-ssl": "1.0.1", - "ansi-colors": "4.1.3", - "autoprefixer": "10.4.14", - "babel-loader": "9.1.3", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.21.5", - "chokidar": "3.5.3", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.20", - "css-loader": "6.8.1", - "esbuild-wasm": "0.18.17", - "fast-glob": "3.3.1", - "guess-parser": "0.4.22", - "https-proxy-agent": "5.0.1", - "inquirer": "8.2.4", - "jsonc-parser": "3.2.0", ->>>>>>> main "karma-source-map-support": "1.4.0", "less": "4.2.0", "less-loader": "11.1.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.2.1", -<<<<<<< HEAD "magic-string": "0.30.7", "mini-css-extract-plugin": "2.8.0", "mrmime": "2.0.0", @@ -253,34 +157,6 @@ "webpack-dev-middleware": "6.1.1", "webpack-dev-server": "4.15.1", "webpack-merge": "5.10.0", -======= - "magic-string": "0.30.1", - "mini-css-extract-plugin": "2.7.6", - "mrmime": "1.0.1", - "open": "8.4.2", - "ora": "5.4.1", - "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "2.3.1", - "piscina": "4.0.0", - "postcss": "8.4.31", - "postcss-loader": "7.3.3", - "resolve-url-loader": "5.0.0", - "rxjs": "7.8.1", - "sass": "1.64.1", - "sass-loader": "13.3.2", - "semver": "7.5.4", - "source-map-loader": "4.0.1", - "source-map-support": "0.5.21", - "terser": "5.19.2", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "tslib": "2.6.1", - "vite": "4.5.2", - "webpack": "5.88.2", - "webpack-dev-middleware": "6.1.1", - "webpack-dev-server": "4.15.1", - "webpack-merge": "5.9.0", ->>>>>>> main "webpack-subresource-integrity": "5.1.0" }, "engines": { @@ -289,11 +165,7 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { -<<<<<<< HEAD "esbuild": "0.20.0" -======= - "esbuild": "0.18.17" ->>>>>>> main }, "peerDependencies": { "@angular/compiler-cli": "^17.0.0", @@ -346,7 +218,6 @@ } } }, -<<<<<<< HEAD "node_modules/@angular-devkit/build-webpack": { "version": "0.1702.2", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1702.2.tgz", @@ -354,21 +225,6 @@ "dev": true, "dependencies": { "@angular-devkit/architect": "0.1702.2", -======= - "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", - "dev": true - }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1602.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.12.tgz", - "integrity": "sha512-1lmR4jCkxPJuAFXReesEY3CB+/5jSebGE5ry6qJJvNm6kuSc9bzfTytrcwosVY+Q7kAA2ij7kAYw0loGbTjLWA==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1602.12", ->>>>>>> main "rxjs": "7.8.1" }, "engines": { @@ -382,60 +238,9 @@ } }, "node_modules/@angular-devkit/core": { -<<<<<<< HEAD "version": "17.2.2", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.2.2.tgz", "integrity": "sha512-bKMi6bBkEeN4a3qTxCykhrAvE0ESHhKO38Qh1bN/8QSyvKVAEyVAVls5W9IN5GKRHvXgEn9aw+DSzRnPpy9nyw==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.12.tgz", - "integrity": "sha512-o6ziQs+EcEonFezrsA46jbZqkQrs4ckS1bAQj93g5ZjGtieUz8l/U3lclvKpL/iEzWkGVViSYuP2KyW2oqTDiQ==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "picomatch": "2.3.1", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.8.tgz", - "integrity": "sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.1.8", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", - "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", ->>>>>>> main "dev": true, "dependencies": { "ajv": "8.12.0", @@ -459,7 +264,6 @@ } } }, -<<<<<<< HEAD "node_modules/@angular-devkit/schematics": { "version": "17.0.10", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.0.10.tgz", @@ -476,144 +280,6 @@ "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" -======= - "node_modules/@angular-devkit/schematics/node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@angular-eslint/builder": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-16.2.0.tgz", - "integrity": "sha512-SZjXOi3YIjuX2CocuRsR2QH6k1ca9lRO6IMm0YIYMmBPFCRP2KFHkL6aQnXM6DSaymQNN2TXfpuvUd45NxhU1w==", - "dev": true, - "dependencies": { - "@nx/devkit": "16.5.1", - "nx": "16.5.1" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.2.0.tgz", - "integrity": "sha512-ct9orDYxkMl2+uvM7UBfgV28Dq57V4dEs+Drh7cD673JIMa6sXbgmd0QEtm8W3cmyK/jcTzmuoufxbH7hOxd6g==", - "dev": true - }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-16.2.0.tgz", - "integrity": "sha512-zdiAIox1T+B71HL+A8m+1jWdU34nvPGLhCRw/uZNwHzknsF4tYzNQ9W7T/SC/g/2s1yT2yNosEVNJSGSFvunJg==", - "dev": true, - "dependencies": { - "@angular-eslint/utils": "16.2.0", - "@typescript-eslint/utils": "5.62.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-16.2.0.tgz", - "integrity": "sha512-YFdQ6hHX6NlQj0lfogZwfyKjU8pqkJU+Zsk0ehjlXP8VfKFVmDeQT5/Xr6Df9C8pveC3hvq6Jgd8vo67S9Enxg==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "@angular-eslint/utils": "16.2.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "aria-query": "5.3.0", - "axobject-query": "3.2.1" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/schematics": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-16.2.0.tgz", - "integrity": "sha512-2JUVR7hAKx37mgWeDjvyWEMH5uSeeksYuaQT5wwlgIzgrO4BNFuqs6Rgyp2jiYa7BFMX/qHULSa+bSq5J5ceEA==", - "dev": true, - "dependencies": { - "@angular-eslint/eslint-plugin": "16.2.0", - "@angular-eslint/eslint-plugin-template": "16.2.0", - "@nx/devkit": "16.5.1", - "ignore": "5.2.4", - "nx": "16.5.1", - "strip-json-comments": "3.1.1", - "tmp": "0.2.1" - }, - "peerDependencies": { - "@angular/cli": ">= 16.0.0 < 17.0.0" - } - }, - "node_modules/@angular-eslint/schematics/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/@angular-eslint/template-parser": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-16.2.0.tgz", - "integrity": "sha512-v2jVKTy2wN7iM9nHpBkxLn2wfL8jSl4IlPrXThIqj8No2VHtpLQZPKuXbGPUXQX05VS2Mj5feScQ36ZVGS8Rbw==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "eslint-scope": "^7.0.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@angular-eslint/utils": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-16.2.0.tgz", - "integrity": "sha512-NxMRwnlIgzmbJQfWkfd9y3Sz0hzjFdK5LH44i+3D5NhpPdZ6SzwHAjMYWoYsmmNQX5tlDXoicYF9Mz9Wz8DJ/A==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "16.2.0", - "@typescript-eslint/utils": "5.62.0" - }, - "peerDependencies": { - "eslint": "^7.20.0 || ^8.0.0", - "typescript": "*" ->>>>>>> main } }, "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { @@ -772,15 +438,9 @@ } }, "node_modules/@angular/animations": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.2.3.tgz", "integrity": "sha512-eQcN6hC/dXISEYC/TjRuQJgfdZieBROBlXrS+BxRbsy9T4/QeKxChC3yiNxTmdxl5mvjLKvQTXHR8X0AWc07/Q==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.12.tgz", - "integrity": "sha512-MD0ElviEfAJY8qMOd6/jjSSvtqER2RDAi0lxe6EtUacC1DHCYkaPrKW4vLqY+tmZBg1yf+6n+uS77pXcHHcA3w==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -788,7 +448,6 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/core": "17.2.3" } }, @@ -796,15 +455,6 @@ "version": "17.2.1", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.2.1.tgz", "integrity": "sha512-9cWV9MyWnpImns/WQApgoQBKblXA9Zx2CpCkDNipRgx9RyvGrvCLjpEfwQI4HjpPAQDI1trsbeJKihzgz4tFgw==", -======= - "@angular/core": "16.2.12" - } - }, - "node_modules/@angular/cdk": { - "version": "16.2.13", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.13.tgz", - "integrity": "sha512-8kn2X2yesvgfIbCUNoS9EDjooIx9LwEglYBbD89Y/do8EeN/CC3Tn02gqSrEfgMhYBLBJmHXbfOhbDDvcvOCeg==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -818,7 +468,6 @@ } }, "node_modules/@angular/cli": { -<<<<<<< HEAD "version": "17.0.10", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.0.10.tgz", "integrity": "sha512-52rd8KmOMe3NJDp/wA+Mwj21qd4HR8fuLtfrErgVnZaJZKX2Bzi/z7FHQD3gdgMAdzUiG0OJWGM0h75Ls9X6Gw==", @@ -828,17 +477,6 @@ "@angular-devkit/core": "17.0.10", "@angular-devkit/schematics": "17.0.10", "@schematics/angular": "17.0.10", -======= - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.1.8.tgz", - "integrity": "sha512-amOIHMq8EvixhnI+do5Bcy6IZSFAJx0njhhLM4ltDuNUczH8VH0hNegZKxhb8K87AMO8jITFM+NLrzccyghsDQ==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1601.8", - "@angular-devkit/core": "16.1.8", - "@angular-devkit/schematics": "16.1.8", - "@schematics/angular": "16.1.8", ->>>>>>> main "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.3", "ini": "4.1.1", @@ -864,7 +502,6 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { -<<<<<<< HEAD "version": "0.1700.10", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1700.10.tgz", "integrity": "sha512-JD/3jkdN1jrFMIDEk9grKdbjutIoxUDMRazq1LZooWjTkzlYk09i/s6HwvIPao7zvxJfelD6asTPspgkjOMP5A==", @@ -1039,85 +676,6 @@ "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.2.3.tgz", "integrity": "sha512-XR3rWS4W7/+RknyJMUUo9E81mSeyUznpclqTZ+Hy7+i4Naeso0qcRaIyr6JJmB5UGvlnfT1MlH9Fj78Dc80NEw==", -======= - "version": "0.1601.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1601.8.tgz", - "integrity": "sha512-kOXVGwsQnZvtz2UZNefcEy64Jiwq0eSoQUeozvDXOaYRJABLjPKI2YaarvKC9/Z1SGLuje0o/eRJO4T8aRk9rQ==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.1.8", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", - "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular/cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@angular/cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@angular/common": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", - "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1125,24 +683,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/core": "17.2.3", -======= - "@angular/core": "16.2.12", ->>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.2.3.tgz", "integrity": "sha512-U2okLZ+4ipD5zTv32pMp+RsrM3kkP0XneSsIMPRpYZZfKgfnGLIwkRx6FoVoBwByugng6lBG/PiIe8DhRU/HFg==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", - "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1150,11 +698,7 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/core": "17.2.3" -======= - "@angular/core": "16.2.12" ->>>>>>> main }, "peerDependenciesMeta": { "@angular/core": { @@ -1163,21 +707,12 @@ } }, "node_modules/@angular/compiler-cli": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.2.3.tgz", "integrity": "sha512-mATybangypneXwO270VQeIw3N0avzc2Lpvdb8nm9WZYj23AcTUzpUUKOn63HtJdwMT5J2GjkyZFSRXisiPmpkA==", "dev": true, "dependencies": { "@babel/core": "7.23.9", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", - "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", - "dev": true, - "dependencies": { - "@babel/core": "7.23.2", ->>>>>>> main "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", @@ -1195,99 +730,14 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/compiler": "17.2.3", "typescript": ">=5.2 <5.4" -======= - "@angular/compiler": "16.2.12", - "typescript": ">=4.9.3 <5.2" ->>>>>>> main } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/compiler-cli/node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@angular/core": { -<<<<<<< HEAD - "version": "17.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.2.3.tgz", - "integrity": "sha512-DU+RdUB4E4I489R2P2hOrgkCDJNXlVaTzYixpgeDnuldCIYM0MatEzjor9DYNL3EDCayHF+M4HlVOcn6T/IVPQ==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", - "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", ->>>>>>> main + "node_modules/@angular/core": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.2.3.tgz", + "integrity": "sha512-DU+RdUB4E4I489R2P2hOrgkCDJNXlVaTzYixpgeDnuldCIYM0MatEzjor9DYNL3EDCayHF+M4HlVOcn6T/IVPQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -1300,15 +750,9 @@ } }, "node_modules/@angular/forms": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.2.3.tgz", "integrity": "sha512-v+/6pimht808F5XpmVTNV4/109s+A7m3nadQP97qvIDsrtwrPPZR7cST+DRioG2C41VwtjXM0HVbIon/3ydo6A==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", - "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1316,20 +760,13 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/core": "17.2.3", "@angular/platform-browser": "17.2.3", -======= - "@angular/common": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12", ->>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { -<<<<<<< HEAD "version": "17.2.1", "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.2.1.tgz", "integrity": "sha512-NLQJkX4XiwIm32dGdNseoc+ARn6JvuB2xMY5XfWTtjJBbQaPk5sIvjH4wsAEeYqDKtZbRCjxGwRz0K1djyaVqQ==", @@ -1390,81 +827,13 @@ "@angular/core": "^17.0.0 || ^18.0.0", "@angular/forms": "^17.0.0 || ^18.0.0", "@angular/platform-browser": "^17.0.0 || ^18.0.0", -======= - "version": "16.2.13", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-16.2.13.tgz", - "integrity": "sha512-7gP9KlaVZGpCeJlwXlD7puTiafAHYAbgYoODEQLbPCiAL/woFFDvM+DCdos7lmCBMyt6+10bkrPvz8cVfyTfQg==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/auto-init": "15.0.0-canary.bc9ae6c9c.0", - "@material/banner": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/button": "15.0.0-canary.bc9ae6c9c.0", - "@material/card": "15.0.0-canary.bc9ae6c9c.0", - "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", - "@material/chips": "15.0.0-canary.bc9ae6c9c.0", - "@material/circular-progress": "15.0.0-canary.bc9ae6c9c.0", - "@material/data-table": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dialog": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/drawer": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/fab": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", - "@material/form-field": "15.0.0-canary.bc9ae6c9c.0", - "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", - "@material/image-list": "15.0.0-canary.bc9ae6c9c.0", - "@material/layout-grid": "15.0.0-canary.bc9ae6c9c.0", - "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/linear-progress": "15.0.0-canary.bc9ae6c9c.0", - "@material/list": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", - "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", - "@material/radio": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/segmented-button": "15.0.0-canary.bc9ae6c9c.0", - "@material/select": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/slider": "15.0.0-canary.bc9ae6c9c.0", - "@material/snackbar": "15.0.0-canary.bc9ae6c9c.0", - "@material/switch": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-bar": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-scroller": "15.0.0-canary.bc9ae6c9c.0", - "@material/textfield": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tooltip": "15.0.0-canary.bc9ae6c9c.0", - "@material/top-app-bar": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/animations": "^16.0.0 || ^17.0.0", - "@angular/cdk": "16.2.13", - "@angular/common": "^16.0.0 || ^17.0.0", - "@angular/core": "^16.0.0 || ^17.0.0", - "@angular/forms": "^16.0.0 || ^17.0.0", - "@angular/platform-browser": "^16.0.0 || ^17.0.0", ->>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.2.3.tgz", "integrity": "sha512-bFi+H8avyCjwSBy+zpOKmqx852MRH8fkuZa4XgwKCPJRay8BfSCjHdtIo3eokUNPMu9JsyXM7HYKIfzLu5y6LA==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", - "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1472,15 +841,9 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/animations": "17.2.3", "@angular/common": "17.2.3", "@angular/core": "17.2.3" -======= - "@angular/animations": "16.2.12", - "@angular/common": "16.2.12", - "@angular/core": "16.2.12" ->>>>>>> main }, "peerDependenciesMeta": { "@angular/animations": { @@ -1489,15 +852,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { -<<<<<<< HEAD "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.2.3.tgz", "integrity": "sha512-K8CsHbmG2nvV1jrNN9PYxyA0zJNoIWp+qf2udvPhG8rJ+Pyw61qmptrarpQUUkr8ONOtjwtOsnKa9/w+15nExw==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", - "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1505,7 +862,6 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/compiler": "17.2.3", "@angular/core": "17.2.3", @@ -1516,18 +872,6 @@ "version": "17.2.3", "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.2.3.tgz", "integrity": "sha512-8UPjMzI98xZ6cDNm0MzHd9hFq6aOQJGmgxKDUPIG2h74glRwwbiewpo5hPo2EGIF8BLvQmmAm9ytr5zesHu0cg==", -======= - "@angular/common": "16.2.12", - "@angular/compiler": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12" - } - }, - "node_modules/@angular/router": { - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", - "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" }, @@ -1535,34 +879,19 @@ "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { -<<<<<<< HEAD "@angular/common": "17.2.3", "@angular/core": "17.2.3", "@angular/platform-browser": "17.2.3", -======= - "@angular/common": "16.2.12", - "@angular/core": "16.2.12", - "@angular/platform-browser": "16.2.12", ->>>>>>> main "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@babel/code-frame": { -<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, "dependencies": { "@babel/highlight": "^7.23.4", -======= - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", ->>>>>>> main "chalk": "^2.4.2" }, "engines": { @@ -1570,22 +899,15 @@ } }, "node_modules/@babel/compat-data": { -<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", -======= - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", ->>>>>>> main "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", @@ -1605,27 +927,6 @@ "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", -======= - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", - "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", ->>>>>>> main "semver": "^6.3.1" }, "engines": { @@ -1652,15 +953,9 @@ } }, "node_modules/@babel/generator": { -<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", -======= - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", - "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", ->>>>>>> main "dev": true, "dependencies": { "@babel/types": "^7.23.6", @@ -1697,7 +992,6 @@ } }, "node_modules/@babel/helper-compilation-targets": { -<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", @@ -1706,16 +1000,6 @@ "@babel/compat-data": "^7.23.5", "@babel/helper-validator-option": "^7.23.5", "browserslist": "^4.22.2", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", ->>>>>>> main "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -1733,7 +1017,6 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { -<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.0.tgz", "integrity": "sha512-QAH+vfvts51BCsNZ2PhY6HAggnlS6omLLFTsIpeqZk/MmJ6cW7tgz5yRv0fMJThcr6FmbMrENh1RgrWPTYA76g==", @@ -1745,19 +1028,6 @@ "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", ->>>>>>> main "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -1805,15 +1075,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { -<<<<<<< HEAD "version": "0.5.0", "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", -======= - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -1843,23 +1107,6 @@ "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" -<<<<<<< HEAD -======= - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" ->>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -1902,15 +1149,9 @@ } }, "node_modules/@babel/helper-module-transforms": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -2036,15 +1277,9 @@ } }, "node_modules/@babel/helper-validator-option": { -<<<<<<< HEAD "version": "7.23.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", ->>>>>>> main "dev": true, "engines": { "node": ">=6.9.0" @@ -2059,30 +1294,12 @@ "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", "@babel/types": "^7.22.19" -<<<<<<< HEAD -======= - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" ->>>>>>> main }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { -<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.0.tgz", "integrity": "sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==", @@ -2091,45 +1308,15 @@ "@babel/template": "^7.24.0", "@babel/traverse": "^7.24.0", "@babel/types": "^7.24.0" -======= - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" ->>>>>>> main }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", -======= - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", @@ -2141,15 +1328,9 @@ } }, "node_modules/@babel/parser": { -<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.0.tgz", "integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", ->>>>>>> main "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -2159,15 +1340,9 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { -<<<<<<< HEAD "version": "7.23.3", "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.23.3.tgz", "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", -======= - "version": "7.22.15", - "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.22.15.tgz", - "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2180,24 +1355,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz", - "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", -<<<<<<< HEAD "@babel/plugin-transform-optional-chaining": "^7.23.3" -======= - "@babel/plugin-transform-optional-chaining": "^7.22.15" ->>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -2206,18 +1371,10 @@ "@babel/core": "^7.13.0" } }, -<<<<<<< HEAD "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.23.7", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", -======= - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -2242,26 +1399,6 @@ "@babel/core": "^7.0.0-0" } }, -<<<<<<< HEAD -======= - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, ->>>>>>> main "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -2513,15 +1650,9 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", -======= - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz", - "integrity": "sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", @@ -2569,15 +1700,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz", - "integrity": "sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2606,21 +1731,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz", - "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.11", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, @@ -2632,7 +1748,6 @@ } }, "node_modules/@babel/plugin-transform-classes": { -<<<<<<< HEAD "version": "7.23.8", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", @@ -2644,20 +1759,6 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz", - "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", ->>>>>>> main "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -2685,15 +1786,9 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz", - "integrity": "sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -2737,15 +1832,9 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz", - "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2775,15 +1864,9 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz", - "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2797,15 +1880,9 @@ } }, "node_modules/@babel/plugin-transform-for-of": { -<<<<<<< HEAD "version": "7.23.6", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz", - "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2836,15 +1913,9 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz", - "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2873,15 +1944,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz", - "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -2910,21 +1975,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz", - "integrity": "sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { @@ -2935,21 +1991,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "dependencies": { "@babel/helper-module-transforms": "^7.23.3", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz", - "integrity": "sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.0", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-simple-access": "^7.22.5" }, @@ -2961,7 +2008,6 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", @@ -2969,15 +2015,6 @@ "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz", - "integrity": "sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.0", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-identifier": "^7.22.20" }, @@ -3036,15 +2073,9 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz", - "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3058,15 +2089,9 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz", - "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3080,7 +2105,6 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { -<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz", "integrity": "sha512-y/yKMm7buHpFFXfxVFS4Vk1ToRJDilIa6fKRioB9Vjichv58TDGXTvqV0dN7plobAmTW5eSEGXDngE+Mm+uO+w==", @@ -3091,18 +2115,6 @@ "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", "@babel/plugin-transform-parameters": "^7.23.3" -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz", - "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.22.15" ->>>>>>> main }, "engines": { "node": ">=6.9.0" @@ -3128,15 +2140,9 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz", - "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3150,15 +2156,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", -======= - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz", - "integrity": "sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3173,15 +2173,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", -======= - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz", - "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -3210,7 +2204,6 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { -<<<<<<< HEAD "version": "7.23.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", @@ -3218,15 +2211,6 @@ "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", -======= - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz", - "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.11", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, @@ -3253,15 +2237,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", -======= - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", - "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -3290,28 +2268,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", -======= - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", - "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", -<<<<<<< HEAD "babel-plugin-polyfill-corejs2": "^0.4.8", "babel-plugin-polyfill-corejs3": "^0.9.0", "babel-plugin-polyfill-regenerator": "^0.5.5", -======= - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", ->>>>>>> main "semver": "^6.3.1" }, "engines": { @@ -3407,15 +2373,9 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { -<<<<<<< HEAD "version": "7.23.3", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", -======= - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", - "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -3476,7 +2436,6 @@ } }, "node_modules/@babel/preset-env": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", @@ -3484,15 +2443,6 @@ "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.23.6", -======= - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", - "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-compilation-targets": "^7.22.9", ->>>>>>> main "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", @@ -3517,7 +2467,6 @@ "@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", -<<<<<<< HEAD "@babel/plugin-transform-arrow-functions": "^7.23.3", "@babel/plugin-transform-async-generator-functions": "^7.23.9", "@babel/plugin-transform-async-to-generator": "^7.23.3", @@ -3570,61 +2519,6 @@ "babel-plugin-polyfill-corejs2": "^0.4.8", "babel-plugin-polyfill-corejs3": "^0.9.0", "babel-plugin-polyfill-regenerator": "^0.5.5", -======= - "@babel/plugin-transform-arrow-functions": "^7.22.5", - "@babel/plugin-transform-async-generator-functions": "^7.22.7", - "@babel/plugin-transform-async-to-generator": "^7.22.5", - "@babel/plugin-transform-block-scoped-functions": "^7.22.5", - "@babel/plugin-transform-block-scoping": "^7.22.5", - "@babel/plugin-transform-class-properties": "^7.22.5", - "@babel/plugin-transform-class-static-block": "^7.22.5", - "@babel/plugin-transform-classes": "^7.22.6", - "@babel/plugin-transform-computed-properties": "^7.22.5", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-dotall-regex": "^7.22.5", - "@babel/plugin-transform-duplicate-keys": "^7.22.5", - "@babel/plugin-transform-dynamic-import": "^7.22.5", - "@babel/plugin-transform-exponentiation-operator": "^7.22.5", - "@babel/plugin-transform-export-namespace-from": "^7.22.5", - "@babel/plugin-transform-for-of": "^7.22.5", - "@babel/plugin-transform-function-name": "^7.22.5", - "@babel/plugin-transform-json-strings": "^7.22.5", - "@babel/plugin-transform-literals": "^7.22.5", - "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", - "@babel/plugin-transform-member-expression-literals": "^7.22.5", - "@babel/plugin-transform-modules-amd": "^7.22.5", - "@babel/plugin-transform-modules-commonjs": "^7.22.5", - "@babel/plugin-transform-modules-systemjs": "^7.22.5", - "@babel/plugin-transform-modules-umd": "^7.22.5", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.22.5", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", - "@babel/plugin-transform-numeric-separator": "^7.22.5", - "@babel/plugin-transform-object-rest-spread": "^7.22.5", - "@babel/plugin-transform-object-super": "^7.22.5", - "@babel/plugin-transform-optional-catch-binding": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.22.6", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-private-methods": "^7.22.5", - "@babel/plugin-transform-private-property-in-object": "^7.22.5", - "@babel/plugin-transform-property-literals": "^7.22.5", - "@babel/plugin-transform-regenerator": "^7.22.5", - "@babel/plugin-transform-reserved-words": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/plugin-transform-spread": "^7.22.5", - "@babel/plugin-transform-sticky-regex": "^7.22.5", - "@babel/plugin-transform-template-literals": "^7.22.5", - "@babel/plugin-transform-typeof-symbol": "^7.22.5", - "@babel/plugin-transform-unicode-escapes": "^7.22.5", - "@babel/plugin-transform-unicode-property-regex": "^7.22.5", - "@babel/plugin-transform-unicode-regex": "^7.22.5", - "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.22.5", - "babel-plugin-polyfill-corejs2": "^0.4.4", - "babel-plugin-polyfill-corejs3": "^0.8.2", - "babel-plugin-polyfill-regenerator": "^0.5.1", ->>>>>>> main "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -3645,15 +2539,9 @@ } }, "node_modules/@babel/preset-modules": { -<<<<<<< HEAD "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", -======= - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", - "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", ->>>>>>> main "dev": true, "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", @@ -3671,15 +2559,9 @@ "dev": true }, "node_modules/@babel/runtime": { -<<<<<<< HEAD "version": "7.23.9", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", -======= - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", ->>>>>>> main "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -3703,7 +2585,6 @@ } }, "node_modules/@babel/traverse": { -<<<<<<< HEAD "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.0.tgz", "integrity": "sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==", @@ -3711,64 +2592,25 @@ "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.6", -======= - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", ->>>>>>> main "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", -<<<<<<< HEAD "@babel/parser": "^7.24.0", "@babel/types": "^7.24.0", "debug": "^4.3.1", -======= - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", ->>>>>>> main "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, -<<<<<<< HEAD "node_modules/@babel/types": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { -======= - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { ->>>>>>> main "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" @@ -3795,1110 +2637,542 @@ "node": ">=10.0.0" } }, -<<<<<<< HEAD - "node_modules/@esbuild/aix-ppc64": { + "node_modules/@esbuild/linux-x64": { "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.0.tgz", - "integrity": "sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", + "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "optional": true, "os": [ - "aix" + "linux" ], "engines": { "node": ">=12" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.0.tgz", - "integrity": "sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==", - "cpu": [ - "arm" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.0.tgz", - "integrity": "sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.0.tgz", - "integrity": "sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.0.tgz", - "integrity": "sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.0.tgz", - "integrity": "sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.0.tgz", - "integrity": "sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">=12" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.0.tgz", - "integrity": "sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.0.tgz", - "integrity": "sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.0.tgz", - "integrity": "sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.0.tgz", - "integrity": "sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==", - "cpu": [ - "ia32" - ], + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.0.tgz", - "integrity": "sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==", - "cpu": [ - "loong64" - ], + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=14" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.0.tgz", - "integrity": "sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==", - "cpu": [ - "mips64el" - ], + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, "engines": { - "node": ">=12" + "node": ">=10.10.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.0.tgz", - "integrity": "sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==", - "cpu": [ - "ppc64" - ], + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.0.tgz", - "integrity": "sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==", - "cpu": [ - "riscv64" - ], + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.0.tgz", - "integrity": "sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==", - "cpu": [ - "s390x" - ], + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.0.tgz", - "integrity": "sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==", -======= - "node_modules/@esbuild/linux-x64": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", - "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", ->>>>>>> main - "cpu": [ - "x64" - ], + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { "node": ">=12" } }, -<<<<<<< HEAD - "node_modules/@esbuild/netbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.0.tgz", - "integrity": "sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==", - "cpu": [ - "x64" - ], -======= - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", ->>>>>>> main + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, -<<<<<<< HEAD - "node_modules/@esbuild/openbsd-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.0.tgz", - "integrity": "sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==", - "cpu": [ - "x64" - ], -======= - "node_modules/@eslint-community/regexpp": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.9.1.tgz", - "integrity": "sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==", ->>>>>>> main + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, -<<<<<<< HEAD - "node_modules/@esbuild/sunos-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.0.tgz", - "integrity": "sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==", - "cpu": [ - "x64" - ], -======= - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", ->>>>>>> main + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, -<<<<<<< HEAD - "node_modules/@esbuild/win32-arm64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.0.tgz", - "integrity": "sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==", - "cpu": [ - "arm64" - ], -======= - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", ->>>>>>> main + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, -<<<<<<< HEAD - "node_modules/@esbuild/win32-ia32": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.0.tgz", - "integrity": "sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==", - "cpu": [ - "ia32" - ], -======= - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", ->>>>>>> main + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, -<<<<<<< HEAD - "node_modules/@esbuild/win32-x64": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.0.tgz", - "integrity": "sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==", - "cpu": [ - "x64" - ], -======= - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", ->>>>>>> main - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, -<<<<<<< HEAD - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=8" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, -======= ->>>>>>> main - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, -<<<<<<< HEAD - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, -======= ->>>>>>> main - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { -<<<<<<< HEAD - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", -======= - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", ->>>>>>> main - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, -<<<<<<< HEAD - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "dev": true, - "engines": { - "node": ">=14" - } + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", -======= - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "node_modules/@ljharb/through": { + "version": "2.3.12", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.12.tgz", + "integrity": "sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", ->>>>>>> main - "minimatch": "^3.0.5" + "call-bind": "^1.0.5" }, "engines": { - "node": ">=10.10.0" + "node": ">= 0.4" } }, -<<<<<<< HEAD - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "tslib": "^2.1.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "node_modules/@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, -======= ->>>>>>> main - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@humanwhocodes/object-schema": { -<<<<<<< HEAD - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", -======= - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", ->>>>>>> main - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, + "node_modules/@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "dependencies": { + "tslib": "^2.1.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, + "node_modules/@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "node_modules/@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, + "node_modules/@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", -<<<<<<< HEAD -======= - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", ->>>>>>> main - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { -<<<<<<< HEAD - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", -======= - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", ->>>>>>> main - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { -<<<<<<< HEAD - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", -======= - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", ->>>>>>> main - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", - "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", - "dev": true - }, - "node_modules/@ljharb/through": { - "version": "2.3.12", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.12.tgz", - "integrity": "sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@material/animation": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-leRf+BcZTfC/iSigLXnYgcHAGvFVQveoJT5+2PIRdyPI/bIG7hhciRgacHRsCKC0sGya81dDblLgdkjSUemYLw==", ->>>>>>> main - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/auto-init": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-uxzDq7q3c0Bu1pAsMugc1Ik9ftQYQqZY+5e2ybNplT8gTImJhNt4M2mMiMHbMANk2l3UgICmUyRSomgPBWCPIA==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/banner": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-SHeVoidCUFVhXANN6MNWxK9SZoTSgpIP8GZB7kAl52BywLxtV+FirTtLXkg/8RUkxZRyRWl7HvQ0ZFZa7QQAyA==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/button": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/base": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Fc3vGuOf+duGo22HTRP6dHdc+MUe0VqQfWOuKrn/wXKD62m0QQR2TqJd3rRhCumH557T5QUyheW943M3E+IGfg==", ->>>>>>> main - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/button": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", - "dependencies": { - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-3AQgwrPZCTWHDJvwgKq7Cj+BurQ4wTjDdGL+FEnIGUAjJDskwi1yzx5tW2Wf/NxIi7IoPFyOY3UB41jwMiOrnw==", - "dependencies": { - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/card": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", - "dependencies": { - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-nPlhiWvbLmooTnBmV5gmzB0eLWSgLKsSRBYAbIBmO76Okgz1y+fQNLag+lpm/TDaHVsn5fmQJH8e0zIg0rYsQA==", - "dependencies": { - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/checkbox": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-4tpNnO1L0IppoMF3oeQn8F17t2n0WHB0D7mdJK9rhrujen/fLbekkIC82APB3fdGtLGg3qeNqDqPsJm1YnmrwA==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/chips": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "node_modules/@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", "dependencies": { "@material/animation": "15.0.0-canary.7f224ddd4.0", "@material/base": "15.0.0-canary.7f224ddd4.0", @@ -4915,33 +3189,11 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-fqHKvE5bSWK0bXVkf57MWxZtytGqYBZvvHIOs4JI9HPHEhaJy4CpSw562BEtbm3yFxxALoQknvPW2KYzvADnmA==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "safevalues": "^0.3.4", "tslib": "^2.1.0" } }, "node_modules/@material/circular-progress": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", @@ -4953,24 +3205,10 @@ "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Lxe8BGAxQwCQqrLhrYrIP0Uok10h7aYS3RBXP41ph+5GmwJd5zdyE2t93qm2dyThvU6qKuXw9726Dtq/N+wvZQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/progress-indicator": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/data-table": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", @@ -4993,49 +3231,18 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-j/7qplT9+sUpfe4pyWhPbl01qJA+OoNAG3VMJruBBR461ZBKyTi7ssKH9yksFGZ8eCEPkOsk/+kDxsiZvRWkeQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/checkbox": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", - "@material/linear-progress": "15.0.0-canary.bc9ae6c9c.0", - "@material/list": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/select": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/density": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Zt3u07fXrBWLW06Tl5fgvjicxNQMkFdawLyNTzZ5TvbXfVkErILLePwwGaw8LNcvzqJP6ABLA8jiR+sKNoJQCg==", ->>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/dialog": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", @@ -5054,50 +3261,20 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-o+9a/fmwJ9+gY3Z/uhj/PMVJDq7it1NTWKJn2GwAKdB+fDkT4hb9qEdcxMPyvJJ5ups+XiKZo03+tZrD+38c1w==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/button": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/dom": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", "dependencies": { "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-ly78R7aoCJtundSUu0UROU+5pQD5Piae0Y1MkN6bs0724azeazX1KeXFeaf06JOXnlr5/41ol+fSUPowjoqnOg==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/drawer": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", @@ -5113,28 +3290,10 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-PFL4cEFnt7VTxDsuspFVNhsFDYyumjU0VWfj3PWB7XudsEfQ3lo85D3HCEtTTbRsCainGN8bgYNDNafLBqiigw==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/list": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/elevation": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", @@ -5144,22 +3303,10 @@ "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Ro+Pk8jFuap+T0B0shA3xI1hs2b89dNQ2EIPCNjNMp87emHKAzJfhKb7EZGIwv3+gFLlVaLyIVkb94I89KLsyg==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/fab": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", @@ -5176,43 +3323,18 @@ "@material/tokens": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-dvU0KWMRglwJEQwmQtFAmJcAjzg9VFF6Aqj78bJYu/DAIGFJ1VTTTSgoXM/XCm1YyQEZ7kZRvxBO37CH54rSDg==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/feature-targeting": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-wkDjVcoVEYYaJvun28IXdln/foLgPD7n9ZC9TY76GErGCwTq+HWpU6wBAAk+ePmpRFDayw4vI4wBlaWGxLtysQ==", ->>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/floating-label": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", @@ -5224,24 +3346,10 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-bUWPtXzZITOD/2mkvLkEPO1ngDWmb74y0Kgbz6llHLOQBtycyJIpuoQJ1q2Ez0NM/tFLwPphhAgRqmL3YQ/Kzw==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/focus-ring": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", @@ -5262,33 +3370,10 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-cZHThVose3GvAlJzpJoBI1iqL6d1/Jj9hXrR+r8Mwtb1hBIUEG3hxfsRd4vGREuzROPlf0OgNf/V+YHoSwgR5w==", - "dependencies": { - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0" - } - }, - "node_modules/@material/form-field": { - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-+JFXy5X44Gue1CbZZAQ6YejnI203lebYwL0i6k0ylDpWHEOdD5xkF2PyHR28r9/65Ebcbwbff6q7kI1SGoT7MA==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/icon-button": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", @@ -5303,27 +3388,10 @@ "@material/rtl": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/touch-target": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-1a0MHgyIwOs4RzxrVljsqSizGYFlM1zY2AZaLDsgT4G3kzsplTx8HZQ022GpUCjAygW+WLvg4z1qAhQHvsbqlw==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/image-list": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", @@ -5332,5820 +3400,2764 @@ "@material/shape": "15.0.0-canary.7f224ddd4.0", "@material/theme": "15.0.0-canary.7f224ddd4.0", "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-WKWmiYap2iu4QdqmeUSliLlN4O2Ueqa0OuVAYHn/TCzmQ2xmnhZ1pvDLbs6TplpOmlki7vFfe+aSt5SU9gwfOQ==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main "tslib": "^2.1.0" } }, "node_modules/@material/layout-grid": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-5GqmT6oTZhUGWIb+CLD0ZNyDyTiJsr/rm9oRIi3+vCujACwxFkON9tzBlZohdtFS16nuzUusthN6Jt9UrJcN6Q==", ->>>>>>> main "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@material/line-ripple": { -<<<<<<< HEAD "version": "15.0.0-canary.7f224ddd4.0", "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", "dependencies": { "@material/animation": "15.0.0-canary.7f224ddd4.0", "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-8S30WXEuUdgDdBulzUDlPXD6qMzwCX9SxYb5mGDYLwl199cpSGdXHtGgEcCjokvnpLhdZhcT1Dsxeo1g2Evh5Q==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/linear-progress": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-6EJpjrz6aoH2/gXLg9iMe0yF2C42hpQyZoHpmcgTLKeci85ktDvJIjwup8tnk8ULQyFiGiIrhXw2v2RSsiFjvQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/progress-indicator": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/list": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-TQ1ppqiCMQj/P7bGD4edbIIv4goczZUoiUAaPq/feb1dflvrFMzYqJ7tQRRCyBL8nRhJoI2x99tk8Q2RXvlGUQ==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/menu": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-IlAh61xzrzxXs38QZlt74UYt8J431zGznSzDtB1Fqs6YFNd11QPKoiRXn1J2Qu/lUxbFV7i8NBKMCKtia0n6/Q==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/list": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/menu-surface": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-dMtSPN+olTWE+08M5qe4ea1IZOhVryYqzK0Gyb2u1G75rSArUxCOB5rr6OC/ST3Mq3RS6zGuYo7srZt4534K9Q==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/notched-outline": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-WuurMg44xexkvLTBTnsO0A+qnzFjpcPdvgWBGstBepYozsvSF9zJGdb1x7Zv1MmqbpYh/Ohnuxtb/Y3jOh6irg==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/progress-indicator": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-uOnsvqw5F2fkeTnTl4MrYzjI7KCLmmLyZaM0cgLNuLsWVlddQE+SGMl28tENx7DUK3HebWq0FxCP8f25LuDD+w==", ->>>>>>> main - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/@material/radio": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-ehzOK+U1IxQN+OQjgD2lsnf1t7t7RAwQzeO6Czkiuid29ookYbQynWuLWk7NW8H8ohl7lnmfqTP1xSNkkL/F0g==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/ripple": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-JfLW+g3GMVDv4cruQ19+HUxpKVdWCldFlIPw1UYezz2h3WTNDy05S3uP2zUdXzZ01C3dkBFviv4nqZ0GCT16MA==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/rtl": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", - "dependencies": { - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-SkKLNLFp5QtG7/JEFg9R92qq4MzTcZ5As6sWbH7rRg6ahTHoJEuqE+pOb9Vrtbj84k5gtX+vCYPvCILtSlr2uw==", - "dependencies": { - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/segmented-button": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/touch-target": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-YDwkCWP9l5mIZJ7pZJZ2hMDxfBlIGVJ+deNzr8O+Z7/xC5LGXbl4R5aPtUVHygvXAXxpf5096ZD+dSXzYzvWlw==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/touch-target": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/select": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/list": "15.0.0-canary.7f224ddd4.0", - "@material/menu": "15.0.0-canary.7f224ddd4.0", - "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-unfOWVf7T0sixVG+3k3RTuATfzqvCF6QAzA6J9rlCh/Tq4HuIBNDdV4z19IVu4zwmgWYxY0iSvqWUvdJJYwakQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", - "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/list": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu": "15.0.0-canary.bc9ae6c9c.0", - "@material/menu-surface": "15.0.0-canary.bc9ae6c9c.0", - "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/shape": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Dsvr771ZKC46ODzoixLdGwlLEQLfxfLrtnRojXABoZf5G3o9KtJU+J+5Ld5aa960OAsCzzANuaub4iR88b1guA==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/slider": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-3AEu+7PwW4DSNLndue47dh2u7ga4hDJRYmuu7wnJCIWJBnLCkp6C92kNc4Rj5iQY2ftJio5aj1gqryluh5tlYg==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/snackbar": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/icon-button": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-TwwQSYxfGK6mc03/rdDamycND6o+1p61WNd7ElZv1F1CLxB4ihRjbCoH7Qo+oVDaP8CTpjeclka+24RLhQq0mA==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/button": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/icon-button": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/switch": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-OjUjtT0kRz1ASAsOS+dNzwMwvsjmqy5edK57692qmrP6bL4GblFfBDoiNJ6t0AN4OaKcmL5Hy/xNrTdOZW7Qqw==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "safevalues": "^0.3.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-s/L9otAwn/pZwVQZBRQJmPqYeNbjoEbzbjMpDQf/VBG/6dJ+aP03ilIBEkqo8NVnCoChqcdtVCoDNRtbU+yp6w==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/focus-ring": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-bar": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", - "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", - "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-Xmtq0wJGfu5k+zQeFeNsr4bUKv7L+feCmUp/gsapJ655LQKMXOUQZtSv9ZqWOfrCMy55hoF1CzGFV+oN3tyWWQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-indicator": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab-scroller": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-indicator": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-despCJYi1GrDDq7F2hvLQkObHnSLZPPDxnOzU16zJ6FNYvIdszgfzn2HgAZ6pl5hLOexQ8cla6cAqjTDuaJBhQ==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tab-scroller": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/tab": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-QWHG/EWxirj4V9u2IHz+OSY9XCWrnNrPnNgEufxAJVUKV/A8ma1DYeFSQqxhX709R8wKGdycJksg0Flkl7Gq7w==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/tab": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/textfield": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/density": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/floating-label": "15.0.0-canary.7f224ddd4.0", - "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", - "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-R3qRex9kCaZIAK8DuxPnVC42R0OaW7AB7fsFknDKeTeVQvRcbnV8E+iWSdqTiGdsi6QQHifX8idUrXw+O45zPw==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/density": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/floating-label": "15.0.0-canary.bc9ae6c9c.0", - "@material/line-ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/notched-outline": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/theme": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-CpUwXGE0dbhxQ45Hu9r9wbJtO/MAlv5ER4tBHA9tp/K+SU+lDgurBE2touFMg5INmdfVNtdumxb0nPPLaNQcUg==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/tokens": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", - "dependencies": { - "@material/elevation": "15.0.0-canary.7f224ddd4.0" - } - }, - "node_modules/@material/tooltip": { - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/button": "15.0.0-canary.7f224ddd4.0", - "@material/dom": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/tokens": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-nbEuGj05txWz6ZMUanpM47SaAD7soyjKILR+XwDell9Zg3bGhsnexCNXPEz2fD+YgomS+jM5XmIcaJJHg/H93Q==", - "dependencies": { - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0" - } - }, - "node_modules/@material/tooltip": { - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-UzuXp0b9NuWuYLYpPguxrjbJnCmT/Cco8CkjI/6JajxaeA3o2XEBbQfRMTq8PTafuBjCHTc0b0mQY7rtxUp1Gg==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/button": "15.0.0-canary.bc9ae6c9c.0", - "@material/dom": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/tokens": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "safevalues": "^0.3.4", - "tslib": "^2.1.0" - } - }, - "node_modules/@material/top-app-bar": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", - "dependencies": { - "@material/animation": "15.0.0-canary.7f224ddd4.0", - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/elevation": "15.0.0-canary.7f224ddd4.0", - "@material/ripple": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/shape": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", - "@material/typography": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-vJWjsvqtdSD5+yQ/9vgoBtBSCvPJ5uF/DVssv8Hdhgs1PYaAcODUi77kdi0+sy/TaWyOsTkQixqmwnFS16zesA==", - "dependencies": { - "@material/animation": "15.0.0-canary.bc9ae6c9c.0", - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/elevation": "15.0.0-canary.bc9ae6c9c.0", - "@material/ripple": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/shape": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", - "@material/typography": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/touch-target": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", - "dependencies": { - "@material/base": "15.0.0-canary.7f224ddd4.0", - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/rtl": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-AqYh9fjt+tv4ZE0C6MeYHblS2H+XwLbDl2mtyrK0DOEnCVQk5/l5ImKDfhrUdFWHvS4a5nBM4AA+sa7KaroLoA==", - "dependencies": { - "@material/base": "15.0.0-canary.bc9ae6c9c.0", - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/rtl": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@material/typography": { -<<<<<<< HEAD - "version": "15.0.0-canary.7f224ddd4.0", - "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", - "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", - "@material/theme": "15.0.0-canary.7f224ddd4.0", -======= - "version": "15.0.0-canary.bc9ae6c9c.0", - "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.bc9ae6c9c.0.tgz", - "integrity": "sha512-CKsG1zyv34AKPNyZC8olER2OdPII64iR2SzQjpqh1UUvmIFiMPk23LvQ1OnC5aCB14pOXzmVgvJt31r9eNdZ6Q==", - "dependencies": { - "@material/feature-targeting": "15.0.0-canary.bc9ae6c9c.0", - "@material/theme": "15.0.0-canary.bc9ae6c9c.0", ->>>>>>> main - "tslib": "^2.1.0" - } - }, - "node_modules/@ngrx/component-store": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@ngrx/component-store/-/component-store-17.1.1.tgz", - "integrity": "sha512-pknwettIC52JELk9PjhTgBBsY/WtdltB91jPW9c6hWCxW8X89ipV9Fe+alKBhqqL8pQiK/gPpWmbp0zPauUChQ==", - "dependencies": { - "@ngrx/operators": "17.0.0-beta.0", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngrx/effects": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-17.1.1.tgz", - "integrity": "sha512-VDNVI70wfEwqoNliffAiMhsPry0CWKkifCLmfzr+SZEEdAaPEBr4FtRrrdcdq/ovmkcgoWukkH2MBljbCyHwtA==", - "dependencies": { - "@ngrx/operators": "17.0.0-beta.0", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "@ngrx/store": "17.1.1", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngrx/operators": { - "version": "17.0.0-beta.0", - "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-17.0.0-beta.0.tgz", - "integrity": "sha512-EbO8AONuQ6zo2v/mPyBOi4y0CTAp1x4Z+bx7ZF+Pd8BL5ma53BTCL1TmzaeK5zPUe0yApudLk9/ZbHXPnVox5A==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@ngrx/store": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-17.1.1.tgz", - "integrity": "sha512-MGbKLTcl4uq2Uzx+qbMYNy6xW+JnkpRiznaGFX2/NFflq/zNZsjbxZrvn4/Z6ClVYIjj3uadjM1fupwMYMJxVA==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngtools/webpack": { -<<<<<<< HEAD - "version": "17.2.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.2.2.tgz", - "integrity": "sha512-HgvClGO6WVq4VA5d0ZvlDG5hrj8lQzRH99Gt87URm7G8E5XkatysdOsMqUQsJz+OwFWhP4PvTRWVblpBDiDl/A==", -======= - "version": "16.2.12", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.12.tgz", - "integrity": "sha512-f9R9Qsk8v+ffDxryl6PQ7Wnf2JCNd4dDXOH+d/AuF06VFiwcwGDRDZpmqkAXbFxQfcWTbT1FFvfoJ+SFcJgXLA==", ->>>>>>> main - "dev": true, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^17.0.0", - "typescript": ">=5.2 <5.4", - "webpack": "^5.54.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/agent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.1.tgz", - "integrity": "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.4.tgz", - "integrity": "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==", - "dev": true, - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^3.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", - "dev": true, - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "lib/index.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.0.tgz", - "integrity": "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==", - "dev": true, - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^3.0.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", - "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", - "dev": true, - "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", - "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/@nrwl/devkit": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.8.tgz", - "integrity": "sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw==", - "dev": true, - "dependencies": { - "@nx/devkit": "17.2.8" - } - }, - "node_modules/@nrwl/tao": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-17.2.8.tgz", - "integrity": "sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg==", - "dev": true, - "dependencies": { - "nx": "17.2.8", - "tslib": "^2.3.0" - }, - "bin": { - "tao": "index.js" - } - }, - "node_modules/@nx/devkit": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.8.tgz", - "integrity": "sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "17.2.8", - "ejs": "^3.1.7", - "enquirer": "~2.3.6", - "ignore": "^5.0.4", - "semver": "7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "nx": ">= 16 <= 18" - } - }, - "node_modules/@nx/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@nx/nx-darwin-arm64": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-17.2.8.tgz", - "integrity": "sha512-dMb0uxug4hM7tusISAU1TfkDK3ixYmzc1zhHSZwpR7yKJIyKLtUpBTbryt8nyso37AS1yH+dmfh2Fj2WxfBHTg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-darwin-x64": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-17.2.8.tgz", - "integrity": "sha512-0cXzp1tGr7/6lJel102QiLA4NkaLCkQJj6VzwbwuvmuCDxPbpmbz7HC1tUteijKBtOcdXit1/MEoEU007To8Bw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-freebsd-x64": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-17.2.8.tgz", - "integrity": "sha512-YFMgx5Qpp2btCgvaniDGdu7Ctj56bfFvbbaHQWmOeBPK1krNDp2mqp8HK6ZKOfEuDJGOYAp7HDtCLvdZKvJxzA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm-gnueabihf": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-17.2.8.tgz", - "integrity": "sha512-iN2my6MrhLRkVDtdivQHugK8YmR7URo1wU9UDuHQ55z3tEcny7LV3W9NSsY9UYPK/FrxdDfevj0r2hgSSdhnzA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm64-gnu": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-17.2.8.tgz", - "integrity": "sha512-Iy8BjoW6mOKrSMiTGujUcNdv+xSM1DALTH6y3iLvNDkGbjGK1Re6QNnJAzqcXyDpv32Q4Fc57PmuexyysZxIGg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-arm64-musl": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-17.2.8.tgz", - "integrity": "sha512-9wkAxWzknjpzdofL1xjtU6qPFF1PHlvKCZI3hgEYJDo4mQiatGI+7Ttko+lx/ZMP6v4+Umjtgq7+qWrApeKamQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.8.tgz", - "integrity": "sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.8.tgz", - "integrity": "sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-win32-arm64-msvc": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-17.2.8.tgz", - "integrity": "sha512-XBWUY/F/GU3vKN9CAxeI15gM4kr3GOBqnzFZzoZC4qJt2hKSSUEWsMgeZtsMgeqEClbi4ZyCCkY7YJgU32WUGA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-win32-x64-msvc": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-17.2.8.tgz", - "integrity": "sha512-HTqDv+JThlLzbcEm/3f+LbS5/wYQWzb5YDXbP1wi7nlCTihNZOLNqGOkEmwlrR5tAdNHPRpHSmkYg4305W0CtA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nrwl/devkit": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-16.5.1.tgz", - "integrity": "sha512-NB+DE/+AFJ7lKH/WBFyatJEhcZGj25F24ncDkwjZ6MzEiSOGOJS0LaV/R+VUsmS5EHTPXYOpn3zHWWAcJhyOmA==", - "dev": true, - "dependencies": { - "@nx/devkit": "16.5.1" - } - }, - "node_modules/@nrwl/tao": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-16.5.1.tgz", - "integrity": "sha512-x+gi/fKdM6uQNIti9exFlm3V5LBP3Y8vOEziO42HdOigyrXa0S0HD2WMpccmp6PclYKhwEDUjKJ39xh5sdh4Ig==", - "dev": true, - "dependencies": { - "nx": "16.5.1" - }, - "bin": { - "tao": "index.js" - } - }, - "node_modules/@nx/devkit": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-16.5.1.tgz", - "integrity": "sha512-T1acZrVVmJw/sJ4PIGidCBYBiBqlg/jT9e8nIGXLSDS20xcLvfo4zBQf8UZLrmHglnwwpDpOWuVJCp2rYA5aDg==", - "dev": true, - "dependencies": { - "@nrwl/devkit": "16.5.1", - "ejs": "^3.1.7", - "ignore": "^5.0.4", - "semver": "7.5.3", - "tmp": "~0.2.1", - "tslib": "^2.3.0" - }, - "peerDependencies": { - "nx": ">= 15 <= 17" - } - }, - "node_modules/@nx/devkit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@nx/devkit/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/@nx/devkit/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@nx/nx-linux-x64-gnu": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.5.1.tgz", - "integrity": "sha512-igooWJ5YxQ94Zft7IqgL+Lw0qHaY15Btw4gfK756g/YTYLZEt4tTvR1y6RnK/wdpE3sa68bFTLVBNCGTyiTiDQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nx/nx-linux-x64-musl": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.5.1.tgz", - "integrity": "sha512-zF/exnPqFYbrLAduGhTmZ7zNEyADid2bzNQiIjJkh8Y6NpDwrQIwVIyvIxqynsjMrIs51kBH+8TUjKjj2Jgf5A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", - "integrity": "sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "node-addon-api": "^3.2.1", - "node-gyp-build": "^4.3.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { -<<<<<<< HEAD - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", -======= - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.0.tgz", - "integrity": "sha512-Zwq5OCzuwJC2jwqmpEQt7Ds1DTi6BWSwoGkbb1n9pO3hzb35BoJELx7c0T23iDkBGkh2e7tvOtjF3tr3OaQHDQ==", ->>>>>>> main - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, -<<<<<<< HEAD - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz", - "integrity": "sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz", - "integrity": "sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz", - "integrity": "sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz", - "integrity": "sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz", - "integrity": "sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz", - "integrity": "sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz", - "integrity": "sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz", - "integrity": "sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", - "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", - "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz", - "integrity": "sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz", - "integrity": "sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz", - "integrity": "sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@schematics/angular": { - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.10.tgz", - "integrity": "sha512-rRBlDMXfVPkW3CqVQxazFqkuJXd0BFnD1zjI9WtDiNt3o2pTHbLzuWJnXKuIt5rzv0x/bFwNqIt4CPW2DYGNMg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "17.0.10", - "@angular-devkit/schematics": "17.0.10", -======= - "node_modules/@schematics/angular": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.1.8.tgz", - "integrity": "sha512-gTHy1A/E9BCr0sj3VCr6eBYkgVkO96QWiZcFumedGnvstvp5wiCoIoJPLLfYaxVt1vt08xmnmS3OZ3r0qCLdpA==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "16.1.8", - "@angular-devkit/schematics": "16.1.8", ->>>>>>> main - "jsonc-parser": "3.2.0" - }, - "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { -<<<<<<< HEAD - "version": "17.0.10", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.10.tgz", - "integrity": "sha512-93N6oHnmtRt0hL3AXxvnk47sN1rHndfj+pqI5haEY41AGWzIWv9cSBsqlM0PWltNpo6VivcExZESvbLJ71wqbQ==", -======= - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.8.tgz", - "integrity": "sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw==", ->>>>>>> main - "dev": true, - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", -<<<<<<< HEAD - "picomatch": "3.0.1", -======= ->>>>>>> main - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { -<<<<<<< HEAD - "node": "^18.13.0 || >=20.9.0", -======= - "node": "^16.14.0 || >=18.10.0", ->>>>>>> main - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, -<<<<<<< HEAD - "node_modules/@schematics/angular/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "node_modules/@schematics/angular/node_modules/picomatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", - "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/@sigstore/bundle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz", - "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.0.0.tgz", - "integrity": "sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==", - "dev": true, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.0.tgz", - "integrity": "sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==", -======= - "node_modules/@sigstore/bundle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", - "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", - "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", ->>>>>>> main - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/sign": { -<<<<<<< HEAD - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz", - "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^2.2.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0", - "make-fetch-happen": "^13.0.0" -======= - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", - "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "make-fetch-happen": "^11.0.1" ->>>>>>> main - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/tuf": { -<<<<<<< HEAD - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.1.tgz", - "integrity": "sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@sigstore/verify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.1.0.tgz", - "integrity": "sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^2.2.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" -======= - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", - "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", - "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.2.0", - "tuf-js": "^1.1.7" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" ->>>>>>> main - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, -<<<<<<< HEAD -======= - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, ->>>>>>> main - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", - "dev": true, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", - "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", - "dev": true, - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dev": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "dev": true, - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { -<<<<<<< HEAD - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", -======= - "version": "2.8.15", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.15.tgz", - "integrity": "sha512-n91JxbNLD8eQIuXDIChAN1tCKNWCEgpceU9b7ZMbFA+P+Q4yIeh80jizFLEvolRPc1ES0VdwFlGv+kJTSirogw==", ->>>>>>> main - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { -<<<<<<< HEAD - "version": "8.56.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", - "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", -======= - "version": "8.44.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", - "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", ->>>>>>> main - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { -<<<<<<< HEAD - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", -======= - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.6.tgz", - "integrity": "sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ==", ->>>>>>> main - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { -<<<<<<< HEAD - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", -======= - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.3.tgz", - "integrity": "sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==", ->>>>>>> main - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "dev": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { -<<<<<<< HEAD - "version": "4.17.43", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", - "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", -======= - "version": "4.17.42", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz", - "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==", ->>>>>>> main - "dev": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "dev": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/jasmine": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", - "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", - "dev": true - }, - "node_modules/@types/json-schema": { -<<<<<<< HEAD - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", -======= - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", - "integrity": "sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==", ->>>>>>> main - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true - }, - "node_modules/@types/node": { -<<<<<<< HEAD - "version": "20.11.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", - "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" -======= - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.25.1" ->>>>>>> main - } - }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { -<<<<<<< HEAD - "version": "6.9.12", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", - "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", -======= - "version": "6.9.11", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz", - "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==", ->>>>>>> main - "dev": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/semver": { -<<<<<<< HEAD - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", -======= - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==", ->>>>>>> main - "dev": true - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "dev": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", - "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", - "dev": true, - "dependencies": { - "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" - } - }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { -<<<<<<< HEAD - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { -<<<<<<< HEAD - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" -======= - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" ->>>>>>> main - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, -<<<<<<< HEAD - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { -<<<<<<< HEAD - "eslint": "^7.0.0 || ^8.0.0" -======= - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" ->>>>>>> main - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { -<<<<<<< HEAD - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { -<<<<<<< HEAD - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.0.tgz", - "integrity": "sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.18.0", - "@typescript-eslint/utils": "6.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { -<<<<<<< HEAD - "eslint": "^7.0.0 || ^8.0.0" -======= - "eslint": "*" ->>>>>>> main - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, -<<<<<<< HEAD - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", - "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", - "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.18.0", - "@typescript-eslint/visitor-keys": "6.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", - "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.18.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { -<<<<<<< HEAD - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, -<<<<<<< HEAD - "node_modules/@typescript-eslint/utils": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.0.tgz", - "integrity": "sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.18.0", - "@typescript-eslint/types": "6.18.0", - "@typescript-eslint/typescript-estree": "6.18.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { -<<<<<<< HEAD - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.0.tgz", - "integrity": "sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.18.0", - "@typescript-eslint/visitor-keys": "6.18.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", - "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", - "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.18.0", - "@typescript-eslint/visitor-keys": "6.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", - "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.18.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" -======= - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", - "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", - "dev": true, - "engines": { - "node": ">=14.6.0" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "dev": true, + "node_modules/@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, + "node_modules/@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true + "node_modules/@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "dev": true, + "node_modules/@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, + "node_modules/@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, + "node_modules/@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", "dependencies": { - "@xtuc/long": "4.2.2" + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true + "node_modules/@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "dev": true, + "node_modules/@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "dev": true, + "node_modules/@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "dev": true, + "node_modules/@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "dev": true, + "node_modules/@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "dev": true, + "node_modules/@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator": { - "version": "0.0.27", - "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", - "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", - "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", - "dev": true, + "node_modules/@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", "dependencies": { - "chalk": "^4.1.0", - "jsdom": "^16.4.0", - "object-path": "^0.11.5", - "tslib": "^2.0.3" - }, - "engines": { - "node": ">=10.1.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" - }, - "peerDependencies": { - "typescript": ">=3.2.x || >= 4.x" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/@yarnpkg/parsers": { - "version": "3.0.0-rc.46", - "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", - "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", - "dev": true, + "node_modules/@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", "dependencies": { - "js-yaml": "^3.10.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.15.0" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@zkochan/js-yaml": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", - "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", - "dev": true, + "node_modules/@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/@zkochan/js-yaml/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", -<<<<<<< HEAD -======= - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", ->>>>>>> main - "dev": true - }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "dependencies": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" } }, - "node_modules/acorn": { -<<<<<<< HEAD - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", -======= - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "node_modules/@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, + "node_modules/@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", ->>>>>>> main - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "node_modules/@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "dev": true, + "node_modules/@ngrx/component-store": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@ngrx/component-store/-/component-store-17.1.1.tgz", + "integrity": "sha512-pknwettIC52JELk9PjhTgBBsY/WtdltB91jPW9c6hWCxW8X89ipV9Fe+alKBhqqL8pQiK/gPpWmbp0zPauUChQ==", + "dependencies": { + "@ngrx/operators": "17.0.0-beta.0", + "tslib": "^2.0.0" + }, "peerDependencies": { - "acorn": "^8" + "@angular/core": "^17.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, + "node_modules/@ngrx/effects": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-17.1.1.tgz", + "integrity": "sha512-VDNVI70wfEwqoNliffAiMhsPry0CWKkifCLmfzr+SZEEdAaPEBr4FtRrrdcdq/ovmkcgoWukkH2MBljbCyHwtA==", + "dependencies": { + "@ngrx/operators": "17.0.0-beta.0", + "tslib": "^2.0.0" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, -<<<<<<< HEAD -======= - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" + "@angular/core": "^17.0.0", + "@ngrx/store": "17.1.1", + "rxjs": "^6.5.3 || ^7.5.0" } }, ->>>>>>> main - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, + "node_modules/@ngrx/operators": { + "version": "17.0.0-beta.0", + "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-17.0.0-beta.0.tgz", + "integrity": "sha512-EbO8AONuQ6zo2v/mPyBOi4y0CTAp1x4Z+bx7ZF+Pd8BL5ma53BTCL1TmzaeK5zPUe0yApudLk9/ZbHXPnVox5A==", "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" + "tslib": "^2.3.0" }, - "engines": { - "node": ">=8.9" + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0" } }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, + "node_modules/@ngrx/store": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-17.1.1.tgz", + "integrity": "sha512-MGbKLTcl4uq2Uzx+qbMYNy6xW+JnkpRiznaGFX2/NFflq/zNZsjbxZrvn4/Z6ClVYIjj3uadjM1fupwMYMJxVA==", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "tslib": "^2.0.0" }, - "engines": { - "node": ">=8.9.0" + "peerDependencies": { + "@angular/core": "^17.0.0", + "rxjs": "^6.5.3 || ^7.5.0" } }, - "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "node_modules/@ngtools/webpack": { + "version": "17.2.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.2.2.tgz", + "integrity": "sha512-HgvClGO6WVq4VA5d0ZvlDG5hrj8lQzRH99Gt87URm7G8E5XkatysdOsMqUQsJz+OwFWhP4PvTRWVblpBDiDl/A==", "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, "engines": { -<<<<<<< HEAD - "node": ">= 14" -======= - "node": ">= 6.0.0" + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "typescript": ">=5.2 <5.4", + "webpack": "^5.54.0" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "humanize-ms": "^1.2.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">= 8.0.0" ->>>>>>> main + "node": ">= 8" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 8" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/@npmcli/agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.1.tgz", + "integrity": "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==", "dev": true, "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.1" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "engines": { + "node": "14 || >=16.14" } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, "engines": { - "node": ">=6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@npmcli/git": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.4.tgz", + "integrity": "sha512-nr6/WezNzuYUppzXRaYu/W4aT5rLxdXqEFupbh6e/ovlYFQ8hpu1UUPV3Ir/YTl+74iXl2ZOMlGzudh9ZPUchQ==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "bin": { - "ansi-html": "bin/ansi-html" + "engines": { + "node": ">=16" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { - "node": ">=8" + "node": "14 || >=16.14" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" }, "engines": { - "node": ">=4" + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" }, "engines": { - "node": ">= 8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", "dev": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/@npmcli/package-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.0.0.tgz", + "integrity": "sha512-OI2zdYBLhQ7kpNPaJxiflofYIpkNLi+lnGdzqUOfRmCF3r2l1nadcjtCYMJKv/Utm/ZtlffaUuTiAktPHbc17g==", "dev": true, "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/async": { -<<<<<<< HEAD - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", -======= - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", ->>>>>>> main - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/autoprefixer": { - "version": "10.4.17", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", - "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "browserslist": "^4.22.2", - "caniuse-lite": "^1.0.30001578", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "autoprefixer": "bin/autoprefixer" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/axios": { -<<<<<<< HEAD - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", -======= - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.5.tgz", - "integrity": "sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg==", ->>>>>>> main + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.1.tgz", + "integrity": "sha512-P4KkF9jX3y+7yFUxgcUdDtLy+t4OlDGuEBLNs57AZsfSfg+uV6MLndqGpnl4831ggaEdXwR50XFoZP4VFtHolg==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.4", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, -<<<<<<< HEAD - "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", -======= - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, "engines": { - "node": ">= 6" + "node": ">=16" } }, - "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", ->>>>>>> main + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "node_modules/@npmcli/run-script": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", "dev": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" }, "engines": { - "node": ">= 14.15.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/babel-plugin-polyfill-corejs2": { -<<<<<<< HEAD - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", - "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.5.0", -======= - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", ->>>>>>> main - "semver": "^6.3.1" + "isexe": "^3.1.1" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@nrwl/devkit": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/@nrwl/devkit/-/devkit-17.2.8.tgz", + "integrity": "sha512-l2dFy5LkWqSA45s6pee6CoqJeluH+sjRdVnAAQfjLHRNSx6mFAKblyzq5h1f4P0EUCVVVqLs+kVqmNx5zxYqvw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@nx/devkit": "17.2.8" } }, - "node_modules/babel-plugin-polyfill-corejs3": { -<<<<<<< HEAD - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "node_modules/@nrwl/tao": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/@nrwl/tao/-/tao-17.2.8.tgz", + "integrity": "sha512-Qpk5YKeJ+LppPL/wtoDyNGbJs2MsTi6qyX/RdRrEc8lc4bk6Cw3Oul1qTXCI6jT0KzTz+dZtd0zYD/G7okkzvg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" -======= - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "nx": "17.2.8", + "tslib": "^2.3.0" + }, + "bin": { + "tao": "index.js" + } + }, + "node_modules/@nx/devkit": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-17.2.8.tgz", + "integrity": "sha512-6LtiQihtZwqz4hSrtT5cCG5XMCWppG6/B8c1kNksg97JuomELlWyUyVF+sxmeERkcLYFaKPTZytP0L3dmCFXaw==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" ->>>>>>> main + "@nrwl/devkit": "17.2.8", + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "semver": "7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0" }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "nx": ">= 16 <= 18" } }, - "node_modules/babel-plugin-polyfill-regenerator": { -<<<<<<< HEAD - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "node_modules/@nx/devkit/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" -======= - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nx/devkit/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" ->>>>>>> main + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "node_modules/@nx/devkit/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-17.2.8.tgz", + "integrity": "sha512-sjG1bwGsjLxToasZ3lShildFsF0eyeGu+pOQZIp9+gjFbeIkd19cTlCnHrOV9hoF364GuKSXQyUlwtFYFR4VTQ==", + "cpu": [ + "x64" + ], "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "node_modules/@nx/nx-linux-x64-musl": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-17.2.8.tgz", + "integrity": "sha512-QiakXZ1xBCIptmkGEouLHQbcM4klQkcr+kEaz2PlNwy/sW3gH1b/1c0Ed5J1AN9xgQxWspriAONpScYBRgxdhA==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">= 10" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "optional": true, "engines": { - "node": "*" + "node": ">=14" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz", + "integrity": "sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "optional": true, + "os": [ + "linux" + ] }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz", + "integrity": "sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@schematics/angular": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.0.10.tgz", + "integrity": "sha512-rRBlDMXfVPkW3CqVQxazFqkuJXd0BFnD1zjI9WtDiNt3o2pTHbLzuWJnXKuIt5rzv0x/bFwNqIt4CPW2DYGNMg==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "@angular-devkit/core": "17.0.10", + "@angular-devkit/schematics": "17.0.10", + "jsonc-parser": "3.2.0" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.0.10.tgz", + "integrity": "sha512-93N6oHnmtRt0hL3AXxvnk47sN1rHndfj+pqI5haEY41AGWzIWv9cSBsqlM0PWltNpo6VivcExZESvbLJ71wqbQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "3.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/@schematics/angular/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", "dev": true }, - "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "node_modules/@schematics/angular/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.2.0.tgz", + "integrity": "sha512-5VI58qgNs76RDrwXNhpmyN/jKpq9evV/7f1XrcqcAfvxDl5SeVY/I5Rmfe96ULAV7/FK5dge9RBKGBJPhL1WsQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "@sigstore/protobuf-specs": "^0.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/boolbase": { + "node_modules/@sigstore/core": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.0.0.tgz", + "integrity": "sha512-dW2qjbWLRKGu6MIDUTBuJwXCnR8zivcSpf5inUzk7y84zqy/dji0/uahppoIgMoKeR+6pUZucrwHfkQQtiG9Rw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.0.tgz", + "integrity": "sha512-zxiQ66JFOjVvP9hbhGj/F/qNdsZfkGb/dVXSanNRNuAzMlr4MC95voPUBX8//ZNnmv3uSYzdfR/JSkrgvZTGxA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@sigstore/sign": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.2.3.tgz", + "integrity": "sha512-LqlA+ffyN02yC7RKszCdMTS6bldZnIodiox+IkT8B2f8oRYXCB3LQ9roXeiEL21m64CVH1wyveYAORfD65WoSw==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "make-fetch-happen": "^13.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { -<<<<<<< HEAD - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", -======= - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", ->>>>>>> main + "node_modules/@sigstore/tuf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.1.tgz", + "integrity": "sha512-9Iv40z652td/QbV0o5n/x25H9w6IYRt2pIGbTX55yFDYlApDQn/6YZomjz6+KBx69rXHLzHcbtTS586mDdFD+Q==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { -<<<<<<< HEAD - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", -======= - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", ->>>>>>> main - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/@sigstore/verify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.1.0.tgz", + "integrity": "sha512-1fTqnqyTBWvV7cftUUFtDcHPdSox0N3Ub7C0lRyReYx4zZUlNTZjCV+HPy4Lre+r45dV7Qx5JLKvqqsgxuyYfg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/cacache": { -<<<<<<< HEAD - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", - "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", -======= - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", ->>>>>>> main + "node_modules/@tufjs/models": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.0.tgz", + "integrity": "sha512-c8nj8BaOExmZKO2DXhDfegyhSGcG9E/mPN3U13L+/PsoWm1uaGiHHjxqSHQiasDBQwDA3aHuw9+9spYAP1qvvg==", "dev": true, "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", -<<<<<<< HEAD - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", -======= - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", ->>>>>>> main - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "@types/node": "*" } }, - "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/node": "*" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, - "engines": { - "node": "14 || >=16.14" + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@types/node": "*" } }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/@types/eslint": { + "version": "8.56.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.5.tgz", + "integrity": "sha512-u5/YPJHo1tvkSF2CE0USEkxon82Z5DBy2xR+qfyYNszpX9qcs4sT6uq2kBbj4BXY1+DBGDPnrhMZV3pKWGNukw==", "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/caniuse-lite": { -<<<<<<< HEAD - "version": "1.0.30001593", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", - "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", -======= - "version": "1.0.30001551", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001551.tgz", - "integrity": "sha512-vtBAez47BoGMMzlbYhfXrMV1kvRF2WP/lqiMuDu1Sb4EE4LKEgjopFDSRtZfdVnslNRpOqV/woE+Xgrwj6VQlg==", ->>>>>>> main - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/@types/jasmine": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", + "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", "dev": true }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "undici-types": "~5.26.4" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@types/node": "*" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } + "node_modules/@types/qs": { + "version": "6.9.12", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.12.tgz", + "integrity": "sha512-bZcOkJ6uWrL0Qb2NAWKa7TBU+mJHPzhx9jjLL1KHF+XpzEcR7EXHvjbHlGtR/IsP1vyPrehuS6XqkmaePy//mg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" + "@types/express": "*" } }, - "node_modules/cli-spinners": { -<<<<<<< HEAD - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", -======= - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", ->>>>>>> main + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" } }, - "node_modules/cli-width": { -<<<<<<< HEAD - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "engines": { - "node": ">= 12" -======= - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, - "engines": { - "node": ">= 10" ->>>>>>> main + "dependencies": { + "@types/node": "*" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "@types/node": "*" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=8" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": ">= 0.6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.0.tgz", + "integrity": "sha512-ZeMtrXnGmTcHciJN1+u2CigWEEXgy1ufoxtWcHORt5kGvpjjIlK9MUhzHm4RM8iVy6dqSaZA/6PVkX6+r+ChjQ==", "dev": true, "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" + "@typescript-eslint/typescript-estree": "6.18.0", + "@typescript-eslint/utils": "6.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/compression/node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", + "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", + "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", "dev": true, "dependencies": { - "ms": "2.0.0" + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", + "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", "dev": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "@typescript-eslint/types": "6.18.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 0.10.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 0.6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/@typescript-eslint/utils": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.0.tgz", + "integrity": "sha512-wiKKCbUeDPGaYEYQh1S580dGxJ/V9HI7K5sbGAVklyf+o5g3O+adnS4UNJajplF4e7z2q0uVBaTdT/yLb4XAVA==", "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.18.0", + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/typescript-estree": "6.18.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">= 0.6" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.0.tgz", + "integrity": "sha512-o/UoDT2NgOJ2VfHpfr+KBY2ErWvCySNUIX/X7O9g8Zzt/tXdpfEU43qbNk8LVuWUT2E0ptzTWXh79i74PP0twA==", "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0" + }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "dev": true - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.0.tgz", + "integrity": "sha512-/RFVIccwkwSdW/1zeMx3hADShWbgBxBnV/qSrex6607isYjj05t36P6LyONgqdUrNLl5TYU8NIKdHUYpFvExkA==", "dev": true, - "dependencies": { - "is-what": "^3.14.1" + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.0.tgz", + "integrity": "sha512-klNvl+Ql4NsBNGB4W9TZ2Od03lm7aGvTbs0wYaFYsplVPhr+oeXjlPZCDI4U9jgJIDK38W1FKhacCFzCC+nbIg==", "dev": true, "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "@typescript-eslint/types": "6.18.0", + "@typescript-eslint/visitor-keys": "6.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">= 14.15.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "webpack": "^5.1.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/copy-webpack-plugin/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.0.tgz", + "integrity": "sha512-1wetAlSZpewRDb2h9p/Q8kRjdGuqdTAQbkJIOUMLug2LBLG+QOjiWoSj6/3B/hA9/tVTFFdtiKvAYoYnSRW/RA==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "@typescript-eslint/types": "6.18.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=10.13.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, -<<<<<<< HEAD - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", "dev": true, "engines": { - "node": ">=12" + "node": ">=14.6.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" } }, - "node_modules/core-js-compat": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", - "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "dependencies": { - "browserslist": "^4.22.3" -======= - "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "browserslist": "^4.22.1" ->>>>>>> main - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, - "node_modules/cosmiconfig": { -<<<<<<< HEAD - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" -======= - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" ->>>>>>> main - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "@xtuc/long": "4.2.2" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, - "node_modules/critters": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", - "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "pretty-bytes": "^5.3.0" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.0-rc.46", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.0-rc.46.tgz", + "integrity": "sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.15.0" } }, - "node_modules/critters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@zkochan/js-yaml": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz", + "integrity": "sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=7.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/critters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@zkochan/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 8" + "node": ">=0.4.0" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "acorn": "^8" } }, - "node_modules/css-loader": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", - "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "node": ">=8.9" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=4" + "node": ">=8.9.0" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "cssom": "~0.3.6" + "debug": "^4.3.4" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true + "engines": { + "node": ">= 14" + } }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, - "engines": { - "node": ">=4.0" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ajv": "^8.0.0" }, - "engines": { - "node": ">=6.0" + "peerDependencies": { + "ajv": "^8.0.0" }, "peerDependenciesMeta": { - "supports-color": { + "ajv": { "optional": true } } }, -<<<<<<< HEAD -======= - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, ->>>>>>> main - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "execa": "^5.0.0" + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">= 10" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "type-fest": "^0.21.3" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, - "engines": { - "node": ">=8" + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/delayed-stream": { -<<<<<<< HEAD -======= - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/delegates": { ->>>>>>> main - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=4" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">= 0.8" + "node": ">= 8" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true - }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "dev": true, - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/autoprefixer": { + "version": "10.4.17", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.17.tgz", + "integrity": "sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "esutils": "^2.0.2" + "browserslist": "^4.22.2", + "caniuse-lite": "^1.0.30001578", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", "dev": true, "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dev": true, "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "dequal": "^2.0.3" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/dotenv": { -<<<<<<< HEAD - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", - "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "dev": true, - "engines": { - "node": ">=12" -======= - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", - "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, - "engines": { - "node": ">=10" ->>>>>>> main + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, "engines": { - "node": ">=0.10.0" + "node": "^4.5.0 || >= 5.9" } }, - "node_modules/electron-to-chromium": { -<<<<<<< HEAD - "version": "1.4.690", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", - "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", -======= - "version": "1.4.559", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.559.tgz", - "integrity": "sha512-iS7KhLYCSJbdo3rUSkhDTVuFNCV34RKs2UaB9Ecr7VlqzjjWW//0nfsFF5dtDmyXlZQaDYYtID5fjtC/6lpRug==", ->>>>>>> main - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "dev": true, "engines": { - "node": ">= 4" + "node": "*" } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "once": "^1.4.0" + "ms": "2.0.0" } }, - "node_modules/engine.io": { -<<<<<<< HEAD - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", - "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", -======= - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.3.tgz", - "integrity": "sha512-IML/R4eG/pUS5w7OfcDE0jKrljWS9nwnEfsxWCIJF5eO6AHo6+Hlv+lQbdlAYsiJPHzUthLm1RUjnBzWOs45cw==", ->>>>>>> main + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" - }, - "engines": { - "node": ">=10.2.0" -<<<<<<< HEAD + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", -======= - } + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true }, - "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">=10.0.0" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", ->>>>>>> main + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "dependencies": { + "fill-range": "^7.0.1" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", - "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=10.13.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "devOptional": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "node_modules/cacache": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.2.tgz", + "integrity": "sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==", "dev": true, - "optional": true, "dependencies": { - "prr": "~1.0.1" + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, -<<<<<<< HEAD - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "node_modules/cacache/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">= 0.4" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { - "node": ">= 0.4" + "node": "14 || >=16.14" } }, - "node_modules/es-module-lexer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", - "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", - "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", -======= - "node_modules/es-module-lexer": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", - "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", - "dev": true - }, - "node_modules/esbuild": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", - "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", ->>>>>>> main + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, - "optionalDependencies": { -<<<<<<< HEAD - "@esbuild/aix-ppc64": "0.20.0", - "@esbuild/android-arm": "0.20.0", - "@esbuild/android-arm64": "0.20.0", - "@esbuild/android-x64": "0.20.0", - "@esbuild/darwin-arm64": "0.20.0", - "@esbuild/darwin-x64": "0.20.0", - "@esbuild/freebsd-arm64": "0.20.0", - "@esbuild/freebsd-x64": "0.20.0", - "@esbuild/linux-arm": "0.20.0", - "@esbuild/linux-arm64": "0.20.0", - "@esbuild/linux-ia32": "0.20.0", - "@esbuild/linux-loong64": "0.20.0", - "@esbuild/linux-mips64el": "0.20.0", - "@esbuild/linux-ppc64": "0.20.0", - "@esbuild/linux-riscv64": "0.20.0", - "@esbuild/linux-s390x": "0.20.0", - "@esbuild/linux-x64": "0.20.0", - "@esbuild/netbsd-x64": "0.20.0", - "@esbuild/openbsd-x64": "0.20.0", - "@esbuild/sunos-x64": "0.20.0", - "@esbuild/win32-arm64": "0.20.0", - "@esbuild/win32-ia32": "0.20.0", - "@esbuild/win32-x64": "0.20.0" - } - }, - "node_modules/esbuild-wasm": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.0.tgz", - "integrity": "sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==", -======= - "@esbuild/android-arm": "0.18.17", - "@esbuild/android-arm64": "0.18.17", - "@esbuild/android-x64": "0.18.17", - "@esbuild/darwin-arm64": "0.18.17", - "@esbuild/darwin-x64": "0.18.17", - "@esbuild/freebsd-arm64": "0.18.17", - "@esbuild/freebsd-x64": "0.18.17", - "@esbuild/linux-arm": "0.18.17", - "@esbuild/linux-arm64": "0.18.17", - "@esbuild/linux-ia32": "0.18.17", - "@esbuild/linux-loong64": "0.18.17", - "@esbuild/linux-mips64el": "0.18.17", - "@esbuild/linux-ppc64": "0.18.17", - "@esbuild/linux-riscv64": "0.18.17", - "@esbuild/linux-s390x": "0.18.17", - "@esbuild/linux-x64": "0.18.17", - "@esbuild/netbsd-x64": "0.18.17", - "@esbuild/openbsd-x64": "0.18.17", - "@esbuild/sunos-x64": "0.18.17", - "@esbuild/win32-arm64": "0.18.17", - "@esbuild/win32-ia32": "0.18.17", - "@esbuild/win32-x64": "0.18.17" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esbuild-wasm": { - "version": "0.18.17", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", - "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", ->>>>>>> main + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true + "node_modules/caniuse-lite": { + "version": "1.0.30001593", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001593.tgz", + "integrity": "sha512-UWM1zlo3cZfkpBysd7AS+z+v007q9G1+fLTUU42rQnY6t2axoogPW/xol6T7juU5EUoOhML4WgBIdG+9yYqAjQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, -<<<<<<< HEAD - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", -======= - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=6.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" }, "optionalDependencies": { - "source-map": "~0.6.1" + "fsevents": "~2.3.2" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", ->>>>>>> main + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", -<<<<<<< HEAD - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", -======= - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", ->>>>>>> main - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=6.0" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", - "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.6" + "restore-cursor": "^3.1.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-scope": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.0.tgz", - "integrity": "sha512-zj3Byw6jX4TcFCJmxOzLt6iol5FAr9xQyZZSQjEzW2UiCJXLwXdRIKCYVFftnpZckaC9Ps9xlC7jB8tSeWWOaw==", + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=6" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 12" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=12" } }, - "node_modules/eslint/node_modules/ansi-styles": { + "node_modules/cliui/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -11160,39 +6172,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/color-convert": { + "node_modules/cliui/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -11204,381 +6184,397 @@ "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/color-name": { + "node_modules/cliui/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.8" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" + "color-name": "1.1.3" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "2.0.0" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.10.0" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "ms": "2.0.0" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 0.6" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "is-what": "^3.14.1" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">= 14.15.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.13.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/core-js-compat": { + "version": "3.36.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.0.tgz", + "integrity": "sha512-iV9Pd/PsgjNWBXeq8XRtWVSgz2tKAfhfvBs7qxYty+RlRd+OCksaWmOnc4JKrTc1cToXL1N0s3l/vwlxPtdElw==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" + "browserslist": "^4.22.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "object-assign": "^4", + "vary": "^1" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.10" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/eslint/node_modules/js-yaml": { + "node_modules/cosmiconfig/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", @@ -11590,58 +6586,80 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/critters": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", + "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "pretty-bytes": "^5.3.0" + } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/eslint/node_modules/supports-color": { + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -11653,802 +6671,888 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 12.13.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, "engines": { - "node": ">=0.10" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "dependencies": { - "estraverse": "^5.2.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, "engines": { "node": ">=4.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 10" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, - "engines": { - "node": ">=0.8.x" + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, - "node_modules/express": { - "version": "4.18.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", - "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.2", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, "engines": { - "node": ">= 0.10.0" + "node": ">=8" } }, -<<<<<<< HEAD -======= - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=0.4.0" } }, ->>>>>>> main - "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/express/node_modules/finalhandler": { + "node_modules/destroy": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=6" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true - }, - "node_modules/fast-glob": { -<<<<<<< HEAD - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", -======= - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", ->>>>>>> main + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "esutils": "^2.0.2" }, "engines": { - "node": ">=8.6.0" + "node": ">=6.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "dependencies": { - "websocket-driver": ">=0.5.1" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": ">=0.8.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "domelementtype": "^2.3.0" }, "engines": { - "node": ">=8" + "node": ">= 4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/dotenv": { + "version": "16.3.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.2.tgz", + "integrity": "sha512-HTlk5nmhkm8F6JcdXvHIzaorzCoziNQT9mGxLPVXW8wJF1TiGSL60ZGB4gHWabHOaMmWmhvk2/lPHfnBiT78AQ==", "dev": true, - "dependencies": { - "minimatch": "^5.0.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, -<<<<<<< HEAD -======= - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=12" } }, ->>>>>>> main - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/electron-to-chromium": { + "version": "1.4.690", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.690.tgz", + "integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, "engines": { "node": ">= 0.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "optional": true, "dependencies": { - "ms": "2.0.0" + "iconv-lite": "^0.6.2" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "optional": true, "dependencies": { - "ee-first": "1.1.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "once": "^1.4.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/engine.io": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" }, "engines": { - "node": ">=8" + "node": ">=10.2.0" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "dev": true, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/flat-cache": { -<<<<<<< HEAD - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", -======= - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", ->>>>>>> main + "node_modules/enhanced-resolve": { + "version": "5.15.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.1.tgz", + "integrity": "sha512-3d3JRbwsCLJsYgvb6NuWEG44jjPSOMuS73L/6+7BZuoKm3W+qXnSoIYVHi8dG7Qcg4inAY4jbzkZ7MnskePeDg==", "dev": true, "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { -<<<<<<< HEAD - "node": "^10.12.0 || >=12.0.0" + "node": ">=10.13.0" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", -======= - "node": ">=12.0.0" + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", ->>>>>>> main + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", "dev": true }, - "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "engines": { - "node": ">=4.0" + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "bin": { + "errno": "cli.js" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.4" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.4" } }, - "node_modules/form-data": { -<<<<<<< HEAD - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", -======= - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", ->>>>>>> main + "node_modules/es-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.0.tgz", + "integrity": "sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==", "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.0", + "@esbuild/android-arm": "0.20.0", + "@esbuild/android-arm64": "0.20.0", + "@esbuild/android-x64": "0.20.0", + "@esbuild/darwin-arm64": "0.20.0", + "@esbuild/darwin-x64": "0.20.0", + "@esbuild/freebsd-arm64": "0.20.0", + "@esbuild/freebsd-x64": "0.20.0", + "@esbuild/linux-arm": "0.20.0", + "@esbuild/linux-arm64": "0.20.0", + "@esbuild/linux-ia32": "0.20.0", + "@esbuild/linux-loong64": "0.20.0", + "@esbuild/linux-mips64el": "0.20.0", + "@esbuild/linux-ppc64": "0.20.0", + "@esbuild/linux-riscv64": "0.20.0", + "@esbuild/linux-s390x": "0.20.0", + "@esbuild/linux-x64": "0.20.0", + "@esbuild/netbsd-x64": "0.20.0", + "@esbuild/openbsd-x64": "0.20.0", + "@esbuild/sunos-x64": "0.20.0", + "@esbuild/win32-arm64": "0.20.0", + "@esbuild/win32-ia32": "0.20.0", + "@esbuild/win32-x64": "0.20.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "node_modules/esbuild-wasm": { + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.0.tgz", + "integrity": "sha512-Lc9KeQCg1Zf8kCtfDXgy29rx0x8dOuhDWbkP76Wc64q7ctOOc1Zv1C39AxiE+y4N6ONyXtJk4HKpM7jlU7/jSA==", "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">= 0.6" + "node": ">=12" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "node": ">=6" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.8.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=14.14" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "dependencies": { - "minipass": "^7.0.3" + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/eslint-plugin-prettier": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz", + "integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==", "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.8.6" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/fs-monkey": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", - "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "node_modules/eslint-scope": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.0.tgz", + "integrity": "sha512-zj3Byw6jX4TcFCJmxOzLt6iol5FAr9xQyZZSQjEzW2UiCJXLwXdRIKCYVFftnpZckaC9Ps9xlC7jB8tSeWWOaw==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", -<<<<<<< HEAD -======= + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", ->>>>>>> main + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8.0.0" + "node": ">=7.0.0" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { "node": ">=10" @@ -12457,403 +7561,383 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/eslint" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "is-glob": "^4.0.3" }, "engines": { - "node": "*" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/globby": { -<<<<<<< HEAD - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", -======= - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", ->>>>>>> main + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", -<<<<<<< HEAD - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", -======= - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", ->>>>>>> main - "merge2": "^1.4.1", - "slash": "^3.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, -<<<<<<< HEAD -======= - "node_modules/guess-parser": { - "version": "0.4.22", - "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", - "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "@wessberg/ts-evaluator": "0.0.27" + "argparse": "^2.0.1" }, - "peerDependencies": { - "typescript": ">=3.7.5" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, ->>>>>>> main - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, -<<<<<<< HEAD - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "p-locate": "^5.0.0" }, -======= - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, ->>>>>>> main "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "es-define-property": "^1.0.0" + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "engines": { - "node": ">= 0.4" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "function-bind": "^1.1.2" + "estraverse": "^5.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10" } }, - "node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "lru-cache": "^10.0.1" + "estraverse": "^5.2.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4.0" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": "14 || >=16.14" + "node": ">=4.0" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "engines": { + "node": ">= 0.6" } }, - "node_modules/hpack.js/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", "dev": true }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" + "engines": { + "node": ">=0.8.x" } }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "whatwg-encoding": "^1.0.5" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", "dev": true }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "node_modules/express": { + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.3.tgz", + "integrity": "sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", "statuses": "2.0.1", - "toidentifier": "1.0.1" + "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/http-errors/node_modules/statuses": { + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", @@ -12862,1684 +7946,1563 @@ "node": ">= 0.8" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=8.0.0" + "node": ">=4" } }, - "node_modules/http-proxy-agent": { -<<<<<<< HEAD - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" -======= - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" ->>>>>>> main + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">= 14" + "node": ">=0.6.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dev": true, - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, - "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 14" + "node": ">=8.6.0" } }, - "node_modules/human-signals": { + "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, - "engines": { - "node": ">=10.17.0" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "websocket-driver": ">=0.5.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } }, - "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "minimatch": "^5.0.1" } }, - "node_modules/ignore-walk": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", - "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "minimatch": "^9.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/ignore-walk/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.8" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/immutable": { -<<<<<<< HEAD - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", -======= - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", - "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", ->>>>>>> main + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/import-fresh/node_modules/resolve-from": { + "node_modules/find-cache-dir": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=8" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "engines": { - "node": ">=8" + "bin": { + "flat": "cli.js" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/inquirer": { -<<<<<<< HEAD - "version": "9.2.14", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.14.tgz", - "integrity": "sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==", + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=18" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" -======= - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", - "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" + "node": ">=14" }, - "engines": { - "node": ">=12.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 6" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" ->>>>>>> main - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.6" } }, -<<<<<<< HEAD - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", "dev": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { - "node": ">= 12" + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" } }, - "node_modules/ip-address/node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", -======= - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.6" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=14.14" } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", ->>>>>>> main + "node_modules/fs-monkey": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", "dev": true }, - "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.9.0" } }, - "node_modules/is-core-module": { -<<<<<<< HEAD - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", -======= - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", ->>>>>>> main + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", "dev": true }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=0.12.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "get-intrinsic": "^1.1.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { - "node": ">= 8.0.0" + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/hasown": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", + "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">= 0.4" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { - "node": ">=8" + "node": "14 || >=16.14" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/istanbul-reports": { -<<<<<<< HEAD - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", -======= - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", ->>>>>>> main + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "engines": { + "node": ">= 0.8" } }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=8.0.0" } }, -<<<<<<< HEAD - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, -======= ->>>>>>> main - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=7.0.0" + "node": ">= 14" } }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10.17.0" } }, -<<<<<<< HEAD - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "*" + "node": ">=0.10.0" } }, -======= ->>>>>>> main - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/jasmine-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", - "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", - "dev": true - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 4" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ignore-walk": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.4.tgz", + "integrity": "sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/immutable": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", + "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", "dev": true }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, "engines": { - "node": ">= 10.13.0" + "node": ">=0.8.19" } }, - "node_modules/jest-worker/node_modules/has-flag": { + "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jiti": { -<<<<<<< HEAD - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", -======= - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", - "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", ->>>>>>> main + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, - "bin": { - "jiti": "bin/jiti.js" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/inquirer": { + "version": "9.2.14", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.14.tgz", + "integrity": "sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18" } }, -<<<<<<< HEAD - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", -======= - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jsdom/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", ->>>>>>> main - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=4" + "node": ">= 12" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", -<<<<<<< HEAD -======= - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", ->>>>>>> main + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jsonc-parser": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", - "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "hasown": "^2.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/karma": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", - "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", - "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.7.2", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, "bin": { - "karma": "bin/karma" + "is-docker": "cli.js" }, "engines": { - "node": ">= 10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/karma-chrome-launcher": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", - "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, - "dependencies": { - "which": "^1.2.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/karma-coverage": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", - "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/karma-jasmine": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", - "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "jasmine-core": "^4.1.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" + "node": ">=0.10.0" } }, - "node_modules/karma-jasmine-html-reporter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", - "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "peerDependencies": { - "jasmine-core": "^4.0.0 || ^5.0.0", - "karma": "^6.0.0", - "karma-jasmine": "^5.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" + "engines": { + "node": ">=0.12.0" } }, -<<<<<<< HEAD - "node_modules/karma/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, -======= ->>>>>>> main - "node_modules/karma/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, -<<<<<<< HEAD - "node_modules/karma/node_modules/color-convert": { + "node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/karma/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, - "node_modules/karma/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "is-docker": "^2.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, -======= ->>>>>>> main - "node_modules/karma/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/karma/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" } }, - "node_modules/karma/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/klona": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", - "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/launch-editor": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", - "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "picocolors": "^1.0.0", - "shell-quote": "^1.8.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/less": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" + "node": ">=8" } }, - "node_modules/less-loader": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", - "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "dependencies": { - "klona": "^2.0.4" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">= 14.15.0" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/isaacs" }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, - "optional": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "optional": true, "bin": { - "mime": "cli.js" + "jake": "bin/cli.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "webpack-sources": "^3.0.0" + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=7.0.0" } }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6.11.5" + "node": ">=8" } }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "node_modules/jake/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 12.13.0" + "node": "*" } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + }, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "node_modules/jasmine-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", + "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", "dev": true }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { + "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -14554,7 +9517,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-symbols/node_modules/chalk": { + "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -14570,7 +9533,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { + "node_modules/jest-diff/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -14582,13 +9545,13 @@ "node": ">=7.0.0" } }, - "node_modules/log-symbols/node_modules/color-name": { + "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/log-symbols/node_modules/has-flag": { + "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -14597,7 +9560,7 @@ "node": ">=8" } }, - "node_modules/log-symbols/node_modules/supports-color": { + "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -14609,360 +9572,356 @@ "node": ">=8" } }, - "node_modules/log4js": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", - "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.5" - }, "engines": { - "node": ">=8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/loglevel": { -<<<<<<< HEAD - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", - "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", -======= - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", ->>>>>>> main + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dev": true, - "engines": { - "node": ">= 0.6.0" + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/loglevel-colored-level-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", - "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "loglevel": "^1.4.1" + "engines": { + "node": ">=8" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true, - "engines": { - "node": ">=0.10.0" + "bin": { + "jiti": "bin/jiti.js" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, - "node_modules/magic-string": { -<<<<<<< HEAD - "version": "0.30.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", - "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", -======= - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", ->>>>>>> main - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "dependencies": { - "semver": "^7.5.3" + "bin": { + "json5": "lib/cli.js" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "universalify": "^2.0.0" }, - "engines": { -<<<<<<< HEAD - "node": "^16.14.0 || >=18.0.0" -======= - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, - "engines": { - "node": ">= 10" - } + "engines": [ + "node >= 0.2.0" + ] }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/karma": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" }, "engines": { - "node": ">= 6" + "node": ">= 10" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, - "engines": { - "node": ">=12" ->>>>>>> main + "dependencies": { + "which": "^1.2.1" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "engines": { - "node": ">= 0.6" + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/memfs": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", - "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, "dependencies": { - "fs-monkey": "^1.0.4" + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" }, "engines": { - "node": ">= 4.0.0" + "node": ">=10.0.0" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "dev": true - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/karma-coverage/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">= 8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "node_modules/karma-coverage/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.6" + "node": "*" } }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "jasmine-core": "^4.1.0" }, "engines": { - "node": ">=8.6" + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" } }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" + "dependencies": { + "source-map-support": "^0.5.5" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/karma/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz", - "integrity": "sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==", + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0", - "tapable": "^2.2.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">=7.0.0" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/minimatch": { -<<<<<<< HEAD - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", -======= + "node_modules/karma/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", ->>>>>>> main "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -14971,2066 +9930,1766 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=0.10.0" } }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "dependencies": { - "minipass": "^7.0.3" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">=10" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "json-buffer": "3.0.1" } }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/minipass-flush/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", "dev": true, - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "engines": { + "node": ">= 8" } }, - "node_modules/minipass-json-stream/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" } }, - "node_modules/minipass-json-stream/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" } }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "klona": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/minipass-pipeline/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, "dependencies": { - "minipass": "^3.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "optional": true, + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/minipass-sized/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "webpack-sources": "^3.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } } }, - "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, - "bin": { - "multicast-dns": "cli.js" + "engines": { + "node": ">=6.11.5" } }, - "node_modules/mute-stream": { -<<<<<<< HEAD - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 12.13.0" } -======= - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true ->>>>>>> main }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "dependencies": { + "p-locate": "^4.1.0" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=8" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, -<<<<<<< HEAD -======= - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, ->>>>>>> main - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "optional": true, "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">= 4.4.x" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/ngx-mask": { - "version": "16.4.2", - "resolved": "https://registry.npmjs.org/ngx-mask/-/ngx-mask-16.4.2.tgz", - "integrity": "sha512-mQjcsTpctGu6HYKLf6/gjEUvW65D+46xvPIMYz0BDZXqHXrqKVluHXR3KF++TNOfdLLXwW6SvuHWd91NZN/C1A==", "dependencies": { - "tslib": "^2.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@angular/common": ">=14.0.0", - "@angular/core": ">=14.0.0", - "@angular/forms": ">=14.0.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 6.13.0" + "node": ">=8" } }, - "node_modules/node-gyp": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", - "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" + "has-flag": "^4.0.0" }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8.0" } }, - "node_modules/node-gyp-build": { -<<<<<<< HEAD - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", -======= - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", - "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", ->>>>>>> main + "node_modules/loglevel": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", + "integrity": "sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==", "dev": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" } }, -<<<<<<< HEAD - "node_modules/node-gyp/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", "dev": true, "engines": { - "node": ">=16" -======= - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" }, "engines": { - "node": ">= 8" ->>>>>>> main + "node": ">=0.10.0" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "dev": true, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "ansi-regex": "^2.0.0" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/node-machine-id": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", - "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", - "dev": true - }, - "node_modules/node-releases": { -<<<<<<< HEAD - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", -======= - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", ->>>>>>> main - "dev": true + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } }, - "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "yallist": "^3.0.2" } }, - "node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "node_modules/magic-string": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", "dev": true, "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/make-fetch-happen": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", + "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", "dev": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "dependencies": { - "npm-normalize-package-bin": "^3.0.0" - }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, "dependencies": { - "semver": "^7.1.1" + "fs-monkey": "^1.0.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 4.0.0" } }, - "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 8" } }, - "node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, - "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, "dependencies": { - "ignore-walk": "^6.0.4" + "braces": "^3.0.2", + "picomatch": "^2.3.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8.6" } }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", - "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/npm-registry-fetch": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz", - "integrity": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==", + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, - "dependencies": { - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^3.0.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=4.0.0" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "mime-db": "1.52.0" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">= 0.6" } }, -<<<<<<< HEAD - "node_modules/nx": { - "version": "17.2.8", - "resolved": "https://registry.npmjs.org/nx/-/nx-17.2.8.tgz", - "integrity": "sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==", + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nrwl/tao": "17.2.8", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.5.1", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^8.0.1", - "dotenv": "~16.3.1", - "dotenv-expand": "~10.0.0", - "enquirer": "~2.3.6", -======= - "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", - "dev": true + "engines": { + "node": ">=6" + } }, - "node_modules/nx": { - "version": "16.5.1", - "resolved": "https://registry.npmjs.org/nx/-/nx-16.5.1.tgz", - "integrity": "sha512-I3hJRE4hG7JWAtncWwDEO3GVeGPpN0TtM8xH5ArZXyDuVeTth/i3TtJzdDzqXO1HHtIoAQN0xeq4n9cLuMil5g==", + "node_modules/mini-css-extract-plugin": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.0.tgz", + "integrity": "sha512-CxmUYPFcTgET1zImteG/LZOy/4T5rTojesQXkSNBiquhydn78tfbCE9sjIjnJ/UcjNjOC1bphTCCW5rrS7cXAg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@nrwl/tao": "16.5.1", - "@parcel/watcher": "2.0.4", - "@yarnpkg/lockfile": "^1.1.0", - "@yarnpkg/parsers": "3.0.0-rc.46", - "@zkochan/js-yaml": "0.0.6", - "axios": "^1.0.0", - "chalk": "^4.1.0", - "cli-cursor": "3.1.0", - "cli-spinners": "2.6.1", - "cliui": "^7.0.2", - "dotenv": "~10.0.0", - "enquirer": "~2.3.6", - "fast-glob": "3.2.7", ->>>>>>> main - "figures": "3.2.0", - "flat": "^5.0.2", - "fs-extra": "^11.1.0", - "glob": "7.1.4", - "ignore": "^5.0.4", -<<<<<<< HEAD - "jest-diff": "^29.4.1", -======= ->>>>>>> main - "js-yaml": "4.1.0", - "jsonc-parser": "3.2.0", - "lines-and-columns": "~2.0.3", - "minimatch": "3.0.5", -<<<<<<< HEAD - "node-machine-id": "1.1.12", -======= ->>>>>>> main - "npm-run-path": "^4.0.1", - "open": "^8.4.0", - "semver": "7.5.3", - "string-width": "^4.2.3", - "strong-log-transformer": "^2.1.0", - "tar-stream": "~2.2.0", - "tmp": "~0.2.1", - "tsconfig-paths": "^4.1.2", - "tslib": "^2.3.0", -<<<<<<< HEAD -======= - "v8-compile-cache": "2.3.0", ->>>>>>> main - "yargs": "^17.6.2", - "yargs-parser": "21.1.1" - }, - "bin": { -<<<<<<< HEAD - "nx": "bin/nx.js", - "nx-cloud": "bin/nx-cloud.js" - }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "17.2.8", - "@nx/nx-darwin-x64": "17.2.8", - "@nx/nx-freebsd-x64": "17.2.8", - "@nx/nx-linux-arm-gnueabihf": "17.2.8", - "@nx/nx-linux-arm64-gnu": "17.2.8", - "@nx/nx-linux-arm64-musl": "17.2.8", - "@nx/nx-linux-x64-gnu": "17.2.8", - "@nx/nx-linux-x64-musl": "17.2.8", - "@nx/nx-win32-arm64-msvc": "17.2.8", - "@nx/nx-win32-x64-msvc": "17.2.8" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, - "peerDependencies": { - "@swc-node/register": "^1.6.7", - "@swc/core": "^1.3.85" -======= - "nx": "bin/nx.js" + "engines": { + "node": ">= 12.13.0" }, - "optionalDependencies": { - "@nx/nx-darwin-arm64": "16.5.1", - "@nx/nx-darwin-x64": "16.5.1", - "@nx/nx-freebsd-x64": "16.5.1", - "@nx/nx-linux-arm-gnueabihf": "16.5.1", - "@nx/nx-linux-arm64-gnu": "16.5.1", - "@nx/nx-linux-arm64-musl": "16.5.1", - "@nx/nx-linux-x64-gnu": "16.5.1", - "@nx/nx-linux-x64-musl": "16.5.1", - "@nx/nx-win32-arm64-msvc": "16.5.1", - "@nx/nx-win32-x64-msvc": "16.5.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@swc-node/register": "^1.4.2", - "@swc/core": "^1.2.173" ->>>>>>> main - }, - "peerDependenciesMeta": { - "@swc-node/register": { - "optional": true - }, - "@swc/core": { - "optional": true - } + "webpack": "^5.0.0" } }, - "node_modules/nx/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nx/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, -<<<<<<< HEAD - "node_modules/nx/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, -======= ->>>>>>> main - "node_modules/nx/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16 || 14 >=14.17" } }, -<<<<<<< HEAD -======= - "node_modules/nx/node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "minipass": "^7.0.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16 || 14 >=14.17" } }, - "node_modules/nx/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/minipass-fetch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", + "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" } }, ->>>>>>> main - "node_modules/nx/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "minipass": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "node_modules/nx/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, -<<<<<<< HEAD -======= - "node_modules/nx/node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/nx/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" } }, ->>>>>>> main - "node_modules/nx/node_modules/glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/nx/node_modules/has-flag": { + "node_modules/minipass-json-stream/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/nx/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "yallist": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, -<<<<<<< HEAD - "node_modules/nx/node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true -======= - "node_modules/nx/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "minipass": "^3.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/nx/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" } ->>>>>>> main }, - "node_modules/nx/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { + "minipass": "^3.0.0", "yallist": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/nx/node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "yallist": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/nx/node_modules/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "minimist": "^1.2.6" }, "bin": { - "semver": "bin/semver.js" - }, + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, "engines": { "node": ">=10" } }, - "node_modules/nx/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" }, - "engines": { - "node": ">=8" + "bin": { + "multicast-dns": "cli.js" } }, -<<<<<<< HEAD -======= - "node_modules/nx/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/nx/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">= 10.0.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, ->>>>>>> main - "node_modules/nx/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 4.4.x" } }, - "node_modules/object-inspect": { -<<<<<<< HEAD - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", -======= - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.0.tgz", - "integrity": "sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g==", ->>>>>>> main + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/object-path": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", - "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, "engines": { - "node": ">= 10.12.0" + "node": ">= 0.6" } }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, + "node_modules/ngx-mask": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/ngx-mask/-/ngx-mask-16.4.2.tgz", + "integrity": "sha512-mQjcsTpctGu6HYKLf6/gjEUvW65D+46xvPIMYz0BDZXqHXrqKVluHXR3KF++TNOfdLLXwW6SvuHWd91NZN/C1A==", "dependencies": { - "ee-first": "1.1.1" + "tslib": "^2.3.0" }, - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "@angular/common": ">=14.0.0", + "@angular/core": ">=14.0.0", + "@angular/forms": ">=14.0.0" } }, - "node_modules/on-headers": { + "node_modules/nice-napi": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", "dev": true, - "engines": { - "node": ">= 0.8" + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", "dev": true, - "dependencies": { - "wrappy": "1" - } + "optional": true }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6.13.0" } }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "node_modules/node-gyp": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", + "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", "dev": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" }, - "engines": { - "node": ">=12" + "bin": { + "node-gyp": "bin/node-gyp.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/node-gyp-build": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", + "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/node-gyp/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16" } }, - "node_modules/ora/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "isexe": "^3.1.1" }, - "engines": { - "node": ">=10" + "bin": { + "node-which": "bin/which.js" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": "^16.13.0 || >=18.0.0" } }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/nopt": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", + "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=7.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "semver": "^7.1.1" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", "dev": true, "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", "dev": true, + "dependencies": { + "ignore-walk": "^6.0.4" + }, "engines": { - "node": ">= 4" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/npm-pick-manifest": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, "engines": { - "node": ">=6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pacote": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz", - "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==", + "node_modules/npm-registry-fetch": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.1.0.tgz", + "integrity": "sha512-PQCELXKt8Azvxnt5Y85GseQDJJlglTFM9L9U9gkv2y4e9s0k3GVDdOx3YoB6gm2Do0hlkzC39iCGXby+Wve1Bw==", "dev": true, "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^7.0.0", - "cacache": "^18.0.0", - "fs-minipass": "^3.0.0", + "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^16.0.0", - "proc-log": "^3.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^7.0.0", - "read-package-json-fast": "^3.0.0", - "sigstore": "^2.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "proc-log": "^3.0.0" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" + "boolbase": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/parse-json/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/parse-json/node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "node_modules/nx": { + "version": "17.2.8", + "resolved": "https://registry.npmjs.org/nx/-/nx-17.2.8.tgz", + "integrity": "sha512-rM5zXbuXLEuqQqcjVjClyvHwRJwt+NVImR2A6KFNG40Z60HP6X12wAxxeLHF5kXXTDRU0PFhf/yACibrpbPrAw==", "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "devOptional": true, + "hasInstallScript": true, "dependencies": { - "entities": "^4.4.0" + "@nrwl/tao": "17.2.8", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.0-rc.46", + "@zkochan/js-yaml": "0.0.6", + "axios": "^1.5.1", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.3.1", + "dotenv-expand": "~10.0.0", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "fs-extra": "^11.1.0", + "glob": "7.1.4", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "js-yaml": "4.1.0", + "jsonc-parser": "3.2.0", + "lines-and-columns": "~2.0.3", + "minimatch": "3.0.5", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "semver": "7.5.3", + "string-width": "^4.2.3", + "strong-log-transformer": "^2.1.0", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "17.2.8", + "@nx/nx-darwin-x64": "17.2.8", + "@nx/nx-freebsd-x64": "17.2.8", + "@nx/nx-linux-arm-gnueabihf": "17.2.8", + "@nx/nx-linux-arm64-gnu": "17.2.8", + "@nx/nx-linux-arm64-musl": "17.2.8", + "@nx/nx-linux-x64-gnu": "17.2.8", + "@nx/nx-linux-x64-musl": "17.2.8", + "@nx/nx-win32-arm64-msvc": "17.2.8", + "@nx/nx-win32-x64-msvc": "17.2.8" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-html-rewriting-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", - "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", - "dev": true, - "dependencies": { - "entities": "^4.3.0", - "parse5": "^7.0.0", - "parse5-sax-parser": "^7.0.0" + "peerDependencies": { + "@swc-node/register": "^1.6.7", + "@swc/core": "^1.3.85" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } } }, - "node_modules/parse5-sax-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", - "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "parse5": "^7.0.0" + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/nx/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/nx/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { -<<<<<<< HEAD - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", -======= - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.1.tgz", - "integrity": "sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==", ->>>>>>> main - "dev": true, - "engines": { - "node": "14 || >=16.14" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "node_modules/nx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/picomatch": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", - "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "node_modules/nx/node_modules/glob": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/piscina": { -<<<<<<< HEAD - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.3.1.tgz", - "integrity": "sha512-MBj0QYm3hJQ/C/wIXTN1OCYC8uQ4BBJ4LVele2P4ZwVQAH04vkk8E1SpDbuemLAL1dZorbuOob9rYqJeWCcCRg==", -======= + "node_modules/nx/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", - "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", ->>>>>>> main + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "optionalDependencies": { - "nice-napi": "^1.0.2" + "engines": { + "node": ">=8" } }, - "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/nx/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "find-up": "^6.3.0" - }, - "engines": { - "node": ">=14.16" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/nx/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/nx/node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dev": true, "dependencies": { - "p-locate": "^6.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/nx/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { - "yocto-queue": "^1.0.0" + "lru-cache": "^6.0.0" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-limit": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/nx/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" -<<<<<<< HEAD + "node": ">=0.10.0" } }, - "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "engines": { - "node": ">=12.20" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/postcss": { - "version": "8.4.35", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", - "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", -======= + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", ->>>>>>> main - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true }, - "node_modules/postcss-loader": { -<<<<<<< HEAD - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.0.tgz", - "integrity": "sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==", - "dev": true, - "dependencies": { - "cosmiconfig": "^9.0.0", - "jiti": "^1.20.0", - "semver": "^7.5.4" -======= - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "dependencies": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" ->>>>>>> main + "ee-first": "1.1.1" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.8" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", - "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "wrappy": "1" } }, - "node_modules/postcss-modules-scope": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", - "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.4" + "mimic-fn": "^2.1.0" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=6" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=12" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", - "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, "engines": { "node": ">= 0.8.0" } }, - "node_modules/prettier": { -<<<<<<< HEAD - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", -======= - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", - "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", ->>>>>>> main - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/prettier-eslint": { -<<<<<<< HEAD - "version": "16.3.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", - "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", -======= - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.2.0.tgz", - "integrity": "sha512-GDTSKc62VaLceiaI/qMaKo2oco2CIWtbj4Zr6ckhbTgcBL/uR0d9jkMzh9OtBIT/Z7iBoCB4OHj/aJ5YuNgAuA==", ->>>>>>> main + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "dependencies": { - "@typescript-eslint/parser": "^6.7.5", - "common-tags": "^1.4.0", - "dlv": "^1.1.0", - "eslint": "^8.7.0", - "indent-string": "^4.0.0", - "lodash.merge": "^4.6.0", - "loglevel-colored-level-prefix": "^1.0.0", - "prettier": "^3.0.1", - "pretty-format": "^29.7.0", - "require-relative": "^0.8.7", - "typescript": "^5.2.2", - "vue-eslint-parser": "^9.1.0" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=16.10.0" -<<<<<<< HEAD - }, - "peerDependencies": { - "prettier-plugin-svelte": "^3.0.0", - "svelte-eslint-parser": "*" + "node": ">=10" }, - "peerDependenciesMeta": { - "prettier-plugin-svelte": { - "optional": true - }, - "svelte-eslint-parser": { -======= + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/parser": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.9.0.tgz", - "integrity": "sha512-GZmjMh4AJ/5gaH4XF2eXA8tMnHWP+Pm1mjQR2QN4Iz+j/zO04b9TOvJYOX2sCNIQHtRStKTxRY1FX7LhpJT4Gw==", + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.9.0", - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/typescript-estree": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4" + "color-convert": "^2.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { ->>>>>>> main - "optional": true - } + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, -<<<<<<< HEAD -======= - "node_modules/prettier-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.9.0.tgz", - "integrity": "sha512-1R8A9Mc39n4pCCz9o79qRO31HGNDvC7UhPhv26TovDsWPBDx+Sg3rOZdCELIA3ZmNoWAuxaMOT7aWtGRSYkQxw==", + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/types": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.9.0.tgz", - "integrity": "sha512-+KB0lbkpxBkBSiVCuQvduqMJy+I1FyDbdwSpM3IoBS7APl4Bu15lStPjgBIdykdRqQNYqYNMa8Kuidax6phaEw==", + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.9.0.tgz", - "integrity": "sha512-NJM2BnJFZBEAbCfBP00zONKXvMqihZCrmwCaik0UhLr0vAgb6oguXxLX1k00oQyD+vZZ+CJn3kocvv2yxm4awQ==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "@typescript-eslint/visitor-keys": "6.9.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.9.0.tgz", - "integrity": "sha512-dGtAfqjV6RFOtIP8I0B4ZTBRrlTT8NHHlZZSchQx3qReaoDeXhYM++M4So2AgFK9ZB0emRPA6JI1HkafzA2Ibg==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.9.0", - "eslint-visitor-keys": "^3.4.1" + "p-limit": "^2.2.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/prettier-eslint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "aggregate-error": "^3.0.0" }, "engines": { "node": ">=10" @@ -17039,723 +11698,726 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-eslint/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, "engines": { "node": ">=8" } }, - "node_modules/prettier-eslint/node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, "engines": { - "node": ">=14.17" + "node": ">= 4" } }, ->>>>>>> main - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "dependencies": { - "fast-diff": "^1.1.2" - }, "engines": { - "node": ">=6.0.0" + "node": ">=6" } }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "node_modules/pacote": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.4.tgz", + "integrity": "sha512-eGdLHrV/g5b5MtD5cTPyss+JxOlaOloSMG3UwPMAvL8ywaLJ6beONPF40K4KKl/UI6q5hTKCJq5rCu8tkF+7Dg==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "callsites": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/pretty-format/node_modules/ansi-styles": { + "node_modules/parse-json": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/proc-log": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", - "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "node_modules/parse-json/node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "dev": true }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "entities": "^4.4.0" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, - "engines": { - "node": ">= 0.10" + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "dev": true, - "optional": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "engines": { + "node": ">= 0.8" + } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, "engines": { - "node": ">=0.9" + "node": ">=0.10.0" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { - "node": ">= 0.6" + "node": "14 || >=16.14" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", "dev": true }, - "node_modules/read-package-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", - "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", + "node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", "dev": true, - "dependencies": { - "glob": "^10.2.2", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/read-package-json-fast": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", - "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, + "optional": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { -<<<<<<< HEAD -======= - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node_modules/piscina": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.3.1.tgz", + "integrity": "sha512-MBj0QYm3hJQ/C/wIXTN1OCYC8uQ4BBJ4LVele2P4ZwVQAH04vkk8E1SpDbuemLAL1dZorbuOob9rYqJeWCcCRg==", + "dev": true, + "optionalDependencies": { + "nice-napi": "^1.0.2" } }, - "node_modules/read-package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { ->>>>>>> main - "node": ">=16 || 14 >=14.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" -<<<<<<< HEAD -======= + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" ->>>>>>> main + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "p-limit": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/pkg-dir/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", "dev": true, "engines": { - "node": ">=8.6" + "node": ">=12.20" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/reflect-metadata": { -<<<<<<< HEAD - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", - "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", -======= - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", ->>>>>>> main - "dev": true - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "regenerate": "^1.4.2" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || >=14" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "node_modules/postcss-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.0.tgz", + "integrity": "sha512-AbperNcX3rlob7Ay7A/HQcrofug1caABBkopoFeOQMspZBqcqj6giYn1Bwey/0uiOPAcR+NQD0I2HC7rXzk91w==", "dev": true, "dependencies": { - "@babel/runtime": "^7.8.4" + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", - "dev": true - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", "dev": true, "dependencies": { - "jsesc": "~0.5.0" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", "dev": true, - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/require-relative": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", - "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", - "dev": true - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/prettier": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "node_modules/prettier-eslint": { + "version": "16.3.0", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-16.3.0.tgz", + "integrity": "sha512-Lh102TIFCr11PJKUMQ2kwNmxGhTsv/KzUg9QYF2Gkw259g/kPgndZDWavk7/ycbRvj2oz4BPZ1gCU8bhfZH/Xg==", "dev": true, "dependencies": { - "adjust-sourcemap-loader": "^4.0.0", - "convert-source-map": "^1.7.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.14", - "source-map": "0.6.1" + "@typescript-eslint/parser": "^6.7.5", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^8.7.0", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^3.0.1", + "pretty-format": "^29.7.0", + "require-relative": "^0.8.7", + "typescript": "^5.2.2", + "vue-eslint-parser": "^9.1.0" }, "engines": { - "node": ">=12" + "node": ">=16.10.0" + }, + "peerDependencies": { + "prettier-plugin-svelte": "^3.0.0", + "svelte-eslint-parser": "*" + }, + "peerDependenciesMeta": { + "prettier-plugin-svelte": { + "optional": true + }, + "svelte-eslint-parser": { + "optional": true + } } }, - "node_modules/resolve-url-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "fast-diff": "^1.1.2" }, "engines": { - "node": ">=8.9.0" + "node": ">=6.0.0" } }, - "node_modules/resolve-url-loader/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/rfdc": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", - "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10" } }, - "node_modules/rollup": { -<<<<<<< HEAD - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", - "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", -======= - "version": "3.29.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", - "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", ->>>>>>> main + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.12.0", - "@rollup/rollup-android-arm64": "4.12.0", - "@rollup/rollup-darwin-arm64": "4.12.0", - "@rollup/rollup-darwin-x64": "4.12.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", - "@rollup/rollup-linux-arm64-gnu": "4.12.0", - "@rollup/rollup-linux-arm64-musl": "4.12.0", - "@rollup/rollup-linux-riscv64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-gnu": "4.12.0", - "@rollup/rollup-linux-x64-musl": "4.12.0", - "@rollup/rollup-win32-arm64-msvc": "4.12.0", - "@rollup/rollup-win32-ia32-msvc": "4.12.0", - "@rollup/rollup-win32-x64-msvc": "4.12.0", - "fsevents": "~2.3.2" + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" } }, - "node_modules/run-async": { -<<<<<<< HEAD - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", -======= - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", ->>>>>>> main + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=6" } }, - "node_modules/run-parallel": { + "node_modules/qjobs": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "engines": { + "node": ">=0.9" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, "dependencies": { - "tslib": "^2.1.0" + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -17772,615 +12434,491 @@ } ] }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/safevalues": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", - "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" - }, - "node_modules/sass": { -<<<<<<< HEAD - "version": "1.70.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", - "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", -======= - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", ->>>>>>> main + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=14.0.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/sass-loader": { -<<<<<<< HEAD - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.0.tgz", - "integrity": "sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==", -======= - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", - "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", ->>>>>>> main + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "dependencies": { - "neo-async": "^2.6.2" - }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", - "sass": "^1.3.0", - "sass-embedded": "*", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "webpack": { - "optional": true - } + "node": ">= 0.6" } }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true, - "optional": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "dependencies": { - "xmlchars": "^2.2.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-package-json": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.0.tgz", + "integrity": "sha512-uL4Z10OKV4p6vbdvIXB+OzhInYtIozl/VxUBPgNkBuUi2DeRonnuspmaVAMcrkmfjKGNmRndyQAbE7/AmzGwFg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", - "dev": true - }, - "node_modules/selfsigned": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", - "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", "dev": true, "dependencies": { - "@types/node-forge": "^1.3.0", - "node-forge": "^1" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=10" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/semver": { -<<<<<<< HEAD - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", -======= - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", ->>>>>>> main + "node_modules/read-package-json/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "semver": "bin/semver.js" + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "node": ">=16 || 14 >=14.17" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 6" } }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "ms": "2.0.0" + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" } }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.1.tgz", + "integrity": "sha512-i5lLI6iw9AU3Uu4szRNPPEkomnkjRTaVt9hy/bn5g/oSzekBSMeLZblcjP74AW0vBabqERLLIrz+gR8QYR54Tw==", "dev": true }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, - "bin": { - "mime": "cli.js" + "dependencies": { + "regenerate": "^1.4.2" }, "engines": { "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, - "node_modules/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "engines": { - "node": ">= 0.8" + "dependencies": { + "@babel/runtime": "^7.8.4" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" + "jsesc": "~0.5.0" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "regjsparser": "bin/parser" } }, - "node_modules/serve-index/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "bin": { + "jsesc": "bin/jsesc" } }, - "node_modules/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", "dev": true }, - "node_modules/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "dev": true }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", "dev": true, "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" } }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { - "kind-of": "^6.0.2" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=8" + "node": ">=8.9.0" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 0.4" + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sigstore": { -<<<<<<< HEAD - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz", - "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==", - "dev": true, - "dependencies": { - "@sigstore/bundle": "^2.2.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.0", - "@sigstore/sign": "^2.2.3", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.1.0" -======= - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", - "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "node_modules/rollup": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.12.0.tgz", + "integrity": "sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==", "dev": true, "dependencies": { - "@sigstore/bundle": "^1.1.0", - "@sigstore/protobuf-specs": "^0.2.0", - "@sigstore/sign": "^1.0.0", - "@sigstore/tuf": "^1.0.3", - "make-fetch-happen": "^11.0.1" + "@types/estree": "1.0.5" }, "bin": { - "sigstore": "bin/sigstore.js" ->>>>>>> main + "rollup": "dist/bin/rollup" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.12.0", + "@rollup/rollup-android-arm64": "4.12.0", + "@rollup/rollup-darwin-arm64": "4.12.0", + "@rollup/rollup-darwin-x64": "4.12.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.12.0", + "@rollup/rollup-linux-arm64-gnu": "4.12.0", + "@rollup/rollup-linux-arm64-musl": "4.12.0", + "@rollup/rollup-linux-riscv64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-gnu": "4.12.0", + "@rollup/rollup-linux-x64-musl": "4.12.0", + "@rollup/rollup-win32-arm64-msvc": "4.12.0", + "@rollup/rollup-win32-ia32-msvc": "4.12.0", + "@rollup/rollup-win32-x64-msvc": "4.12.0", + "fsevents": "~2.3.2" } }, - "node_modules/slash": { + "node_modules/run-async": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=0.12.0" } }, - "node_modules/socket.io": { -<<<<<<< HEAD - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", - "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", -======= - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", - "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", ->>>>>>> main + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.5.2", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" + "queue-microtask": "^1.2.2" } }, - "node_modules/socket.io-adapter": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", - "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", - "dev": true, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { - "debug": "~4.3.4", - "ws": "~8.11.0" + "tslib": "^2.1.0" } }, - "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "utf-8-validate": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", - "dev": true, - "dependencies": { - "faye-websocket": "^0.11.3", - "uuid": "^8.3.2", - "websocket-driver": "^0.7.4" - } + ] }, - "node_modules/socks": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", - "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", - "dev": true, - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, - "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "node_modules/safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "node_modules/sass": { + "version": "1.70.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.70.0.tgz", + "integrity": "sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "socks": "^2.7.1" + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/source-map-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", - "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "node_modules/sass-loader": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.0.tgz", + "integrity": "sha512-LS2mLeFWA+orYxHNu+O18Xe4jR0kyamNOOUsE3NyBP4DvIL+8stHpNX0arYTItdPe80kluIiJ7Wfe/9iHSRO0Q==", "dev": true, "dependencies": { - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" + "neo-async": "^2.6.2" }, "engines": { "node": ">= 18.12.0" @@ -18390,1545 +12928,1518 @@ "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.72.1" + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/source-map-loader/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/spdx-license-ids": { -<<<<<<< HEAD - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", -======= - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", ->>>>>>> main + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, - "node_modules/spdy": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", - "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "handle-thing": "^2.0.0", - "http-deceiver": "^1.2.7", - "select-hose": "^2.0.0", - "spdy-transport": "^3.0.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.8.0" } }, - "node_modules/spdy-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", - "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "debug": "^4.1.0", - "detect-node": "^2.0.4", - "hpack.js": "^2.1.6", - "obuf": "^1.1.2", - "readable-stream": "^3.0.6", - "wbuf": "^1.7.3" + "ms": "2.0.0" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "dependencies": { - "minipass": "^7.0.3" + "bin": { + "mime": "cli.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=4" } }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/streamroller": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", - "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" + "randombytes": "^2.1.0" } }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">= 0.8.0" } }, - "node_modules/streamroller/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/streamroller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 0.6" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "kind-of": "^6.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "shebang-regex": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/strip-bom": { + "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strong-log-transformer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", - "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "duplexer": "^0.1.1", - "minimist": "^1.2.0", - "through": "^2.3.4" - }, - "bin": { - "sl-log-transformer": "bin/sl-log-transformer.js" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.2.2.tgz", + "integrity": "sha512-2A3WvXkQurhuMgORgT60r6pOWiCOO5LlEqY2ADxGBDGVYLSo5HN0uLtb68YpVpuL/Vi8mLTe7+0Dx2Fq8lLqEg==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@sigstore/bundle": "^2.2.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.0", + "@sigstore/sign": "^2.2.3", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.1.0" }, "engines": { - "node": ">=4" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "engines": { - "node": ">=0.10" + "node": ">= 6.0.0", + "npm": ">= 3.0.0" } }, -<<<<<<< HEAD -======= - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, ->>>>>>> main - "node_modules/synckit": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", - "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", + "node_modules/socket.io": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.4.tgz", + "integrity": "sha512-DcotgfP1Zg9iP/dH9zvAQcWrE0TtbMVwXmlV4T4mqsvY+gw+LqUGPfx2AoVyRk0FLME+GQhufDMyacFmw7ksqw==", "dev": true, "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" + "node": ">=10.2.0" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/socket.io-adapter": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.4.tgz", + "integrity": "sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.11.0" } }, - "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, "engines": { - "node": ">=10" + "node": ">=10.0.0" } }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" } }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 8" + "node": ">= 10.0.0", + "npm": ">= 3.0.0" } }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/terser": { -<<<<<<< HEAD - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", - "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", -======= - "version": "5.19.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", - "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", ->>>>>>> main + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "webpack": "^5.72.1" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=0.10.0" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, -<<<<<<< HEAD - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" }, "engines": { - "node": "*" + "node": ">=6.0.0" } }, -======= ->>>>>>> main - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } }, - "node_modules/thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "node_modules/ssri": { + "version": "10.0.5", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", + "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8.17.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" }, "engines": { "node": ">=8.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, "engines": { - "node": ">=0.6" + "node": ">=6 <7 || >=8" } }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { "node": ">= 4.0.0" } }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" + "safe-buffer": "~5.2.0" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "bin": { - "tree-kill": "cli.js" + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/ts-api-utils": { -<<<<<<< HEAD - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true, - "engines": { - "node": ">=16" -======= - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "engines": { - "node": ">=16.13.0" ->>>>>>> main + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "engines": { + "node": ">=8" } -<<<<<<< HEAD -======= }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "tslib": "^1.8.1" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "node": ">=8" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true ->>>>>>> main + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tuf-js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", - "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "@tufjs/models": "2.0.0", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.0" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + }, + "bin": { + "sl-log-transformer": "bin/sl-log-transformer.js" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=4" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.10" } }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "node_modules/synckit": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz", + "integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.17" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" } }, - "node_modules/ua-parser-js": { -<<<<<<< HEAD - "version": "0.7.37", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", - "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", -======= - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-CPPLoCts2p7D8VbybttE3P2ylv0OBZEAy7a12DsulIEcAiMtWJy+PBgMXgWDI80D5UwqE8oQPHYnk13tm38M2Q==", ->>>>>>> main + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], "engines": { - "node": "*" + "node": ">=6" } }, -<<<<<<< HEAD - "node_modules/undici": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", - "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, "dependencies": { - "@fastify/busboy": "^2.0.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, "engines": { - "node": ">=18.0" + "node": ">=10" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", -======= - "node_modules/undici-types": { - "version": "5.25.3", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", - "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==", ->>>>>>> main - "dev": true + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/terser": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.27.0.tgz", + "integrity": "sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==", "dev": true, "dependencies": { - "unique-slug": "^4.0.0" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "engines": { - "node": ">= 10.0.0" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, - "bin": { - "update-browserslist-db": "cli.js" + "engines": { + "node": ">= 10.13.0" }, - "peerDependencies": { - "browserslist": ">= 4.21.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.4.0" + "node": "*" } }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" } }, - "node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "builtins": "^5.0.0" + "is-number": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8.0" } }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { - "node": ">= 0.8" + "node": ">=0.6" } }, - "node_modules/vite": { -<<<<<<< HEAD - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" -======= - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", - "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true, - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" ->>>>>>> main - }, "bin": { - "vite": "bin/vite.js" - }, + "tree-kill": "cli.js" + } + }, + "node_modules/ts-api-utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", + "dev": true, "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" + "node": ">=16" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "dev": true, + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/vite/node_modules/@esbuild/aix-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", - "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", - "cpu": [ - "ppc64" - ], + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tuf-js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.0.tgz", + "integrity": "sha512-ZSDngmP1z6zw+FIkIBjvOp/II/mIub/O7Pp12j1WNsiCpg5R5wAc//i555bBQsE44O94btLt0xM/Zr2LQjwdCg==", "dev": true, - "optional": true, - "os": [ - "aix" - ], + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, "engines": { - "node": ">=12" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/vite/node_modules/@esbuild/android-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", - "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", - "cpu": [ - "arm" - ], + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "prelude-ls": "^1.2.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.8.0" } }, - "node_modules/vite/node_modules/@esbuild/android-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", - "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", - "cpu": [ - "arm64" - ], + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vite/node_modules/@esbuild/android-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", - "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", - "cpu": [ - "x64" - ], + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/vite/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", - "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", - "cpu": [ - "arm64" - ], + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=12" + "node": ">=14.17" } }, - "node_modules/vite/node_modules/@esbuild/darwin-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", - "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", - "cpu": [ - "x64" - ], + "node_modules/ua-parser-js": { + "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", "dev": true, - "optional": true, - "os": [ - "darwin" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } ], "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", - "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", - "cpu": [ - "arm64" - ], + "node_modules/undici": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", + "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=18.0" } }, - "node_modules/vite/node_modules/@esbuild/freebsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", - "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", - "cpu": [ - "x64" - ], + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/vite/node_modules/@esbuild/linux-arm": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", - "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", - "cpu": [ - "arm" - ], + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/vite/node_modules/@esbuild/linux-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", - "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", - "cpu": [ - "arm64" - ], + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/vite/node_modules/@esbuild/linux-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", - "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", - "cpu": [ - "ia32" - ], + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/vite/node_modules/@esbuild/linux-loong64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", - "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", - "cpu": [ - "loong64" - ], + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "unique-slug": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-mips64el": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", - "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", - "cpu": [ - "mips64el" - ], + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "imurmurhash": "^0.1.4" + }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-ppc64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", - "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", - "cpu": [ - "ppc64" - ], + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/vite/node_modules/@esbuild/linux-riscv64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", - "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", - "cpu": [ - "riscv64" - ], + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, - "optional": true, - "os": [ - "linux" + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } ], - "engines": { - "node": ">=12" + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-s390x": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", - "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", - "cpu": [ - "s390x" - ], + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "dependencies": { + "punycode": "^2.1.0" } }, - "node_modules/vite/node_modules/@esbuild/linux-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", - "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", - "cpu": [ - "x64" - ], + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=12" + "node": ">= 0.4.0" } }, - "node_modules/vite/node_modules/@esbuild/netbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", - "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", - "cpu": [ - "x64" - ], + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/vite/node_modules/@esbuild/openbsd-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", - "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", - "cpu": [ - "x64" - ], + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vite/node_modules/@esbuild/sunos-x64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", - "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", - "cpu": [ - "x64" - ], + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", "dev": true, - "optional": true, - "os": [ - "sunos" - ], + "dependencies": { + "builtins": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/vite/node_modules/@esbuild/win32-arm64": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", - "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", - "cpu": [ - "arm64" - ], + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/vite/node_modules/@esbuild/win32-ia32": { - "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", - "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", - "cpu": [ - "ia32" - ], + "node_modules/vite": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, "engines": { - "node": ">=12" + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } } }, - "node_modules/vite/node_modules/@esbuild/win32-x64": { + "node_modules/vite/node_modules/@esbuild/linux-x64": { "version": "0.19.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", - "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", "cpu": [ "x64" ], "dev": true, "optional": true, "os": [ - "win32" + "linux" ], "engines": { "node": ">=12" @@ -19982,15 +14493,9 @@ } }, "node_modules/vue-eslint-parser": { -<<<<<<< HEAD "version": "9.4.2", "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.2.tgz", "integrity": "sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==", -======= - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz", - "integrity": "sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==", ->>>>>>> main "dev": true, "dependencies": { "debug": "^4.3.4", @@ -20027,31 +14532,6 @@ "url": "https://opencollective.com/eslint" } }, -<<<<<<< HEAD -======= - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, ->>>>>>> main "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -20083,25 +14563,10 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, "node_modules/webpack": { -<<<<<<< HEAD "version": "5.90.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.1.tgz", "integrity": "sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==", -======= - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", ->>>>>>> main "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -20420,45 +14885,19 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "which": "bin/which" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/wildcard": { @@ -20572,12 +15011,12 @@ "dev": true }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -20592,18 +15031,6 @@ } } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -20647,36 +15074,21 @@ } }, "node_modules/yocto-queue": { -<<<<<<< HEAD "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "engines": { "node": ">=10" -======= - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" ->>>>>>> main }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/zone.js": { -<<<<<<< HEAD "version": "0.14.4", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.4.tgz", "integrity": "sha512-NtTUvIlNELez7Q1DzKVIFZBzNb646boQMgpATo9z3Ftuu/gWvzxCW7jdjcUDoRGxRikrhVHB/zLXh1hxeJawvw==", -======= - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", - "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", ->>>>>>> main "dependencies": { "tslib": "^2.3.0" } diff --git a/modules/ui/package.json b/modules/ui/package.json index 397c5af7a..1fb2a3661 100644 --- a/modules/ui/package.json +++ b/modules/ui/package.json @@ -17,7 +17,6 @@ }, "private": true, "dependencies": { -<<<<<<< HEAD "@angular/animations": "^17.0.8", "@angular/cdk": "^17.0.4", "@angular/common": "^17.0.8", @@ -49,36 +48,6 @@ "@typescript-eslint/eslint-plugin": "^6.21.0", "@typescript-eslint/parser": "^6.21.0", "eslint": "^8.57.0", -======= - "@angular/animations": "^16.2.12", - "@angular/cdk": "^16.2.13", - "@angular/common": "^16.2.12", - "@angular/compiler": "^16.2.12", - "@angular/core": "^16.2.12", - "@angular/forms": "^16.2.12", - "@angular/material": "^16.2.13", - "@angular/platform-browser": "^16.2.12", - "@angular/platform-browser-dynamic": "^16.2.12", - "@angular/router": "^16.2.12", - "ngx-mask": "^16.4.2", - "rxjs": "~7.8.0", - "tslib": "^2.6.2", - "zone.js": "~0.13.3" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^16.2.12", - "@angular-eslint/builder": "16.2.0", - "@angular-eslint/eslint-plugin": "16.2.0", - "@angular-eslint/eslint-plugin-template": "16.2.0", - "@angular-eslint/schematics": "16.2.0", - "@angular-eslint/template-parser": "16.2.0", - "@angular/cli": "~16.1.8", - "@angular/compiler-cli": "^16.2.12", - "@types/jasmine": "~4.3.6", - "@typescript-eslint/eslint-plugin": "5.62.0", - "@typescript-eslint/parser": "5.62.0", - "eslint": "^8.56.0", ->>>>>>> main "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jasmine-core": "~4.6.0", @@ -87,14 +56,8 @@ "karma-coverage": "~2.2.0", "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "~2.1.0", -<<<<<<< HEAD "prettier": "^3.2.5", "prettier-eslint": "^16.3.0", "typescript": "~5.2.2" -======= - "prettier": "^3.1.1", - "prettier-eslint": "^16.2.0", - "typescript": "~5.1.3" ->>>>>>> main } } diff --git a/modules/ui/src/app/app-routing.module.ts b/modules/ui/src/app/app-routing.module.ts index 0c43b2349..d503116d6 100644 --- a/modules/ui/src/app/app-routing.module.ts +++ b/modules/ui/src/app/app-routing.module.ts @@ -18,25 +18,15 @@ import { RouterModule, Routes } from '@angular/router'; const routes: Routes = [ { -<<<<<<< HEAD path: 'testing', loadChildren: () => import('./pages/testrun/progress.module').then(m => m.ProgressModule), -======= - path: 'testrun', - loadChildren: () => - import('./progress/progress.module').then(m => m.ProgressModule), ->>>>>>> main title: 'Testrun', }, { path: 'devices', loadChildren: () => -<<<<<<< HEAD import('./pages/devices/device-repository.module').then( -======= - import('./device-repository/device-repository.module').then( ->>>>>>> main m => m.DeviceRepositoryModule ), title: 'Testrun - Devices', @@ -44,11 +34,7 @@ const routes: Routes = [ { path: 'reports', loadChildren: () => -<<<<<<< HEAD import('./pages/reports/history.module').then(m => m.HistoryModule), -======= - import('./history/history.module').then(m => m.HistoryModule), ->>>>>>> main title: 'Testrun - Reports', }, { diff --git a/modules/ui/src/app/app.component.html b/modules/ui/src/app/app.component.html index 201fd098b..a89ee0b51 100644 --- a/modules/ui/src/app/app.component.html +++ b/modules/ui/src/app/app.component.html @@ -14,31 +14,21 @@ limitations under the License. --> -<<<<<<< HEAD -======= - ->>>>>>> main
    @@ -65,13 +55,9 @@ } "> -<<<<<<< HEAD -======= - ->>>>>>> main
    @@ -87,11 +73,7 @@ >>>>>> main aria-label="Testrun ui logo">

    Testrun

    @@ -101,17 +83,12 @@

    Testrun

    #toggleSettingsBtn class="app-toolbar-button app-toolbar-button-general-settings" mat-icon-button -<<<<<<< HEAD aria-label="System settings" -======= - aria-label="Connection settings" ->>>>>>> main (click)="openGeneralSettings(true)"> tune
    @@ -245,14 +180,8 @@

    Testrun

    autoFocus="#setting-panel-close-button" class="settings-drawer"> -======= - [interfaces]="interfaces" - (closeSettingEvent)="closeSetting()" - (reloadInterfacesEvent)="reloadInterfaces()"> ->>>>>>> main
    diff --git a/modules/ui/src/app/app.component.scss b/modules/ui/src/app/app.component.scss index 04d9b5b0e..d5589fabd 100644 --- a/modules/ui/src/app/app.component.scss +++ b/modules/ui/src/app/app.component.scss @@ -40,11 +40,7 @@ $nav-open-btn-width: 210px; margin-top: $toolbar-height; } -<<<<<<< HEAD .active-menu { -======= -:host.active-menu { ->>>>>>> main .app-sidebar { width: $nav-open-width; align-items: start; @@ -55,11 +51,7 @@ $nav-open-btn-width: 210px; height: $toolbar-height; border-radius: 0 100px 100px 0; margin: 0; -<<<<<<< HEAD padding: 0 24px; -======= - padding: 0 16px; ->>>>>>> main } .app-sidebar-button:first-child { @@ -134,11 +126,7 @@ $nav-open-btn-width: 210px; } .app-sidebar-button > .mat-icon { -<<<<<<< HEAD margin: 0 3px; -======= - margin: 0 11px; ->>>>>>> main min-width: 24px; line-height: 18px !important; } diff --git a/modules/ui/src/app/app.component.spec.ts b/modules/ui/src/app/app.component.spec.ts index 71a81772e..901c08795 100644 --- a/modules/ui/src/app/app.component.spec.ts +++ b/modules/ui/src/app/app.component.spec.ts @@ -25,12 +25,6 @@ import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { AppComponent } from './app.component'; import { TestRunService } from './services/test-run.service'; -<<<<<<< HEAD -======= -import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; -import { Device } from './model/device'; -import { device } from './mocks/device.mock'; ->>>>>>> main import { Component, EventEmitter, Input, Output } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; @@ -46,7 +40,6 @@ import { MOCK_PROGRESS_DATA_IDLE, MOCK_PROGRESS_DATA_IN_PROGRESS, } from './mocks/progress.mock'; -<<<<<<< HEAD import { Routes } from './model/routes'; import { MockStore, provideMockStore } from '@ngrx/store/testing'; import { State } from '@ngrx/store'; @@ -65,11 +58,6 @@ import { selectInterfaces, selectMenuOpened, } from './store/selectors'; -======= -import { LoaderService } from './services/loader.service'; -import { Routes } from './model/routes'; -import { StateService } from './services/state.service'; ->>>>>>> main describe('AppComponent', () => { let component: AppComponent; @@ -77,14 +65,9 @@ describe('AppComponent', () => { let compiled: HTMLElement; let router: Router; let mockService: SpyObj; -<<<<<<< HEAD let store: MockStore; let focusNavigation = true; let mockFocusManagerService: SpyObj; -======= - let mockLoaderService: SpyObj; - let mockStateService: SpyObj; ->>>>>>> main const enterKeyEvent = new KeyboardEvent('keydown', { key: 'Enter', @@ -101,7 +84,6 @@ describe('AppComponent', () => { beforeEach(() => { mockService = jasmine.createSpyObj([ -<<<<<<< HEAD 'getSystemStatus', 'systemStatus$', 'isTestrunStarted$', @@ -116,32 +98,6 @@ describe('AppComponent', () => { (mockService.systemStatus$ as unknown) = of({}); mockService.isTestrunStarted$ = of(true); -======= - 'getDevices', - 'fetchDevices', - 'getSystemStatus', - 'fetchHistory', - 'getSystemInterfaces', - 'setIsOpenAddDevice', - 'systemStatus$', - 'isTestrunStarted$', - 'hasConnectionSetting$', - 'setIsOpenStartTestrun', - ]); - - mockLoaderService = jasmine.createSpyObj(['setLoading']); - mockStateService = jasmine.createSpyObj('mockStateService', [ - 'focusFirstElementInMain', - ]); - - mockService.getDevices.and.returnValue( - new BehaviorSubject([device]) - ); - mockService.getSystemInterfaces.and.returnValue(of({})); - (mockService.systemStatus$ as unknown) = of({}); - mockService.isTestrunStarted$ = of(true); - mockService.hasConnectionSetting$ = of(true); ->>>>>>> main TestBed.configureTestingModule({ imports: [ @@ -158,7 +114,6 @@ describe('AppComponent', () => { ], providers: [ { provide: TestRunService, useValue: mockService }, -<<<<<<< HEAD { provide: State, useValue: { @@ -181,10 +136,6 @@ describe('AppComponent', () => { ], }), { provide: FocusManagerService, useValue: mockFocusManagerService }, -======= - { provide: LoaderService, useValue: mockLoaderService }, - { provide: StateService, useValue: mockStateService }, ->>>>>>> main ], declarations: [ AppComponent, @@ -260,11 +211,8 @@ describe('AppComponent', () => { }); it('should navigate to the devices when "devices" button is clicked', fakeAsync(() => { -<<<<<<< HEAD fixture.detectChanges(); -======= ->>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-devices' ) as HTMLButtonElement; @@ -276,11 +224,8 @@ describe('AppComponent', () => { })); it('should navigate to the testrun when "testrun" button is clicked', fakeAsync(() => { -<<<<<<< HEAD fixture.detectChanges(); -======= ->>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-testrun' ) as HTMLButtonElement; @@ -288,19 +233,12 @@ describe('AppComponent', () => { button?.click(); tick(); -<<<<<<< HEAD expect(router.url).toBe(Routes.Testing); })); it('should navigate to the reports when "reports" button is clicked', fakeAsync(() => { fixture.detectChanges(); -======= - expect(router.url).toBe(Routes.Testrun); - })); - - it('should navigate to the reports when "reports" button is clicked', fakeAsync(() => { ->>>>>>> main const button = compiled.querySelector( '.app-sidebar-button-reports' ) as HTMLButtonElement; @@ -312,11 +250,8 @@ describe('AppComponent', () => { })); it('should call toggleSettingsBtn focus when settingsDrawer close on closeSetting', fakeAsync(() => { -<<<<<<< HEAD fixture.detectChanges(); -======= ->>>>>>> main spyOn(component.settingsDrawer, 'close').and.returnValue( Promise.resolve('close') ); @@ -328,24 +263,6 @@ describe('AppComponent', () => { component.settingsDrawer.close().then(() => { expect(component.toggleSettingsBtn.focus).toHaveBeenCalled(); }); -<<<<<<< HEAD -======= - })); - - it('should call focusFirstElementInMain if settingsDrawer opened not from toggleBtn', fakeAsync(() => { - spyOn(component.settingsDrawer, 'close').and.returnValue( - Promise.resolve('close') - ); - - component.openGeneralSettings(false); - tick(); - component.closeSetting(); - flush(); - - component.settingsDrawer.close().then(() => { - expect(mockStateService.focusFirstElementInMain).toHaveBeenCalled(); - }); ->>>>>>> main })); it('should call focusFirstElementInContainer if settingsDrawer opened not from toggleBtn', fakeAsync(() => { @@ -388,11 +305,8 @@ describe('AppComponent', () => { })); it('should call settingsDrawer open on click settings button', () => { -<<<<<<< HEAD fixture.detectChanges(); -======= ->>>>>>> main const settingsBtn = compiled.querySelector( '.app-toolbar-button-general-settings' ) as HTMLButtonElement; @@ -403,7 +317,6 @@ describe('AppComponent', () => { expect(component.settingsDrawer.open).toHaveBeenCalledTimes(1); }); -<<<<<<< HEAD describe('menu button', () => { beforeEach(() => { store.overrideSelector(selectHasDevices, false); @@ -411,54 +324,21 @@ describe('AppComponent', () => { }); it('should dispatch toggleMenu action', () => { -======= - it('#reloadInterfaces should call setLoading in loaderService', () => { - component.reloadInterfaces(); - - expect(mockLoaderService.setLoading).toHaveBeenCalledWith(true); - }); - - describe('menu button', () => { - it('should toggle menu open state on click', () => { ->>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; menuBtn.click(); -<<<<<<< HEAD expect(store.dispatch).toHaveBeenCalledWith(toggleMenu()); }); it('should focus navigation on tab press if menu button was clicked', () => { focusNavigation = true; -======= - expect(component.isMenuOpen).toBeTrue(); - - menuBtn.click(); - - expect(component.isMenuOpen).toBeFalse(); - }); - - it('should set flag focusNavigation if menu opens on click', () => { - component.isMenuOpen = false; - const menuBtn = compiled.querySelector( - '.app-toolbar-button-menu' - ) as HTMLButtonElement; - - menuBtn.click(); - - expect(component.focusNavigation).toBeTrue(); - }); - - it('should focus navigation on tab press if menu button was clicked', () => { ->>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; -<<<<<<< HEAD menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); const navigation = compiled.querySelector('.app-sidebar'); @@ -472,28 +352,12 @@ describe('AppComponent', () => { it('should not focus navigation button on tab press if menu button was not clicked', () => { focusNavigation = false; -======= - menuBtn.click(); - menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); - const navigationButton = compiled.querySelectorAll('.app-sidebar-button'); - - expect(component.focusNavigation).toBeFalse(); - expect(document.activeElement).toBe(navigationButton[0]); - }); - - it('should not focus navigation button on tab press if menu button was not clicked', () => { - component.focusNavigation = false; ->>>>>>> main const menuBtn = compiled.querySelector( '.app-toolbar-button-menu' ) as HTMLButtonElement; menuBtn.dispatchEvent(new KeyboardEvent('keydown', { key: 'Tab' })); -<<<<<<< HEAD -======= - expect(component.focusNavigation).toBeFalse(); ->>>>>>> main expect(document.activeElement).toBe(document.body); }); }); @@ -511,10 +375,7 @@ describe('AppComponent', () => { }); it('should have version', () => { -<<<<<<< HEAD fixture.detectChanges(); -======= ->>>>>>> main const version = compiled.querySelector('app-version'); expect(version).toBeTruthy(); @@ -523,11 +384,7 @@ describe('AppComponent', () => { describe('Callout component visibility', () => { describe('with no connection settings', () => { beforeEach(() => { -<<<<<<< HEAD component.hasConnectionSetting$ = of(false); -======= - mockService.hasConnectionSetting$ = of(false); ->>>>>>> main component.ngOnInit(); fixture.detectChanges(); }); @@ -540,22 +397,14 @@ describe('AppComponent', () => { expect(calloutContent).toContain('Step 1'); }); -<<<<<<< HEAD it('should have callout content with "System settings" link ', () => { -======= - it('should have callout content with "Connection settings" link ', () => { ->>>>>>> main const calloutLinkEl = compiled.querySelector( '.message-link' ) as HTMLAnchorElement; const calloutLinkContent = calloutLinkEl.innerHTML.trim(); expect(calloutLinkEl).toBeTruthy(); -<<<<<<< HEAD expect(calloutLinkContent).toContain('System settings'); -======= - expect(calloutLinkContent).toContain('Connection settings'); ->>>>>>> main }); keyboardCases.forEach(testCase => { @@ -575,15 +424,8 @@ describe('AppComponent', () => { describe('with system status as "Idle"', () => { beforeEach(() => { -<<<<<<< HEAD component.hasConnectionSetting$ = of(true); store.overrideSelector(selectHasDevices, true); -======= - mockService.hasConnectionSetting$ = of(true); - mockService.getDevices.and.returnValue( - new BehaviorSubject([device]) - ); ->>>>>>> main mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IDLE); mockService.isTestrunStarted$ = of(false); component.ngOnInit(); @@ -601,14 +443,7 @@ describe('AppComponent', () => { describe('with no devices setted', () => { beforeEach(() => { -<<<<<<< HEAD store.overrideSelector(selectHasDevices, false); -======= - mockService.getDevices.and.returnValue( - new BehaviorSubject(null) - ); - component.ngOnInit(); ->>>>>>> main fixture.detectChanges(); }); @@ -658,28 +493,16 @@ describe('AppComponent', () => { flush(); expect(router.url).toBe(Routes.Devices); -<<<<<<< HEAD expect(store.dispatch).toHaveBeenCalledWith( setIsOpenAddDevice({ isOpenAddDevice: true }) ); -======= - expect(mockService.setIsOpenAddDevice).toHaveBeenCalledWith(true); ->>>>>>> main })); }); describe('with devices setted but without systemStatus data', () => { beforeEach(() => { -<<<<<<< HEAD store.overrideSelector(selectHasDevices, true); mockService.isTestrunStarted$ = of(false); -======= - mockService.getDevices.and.returnValue( - new BehaviorSubject([device]) - ); - mockService.isTestrunStarted$ = of(false); - component.ngOnInit(); ->>>>>>> main fixture.detectChanges(); }); @@ -691,11 +514,7 @@ describe('AppComponent', () => { expect(calloutContent).toContain('Step 3'); }); -<<<<<<< HEAD it('should have callout component with "testing" link', () => { -======= - it('should have callout component with "Testrun" link', () => { ->>>>>>> main const callout = compiled.querySelector('app-callout'); const calloutLinkEl = compiled.querySelector( '.message-link' @@ -703,11 +522,7 @@ describe('AppComponent', () => { const calloutLinkContent = calloutLinkEl.innerHTML.trim(); expect(callout).toBeTruthy(); -<<<<<<< HEAD expect(calloutLinkContent).toContain('testing'); -======= - expect(calloutLinkContent).toContain('Testrun'); ->>>>>>> main }); keyboardCases.forEach(testCase => { @@ -719,27 +534,15 @@ describe('AppComponent', () => { calloutLinkEl.dispatchEvent(testCase.event); flush(); -<<<<<<< HEAD expect(router.url).toBe(Routes.Testing); -======= - expect(router.url).toBe(Routes.Testrun); ->>>>>>> main })); }); }); describe('with devices setted, without systemStatus data, but run the tests ', () => { beforeEach(() => { -<<<<<<< HEAD store.overrideSelector(selectHasDevices, true); mockService.isTestrunStarted$ = of(true); -======= - mockService.getDevices.and.returnValue( - new BehaviorSubject([device]) - ); - mockService.isTestrunStarted$ = of(true); - component.ngOnInit(); ->>>>>>> main fixture.detectChanges(); }); @@ -750,20 +553,10 @@ describe('AppComponent', () => { }); }); -<<<<<<< HEAD describe('with devices setted and systemStatus data', () => { beforeEach(() => { store.overrideSelector(selectHasDevices, true); mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IN_PROGRESS); -======= - describe('with devices setted and systemStatus data ', () => { - beforeEach(() => { - mockService.getDevices.and.returnValue( - new BehaviorSubject([device]) - ); - mockService.systemStatus$ = of(MOCK_PROGRESS_DATA_IN_PROGRESS); - component.ngOnInit(); ->>>>>>> main fixture.detectChanges(); }); @@ -773,7 +566,6 @@ describe('AppComponent', () => { expect(callout).toBeNull(); }); }); -<<<<<<< HEAD describe('error', () => { describe('with settingMissedError with one port is missed', () => { @@ -832,15 +624,6 @@ describe('AppComponent', () => { }); it('should not call toggleSettingsBtn focus on closeSetting when device length is 0', async () => { -======= - }); - - it('should not call toggleSettingsBtn focus on closeSetting when device length is 0', async () => { - mockService.getDevices.and.returnValue( - new BehaviorSubject([]) - ); - component.ngOnInit(); ->>>>>>> main fixture.detectChanges(); spyOn(component.settingsDrawer, 'close').and.returnValue( @@ -848,11 +631,7 @@ describe('AppComponent', () => { ); const spyToggle = spyOn(component.toggleSettingsBtn, 'focus'); -<<<<<<< HEAD await component.closeSetting(false); -======= - await component.closeSetting(); ->>>>>>> main expect(spyToggle).toHaveBeenCalledTimes(0); }); @@ -864,7 +643,6 @@ describe('AppComponent', () => { }) class FakeGeneralSettingsComponent { @Input() interfaces = []; -<<<<<<< HEAD @Input() hasConnectionSettings = false; @Output() closeSettingEvent = new EventEmitter(); @Output() reloadInterfacesEvent = new EventEmitter(); @@ -884,20 +662,4 @@ class FakeSpinnerComponent {} class FakeVersionComponent { @Input() consentShown!: boolean; @Output() consentShownEvent = new EventEmitter(); -======= - @Output() closeSettingEvent = new EventEmitter(); - @Output() reloadInterfacesEvent = new EventEmitter(); ->>>>>>> main } - -@Component({ - selector: 'app-spinner', - template: '
    ', -}) -class FakeSpinnerComponent {} - -@Component({ - selector: 'app-version', - template: '
    ', -}) -class FakeVersionComponent {} diff --git a/modules/ui/src/app/app.component.ts b/modules/ui/src/app/app.component.ts index a4c8db80d..55d6ab9dc 100644 --- a/modules/ui/src/app/app.component.ts +++ b/modules/ui/src/app/app.component.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD import { Component, ElementRef, OnInit, ViewChild } from '@angular/core'; import { MatIconRegistry } from '@angular/material/icon'; import { DomSanitizer } from '@angular/platform-browser'; @@ -43,30 +42,6 @@ import { appFeatureKey } from './store/reducers'; import { SettingMissedError, SystemInterfaces } from './model/setting'; import { GeneralSettingsComponent } from './pages/settings/general-settings.component'; import { AppStore } from './app.store'; -======= -import { - Component, - ElementRef, - HostBinding, - OnInit, - ViewChild, -} from '@angular/core'; -import { MatIconRegistry } from '@angular/material/icon'; -import { DomSanitizer } from '@angular/platform-browser'; -import { MatDrawer } from '@angular/material/sidenav'; -import { SystemInterfaces, TestRunService } from './services/test-run.service'; -import { Observable } from 'rxjs/internal/Observable'; -import { Device } from './model/device'; -import { take } from 'rxjs'; -import { TestrunStatus, StatusOfTestrun } from './model/testrun-status'; -import { Router } from '@angular/router'; -import { LoaderService } from './services/loader.service'; -import { CalloutType } from './model/callout-type'; -import { tap } from 'rxjs/internal/operators/tap'; -import { shareReplay } from 'rxjs/internal/operators/shareReplay'; -import { Routes } from './model/routes'; -import { StateService } from './services/state.service'; ->>>>>>> main const DEVICES_LOGO_URL = '/assets/icons/devices.svg'; const REPORTS_LOGO_URL = '/assets/icons/reports.svg'; @@ -78,7 +53,6 @@ const CLOSE_URL = '/assets/icons/close.svg'; selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], -<<<<<<< HEAD providers: [AppStore], }) export class AppComponent implements OnInit { @@ -103,33 +77,11 @@ export class AppComponent implements OnInit { @ViewChild('navigation') public navigation!: ElementRef; @ViewChild('settings') public settings!: GeneralSettingsComponent; viewModel$ = this.appStore.viewModel$; -======= -}) -export class AppComponent implements OnInit { - public readonly CalloutType = CalloutType; - devices$!: Observable; - systemStatus$!: Observable; - isTestrunStarted$!: Observable; - hasConnectionSetting$!: Observable; - interfaces: SystemInterfaces = {}; - isDevicesLoaded = false; - isStatusLoaded = false; - isConnectionSettingsLoaded = false; - public readonly StatusOfTestrun = StatusOfTestrun; - public readonly Routes = Routes; - private devicesLength = 0; - private openedSettingFromToggleBtn = true; - @ViewChild('settingsDrawer') public settingsDrawer!: MatDrawer; - @ViewChild('toggleSettingsBtn') public toggleSettingsBtn!: HTMLButtonElement; - @ViewChild('navigation') public navigation!: ElementRef; - @HostBinding('class.active-menu') isMenuOpen = false; ->>>>>>> main constructor( private matIconRegistry: MatIconRegistry, private domSanitizer: DomSanitizer, private testRunService: TestRunService, -<<<<<<< HEAD private route: Router, private store: Store, private state: State, @@ -137,13 +89,6 @@ export class AppComponent implements OnInit { private appStore: AppStore ) { this.appStore.getDevices(); -======= - private readonly loaderService: LoaderService, - private readonly state: StateService, - private route: Router - ) { - this.testRunService.fetchDevices(); ->>>>>>> main this.testRunService.getSystemStatus(); this.matIconRegistry.addSvgIcon( 'devices', @@ -168,7 +113,6 @@ export class AppComponent implements OnInit { } ngOnInit(): void { -<<<<<<< HEAD this.systemStatus$ = this.testRunService.systemStatus$.pipe( tap(() => (this.isStatusLoaded = true)), shareReplay({ refCount: true, bufferSize: 1 }) @@ -205,130 +149,28 @@ export class AppComponent implements OnInit { public toggleMenu(event: MouseEvent) { event.stopPropagation(); this.store.dispatch(toggleMenu()); -======= - this.devices$ = this.testRunService.getDevices().pipe( - tap(result => { - if (result !== null) { - this.devicesLength = result.length; - this.isDevicesLoaded = true; - } else { - this.devicesLength = 0; - } - }), - shareReplay({ refCount: true, bufferSize: 1 }) - ); - - this.systemStatus$ = this.testRunService.systemStatus$.pipe( - tap(() => (this.isStatusLoaded = true)) - ); - - this.isTestrunStarted$ = this.testRunService.isTestrunStarted$; - - this.hasConnectionSetting$ = this.testRunService.hasConnectionSetting$.pipe( - tap(result => { - if (result !== null) { - this.isConnectionSettingsLoaded = true; - } - }), - shareReplay({ refCount: true, bufferSize: 1 }) - ); - } - - navigateToDeviceRepository(): void { - this.route.navigate([Routes.Devices]); - this.testRunService.setIsOpenAddDevice(true); - } - - navigateToRuntime(): void { - this.route.navigate([Routes.Testrun]); - this.testRunService.setIsOpenStartTestrun(true); - } - - async closeSetting(): Promise { - return await this.settingsDrawer.close().then(() => { - if (this.devicesLength > 0) { - this.toggleSettingsBtn.focus(); - } // else device create window will be opened - - if (!this.openedSettingFromToggleBtn) { - this.state.focusFirstElementInMain(); - } - }); - } - - async openSetting(): Promise { - return await this.openGeneralSettings(false); - } - - reloadInterfaces(): void { - this.showLoading(); - this.getSystemInterfaces(); - } - - /** - * Indicates, if side menu should be focused on keyboard navigation after menu is opened - */ - focusNavigation = false; - - public toggleMenu(event: MouseEvent) { - event.stopPropagation(); - this.isMenuOpen = !this.isMenuOpen; - if (this.isMenuOpen) { - this.focusNavigation = true; // user will be navigated to side menu on tab - } ->>>>>>> main } /** * When side menu is opened */ skipToNavigation(event: Event) { -<<<<<<< HEAD if (this.state.getValue()[appFeatureKey].appComponent.focusNavigation) { event.preventDefault(); // if not prevented, second element will be focused this.focusManagerService.focusFirstElementInContainer( this.navigation.nativeElement ); this.store.dispatch(updateFocusNavigation({ focusNavigation: false })); // user will be navigated according to normal flow on tab -======= - if (this.focusNavigation) { - event.preventDefault(); // if not prevented, second element will be focused - this.navigation.nativeElement.firstChild.focus(); // focus first button on side - this.focusNavigation = false; // user will be navigated according to normal flow on tab ->>>>>>> main } } async openGeneralSettings(openSettingFromToggleBtn: boolean) { this.openedSettingFromToggleBtn = openSettingFromToggleBtn; -<<<<<<< HEAD this.settings.getSystemInterfaces(); await this.settingsDrawer.open(); } consentShown() { this.appStore.setContent(); -======= - this.getSystemInterfaces(); - await this.settingsDrawer.open(); - } - - private getSystemInterfaces(): void { - this.testRunService - .getSystemInterfaces() - .pipe(take(1)) - .subscribe(interfaces => { - this.interfaces = interfaces; - this.hideLoading(); - }); - } - - private showLoading() { - this.loaderService.setLoading(true); - } - - private hideLoading() { - this.loaderService.setLoading(false); ->>>>>>> main } } diff --git a/modules/ui/src/app/app.module.ts b/modules/ui/src/app/app.module.ts index ce1f4439f..42ade0ddd 100644 --- a/modules/ui/src/app/app.module.ts +++ b/modules/ui/src/app/app.module.ts @@ -26,11 +26,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; -<<<<<<< HEAD import { GeneralSettingsComponent } from './pages/settings/general-settings.component'; -======= -import { GeneralSettingsComponent } from './components/general-settings/general-settings.component'; ->>>>>>> main import { ReactiveFormsModule } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSnackBarModule } from '@angular/material/snack-bar'; @@ -42,15 +38,12 @@ import { SpinnerComponent } from './components/spinner/spinner.component'; import { BypassComponent } from './components/bypass/bypass.component'; import { VersionComponent } from './components/version/version.component'; import { CalloutComponent } from './components/callout/callout.component'; -<<<<<<< HEAD import { StoreModule } from '@ngrx/store'; import { appFeatureKey, rootReducer } from './store/reducers'; import { EffectsModule } from '@ngrx/effects'; import { AppEffects } from './store/effects'; import { CdkTrapFocus } from '@angular/cdk/a11y'; import { SettingsDropdownComponent } from './pages/settings/components/settings-dropdown/settings-dropdown.component'; -======= ->>>>>>> main @NgModule({ declarations: [AppComponent, GeneralSettingsComponent], @@ -74,13 +67,10 @@ import { SettingsDropdownComponent } from './pages/settings/components/settings- BypassComponent, VersionComponent, CalloutComponent, -<<<<<<< HEAD StoreModule.forRoot({ [appFeatureKey]: rootReducer }), EffectsModule.forRoot([AppEffects]), CdkTrapFocus, SettingsDropdownComponent, -======= ->>>>>>> main ], providers: [ { diff --git a/modules/ui/src/app/components/bypass/bypass.component.spec.ts b/modules/ui/src/app/components/bypass/bypass.component.spec.ts index c0149d082..8ba531e7e 100644 --- a/modules/ui/src/app/components/bypass/bypass.component.spec.ts +++ b/modules/ui/src/app/components/bypass/bypass.component.spec.ts @@ -17,11 +17,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { BypassComponent } from './bypass.component'; import { Component } from '@angular/core'; -<<<<<<< HEAD import { FocusManagerService } from '../../services/focus-manager.service'; -======= -import { StateService } from '../../services/state.service'; ->>>>>>> main import SpyObj = jasmine.SpyObj; @Component({ @@ -35,7 +31,6 @@ class TestBypassComponent {} describe('BypassComponent', () => { let component: TestBypassComponent; let fixture: ComponentFixture; -<<<<<<< HEAD let mockService: SpyObj; beforeEach(() => { @@ -44,16 +39,6 @@ describe('BypassComponent', () => { imports: [BypassComponent], declarations: [TestBypassComponent], providers: [{ provide: FocusManagerService, useValue: mockService }], -======= - let mockService: SpyObj; - - beforeEach(() => { - mockService = jasmine.createSpyObj(['focusFirstElementInMain']); - TestBed.configureTestingModule({ - imports: [BypassComponent], - declarations: [TestBypassComponent], - providers: [{ provide: StateService, useValue: mockService }], ->>>>>>> main }); fixture = TestBed.createComponent(TestBypassComponent); component = fixture.componentInstance; @@ -72,11 +57,7 @@ describe('BypassComponent', () => { button?.click(); -<<<<<<< HEAD expect(mockService.focusFirstElementInContainer).toHaveBeenCalled(); -======= - expect(mockService.focusFirstElementInMain).toHaveBeenCalled(); ->>>>>>> main }); }); }); diff --git a/modules/ui/src/app/components/bypass/bypass.component.ts b/modules/ui/src/app/components/bypass/bypass.component.ts index 1d7985edc..3a7d2819c 100644 --- a/modules/ui/src/app/components/bypass/bypass.component.ts +++ b/modules/ui/src/app/components/bypass/bypass.component.ts @@ -16,11 +16,7 @@ import { Component } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; -<<<<<<< HEAD import { FocusManagerService } from '../../services/focus-manager.service'; -======= -import { StateService } from '../../services/state.service'; ->>>>>>> main @Component({ selector: 'app-bypass', @@ -30,16 +26,9 @@ import { StateService } from '../../services/state.service'; styleUrls: ['./bypass.component.scss'], }) export class BypassComponent { -<<<<<<< HEAD constructor(private readonly focusManagerService: FocusManagerService) {} skipToMainContent(event: Event) { event.preventDefault(); this.focusManagerService.focusFirstElementInContainer(); -======= - constructor(private readonly state: StateService) {} - skipToMainContent(event: Event) { - event.preventDefault(); - this.state.focusFirstElementInMain(); ->>>>>>> main } } diff --git a/modules/ui/src/app/components/callout/callout.component.scss b/modules/ui/src/app/components/callout/callout.component.scss index b73f8d1df..262552c91 100644 --- a/modules/ui/src/app/components/callout/callout.component.scss +++ b/modules/ui/src/app/components/callout/callout.component.scss @@ -21,7 +21,6 @@ width: 100%; } -<<<<<<< HEAD :host:has(.callout-container.info), :host:has(.callout-container.error) { position: absolute; @@ -31,12 +30,6 @@ top: 60px; } -======= -:host:has(.callout-container.info) { - position: absolute; -} - ->>>>>>> main .callout-container { display: flex; box-sizing: border-box; @@ -70,7 +63,6 @@ } } -<<<<<<< HEAD .callout-container.error { margin: 24px 32px; background-color: $red-50; @@ -94,8 +86,6 @@ } } -======= ->>>>>>> main .callout-context { margin: 0; padding: 6px 0; diff --git a/modules/ui/src/app/components/callout/callout.component.ts b/modules/ui/src/app/components/callout/callout.component.ts index 7b5456138..bfb6ea9bf 100644 --- a/modules/ui/src/app/components/callout/callout.component.ts +++ b/modules/ui/src/app/components/callout/callout.component.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<<< HEAD:modules/ui/src/app/components/callout/callout.component.ts import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatIconModule } from '@angular/material/icon'; @@ -28,33 +27,4 @@ import { MatIconModule } from '@angular/material/icon'; }) export class CalloutComponent { @Input() type = ''; -======== -@import '../../../theming/colors'; - -:host { - display: grid; - overflow: hidden; - width: 570px; - padding: 24px 16px 8px 24px; - gap: 10px; -} - -.delete-form-title { - color: #202124; - font-size: 18px; - line-height: 24px; -} - -.delete-form-content { - font-family: Roboto, sans-serif; - font-size: 14px; - line-height: 20px; - letter-spacing: 0.2px; - color: $grey-800; -} - -.delete-form-actions { - padding: 0; - min-height: 30px; ->>>>>>>> main:modules/ui/src/app/components/delete-form/delete-form.component.scss } diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.html b/modules/ui/src/app/components/delete-report/delete-report.component.html deleted file mode 100644 index 51458b23b..000000000 --- a/modules/ui/src/app/components/delete-report/delete-report.component.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.scss b/modules/ui/src/app/components/delete-report/delete-report.component.scss deleted file mode 100644 index 54464931e..000000000 --- a/modules/ui/src/app/components/delete-report/delete-report.component.scss +++ /dev/null @@ -1,26 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -:host { - display: inline-block; -} - -.delete-report-button { - cursor: pointer; - display: inline-block; - & ::ng-deep .mdc-icon-button__ripple { - display: none; - } -} diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts b/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts deleted file mode 100644 index 11e9c2a2e..000000000 --- a/modules/ui/src/app/components/delete-report/delete-report.component.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DeleteReportComponent } from './delete-report.component'; -import { of } from 'rxjs'; -import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; -import { DeleteFormComponent } from '../delete-form/delete-form.component'; -import { TestRunService } from '../../services/test-run.service'; -import SpyObj = jasmine.SpyObj; -import { MOCK_PROGRESS_DATA_COMPLIANT } from '../../mocks/progress.mock'; - -describe('DeleteReportComponent', () => { - let compiled: HTMLElement; - let component: DeleteReportComponent; - let fixture: ComponentFixture; - let mockService: SpyObj; - - beforeEach(() => { - mockService = jasmine.createSpyObj(['deleteReport', 'removeReport']); - TestBed.configureTestingModule({ - imports: [DeleteReportComponent, MatDialogModule], - providers: [ - { provide: TestRunService, useValue: mockService }, - { - provide: MatDialogRef, - useValue: { - close: () => ({}), - }, - }, - ], - }); - fixture = TestBed.createComponent(DeleteReportComponent); - component = fixture.componentInstance; - component.data = MOCK_PROGRESS_DATA_COMPLIANT; - compiled = fixture.nativeElement as HTMLElement; - }); - - describe('Class tests', () => { - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('#deleteReport should open delete dialog', () => { - const deviceRemovedSpy = spyOn(component.deviceRemoved, 'emit'); - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - mockService.deleteReport.and.returnValue(of(true)); - mockService.removeReport.and.callThrough(); - - component.deleteReport(new Event('click')); - - expect(mockService.deleteReport).toHaveBeenCalledWith( - '01:02:03:04:05:06', - '2023-06-22T09:20:00.123Z' - ); - expect(mockService.removeReport).toHaveBeenCalledWith( - '01:02:03:04:05:06', - '2023-06-22T09:20:00.123Z' - ); - expect(deviceRemovedSpy).toHaveBeenCalled(); - }); - }); - - describe('DOM tests', () => { - describe('with not data provided', () => { - beforeEach(() => { - (component.data as unknown) = null; - fixture.detectChanges(); - }); - - it('should not have content', () => { - const deleteReportButton = compiled.querySelector( - '.delete-report-button' - ); - - expect(deleteReportButton).toBeNull(); - }); - }); - - describe('with data provided', () => { - beforeEach(() => { - component.data = MOCK_PROGRESS_DATA_COMPLIANT; - fixture.detectChanges(); - }); - - it('should have delete report button', () => { - const deleteReportButton = compiled.querySelector( - '.delete-report-button' - ); - - expect(deleteReportButton).toBeTruthy(); - }); - }); - }); -}); diff --git a/modules/ui/src/app/components/delete-report/delete-report.component.ts b/modules/ui/src/app/components/delete-report/delete-report.component.ts deleted file mode 100644 index 4f76b1859..000000000 --- a/modules/ui/src/app/components/delete-report/delete-report.component.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - ChangeDetectionStrategy, - Component, - EventEmitter, - OnDestroy, - Output, -} from '@angular/core'; -import { CommonModule, DatePipe } from '@angular/common'; -import { MatButtonModule } from '@angular/material/button'; -import { ReportActionComponent } from '../report-action/report-action.component'; -import { TestRunService } from '../../services/test-run.service'; -import { MatDialog } from '@angular/material/dialog'; -import { DeleteFormComponent } from '../delete-form/delete-form.component'; -import { takeUntil } from 'rxjs/internal/operators/takeUntil'; -import { Subject } from 'rxjs'; - -@Component({ - selector: 'app-delete-report', - standalone: true, - imports: [CommonModule, MatButtonModule], - templateUrl: './delete-report.component.html', - styleUrls: ['./delete-report.component.scss'], - providers: [DatePipe], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class DeleteReportComponent - extends ReportActionComponent - implements OnDestroy -{ - @Output() deviceRemoved = new EventEmitter(); - private destroy$: Subject = new Subject(); - constructor( - private testRunService: TestRunService, - public dialog: MatDialog, - datePipe: DatePipe - ) { - super(datePipe); - } - - ngOnDestroy() { - this.destroy$.next(true); - this.destroy$.unsubscribe(); - } - - deleteReport(event: Event) { - event.preventDefault(); - const dialogRef = this.dialog.open(DeleteFormComponent, { - ariaLabel: 'Delete report', - data: { - title: 'Delete report', - content: this.getTestRunId(this.data), - }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'delete-form-dialog', - }); - - dialogRef - ?.afterClosed() - .pipe(takeUntil(this.destroy$)) - .subscribe(deleteReport => { - if (deleteReport) { - this.testRunService - .deleteReport(this.data.device.mac_addr, this.data.started || '') - .subscribe(() => { - this.deviceRemoved.emit(); - this.testRunService.removeReport( - this.data.device.mac_addr, - this.data.started || '' - ); - }); - } - }); - } -} diff --git a/modules/ui/src/app/components/device-item/device-item.component.html b/modules/ui/src/app/components/device-item/device-item.component.html index 4f120d69b..0496d74fb 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.html +++ b/modules/ui/src/app/components/device-item/device-item.component.html @@ -14,17 +14,11 @@ limitations under the License. -->
    >>>>>> main @import '../../../theming/colors'; @import '../../../theming/variables'; @@ -37,13 +34,8 @@ $border-radius: 12px; grid-row-gap: 4px; font-family: 'Open Sans', sans-serif; grid-template-areas: -<<<<<<< HEAD 'manufacturer manufacturer' 'name address'; -======= - 'manufacturer manufacturer icon' - 'name address icon'; ->>>>>>> main &:hover { cursor: pointer; @@ -130,30 +122,10 @@ $border-radius: 12px; } } -.item-manufacturer { - padding: 0 16px; - grid-area: manufacturer; - justify-self: start; -<<<<<<< HEAD -======= - align-self: end; - color: #1f1f1f; - justify-content: start; - font-size: 16px; - font-weight: 500; - line-height: 24px; - text-overflow: ellipsis; - white-space: nowrap; - overflow: hidden; - width: 230px; - text-align: start; -} - .item-name { padding: 0 16px; grid-area: name; justify-self: start; ->>>>>>> main color: $grey-800; font-size: 14px; font-style: normal; @@ -181,11 +153,7 @@ $border-radius: 12px; grid-area: start; width: $icon-width; height: calc($icon-width - 2px); -<<<<<<< HEAD background-color: mat.get-color-from-palette($color-primary, 50); -======= - background-color: #e8f0fe; ->>>>>>> main justify-self: end; border-radius: 0 $border-radius $border-radius 0; diff --git a/modules/ui/src/app/components/device-item/device-item.component.spec.ts b/modules/ui/src/app/components/device-item/device-item.component.spec.ts index 638cd1fb9..b7dd90524 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.spec.ts +++ b/modules/ui/src/app/components/device-item/device-item.component.spec.ts @@ -14,17 +14,10 @@ * limitations under the License. */ import { ComponentFixture, TestBed } from '@angular/core/testing'; -<<<<<<< HEAD import { Device, DeviceView } from '../../model/device'; import { DeviceItemComponent } from './device-item.component'; import { DeviceRepositoryModule } from '../../pages/devices/device-repository.module'; -======= -import { Device } from '../../model/device'; - -import { DeviceItemComponent } from './device-item.component'; -import { DeviceRepositoryModule } from '../../device-repository/device-repository.module'; ->>>>>>> main describe('DeviceItemComponent', () => { let component: DeviceItemComponent; @@ -61,7 +54,6 @@ describe('DeviceItemComponent', () => { fixture.detectChanges(); }); -<<<<<<< HEAD it('should display information about device', () => { const name = compiled.querySelector('.item-name'); const manufacturer = compiled.querySelector('.item-manufacturer'); @@ -87,11 +79,6 @@ describe('DeviceItemComponent', () => { expect(item.tabIndex).toBe(-2); }); -======= - expect(name?.textContent?.trim()).toEqual('O3-DIN-CPU'); - expect(manufacturer?.textContent?.trim()).toEqual('Delta'); - expect(mac?.textContent?.trim()).toEqual('00:1e:42:35:73:c4'); ->>>>>>> main }); describe('with device view as WithActions', () => { @@ -116,12 +103,4 @@ describe('DeviceItemComponent', () => { expect(clickSpy).toHaveBeenCalledWith(component.device); }); }); - - it('should have tabindex', () => { - component.tabIndex = -2; - fixture.detectChanges(); - const item = compiled.querySelector('.device-item') as HTMLElement; - - expect(item.tabIndex).toBe(-2); - }); }); diff --git a/modules/ui/src/app/components/device-item/device-item.component.ts b/modules/ui/src/app/components/device-item/device-item.component.ts index 3b5e9e9ce..2b1c44e0f 100644 --- a/modules/ui/src/app/components/device-item/device-item.component.ts +++ b/modules/ui/src/app/components/device-item/device-item.component.ts @@ -14,32 +14,22 @@ * limitations under the License. */ import { Component, EventEmitter, Input, Output } from '@angular/core'; -<<<<<<< HEAD import { Device, DeviceView } from '../../model/device'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; -======= -import { Device } from '../../model/device'; ->>>>>>> main @Component({ selector: 'app-device-item', templateUrl: './device-item.component.html', styleUrls: ['./device-item.component.scss'], standalone: true, -<<<<<<< HEAD imports: [CommonModule, MatButtonModule, MatIconModule], -======= ->>>>>>> main }) export class DeviceItemComponent { @Input() device!: Device; @Input() tabIndex = 0; -<<<<<<< HEAD @Input() deviceView!: string; -======= ->>>>>>> main @Output() itemClicked = new EventEmitter(); @Output() startTestrunClicked = new EventEmitter(); readonly DeviceView = DeviceView; @@ -47,12 +37,9 @@ export class DeviceItemComponent { itemClick(): void { this.itemClicked.emit(this.device); } -<<<<<<< HEAD startTestrunClick(): void { this.startTestrunClicked.emit(this.device); } -======= ->>>>>>> main get label() { return `${this.device.manufacturer} ${this.device.model} ${this.device.mac_addr}`; diff --git a/modules/ui/src/app/components/download-report/download-report.component.html b/modules/ui/src/app/components/download-report/download-report.component.html index 055937041..14f2a0bf3 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.html +++ b/modules/ui/src/app/components/download-report/download-report.component.html @@ -16,17 +16,10 @@ -======= - download="{{ getReportTitle(data) }}" - href="{{ data.report }}" - target="_blank" - title="Download report for Test Run # {{ getTestRunId(data) }}"> ->>>>>>> main diff --git a/modules/ui/src/app/components/download-report/download-report.component.spec.ts b/modules/ui/src/app/components/download-report/download-report.component.spec.ts index 41ecb015d..d167c638f 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.spec.ts +++ b/modules/ui/src/app/components/download-report/download-report.component.spec.ts @@ -75,13 +75,10 @@ describe('DownloadReportComponent', () => { describe('with data provided', () => { beforeEach(() => { component.data = MOCK_PROGRESS_DATA_COMPLIANT; -<<<<<<< HEAD component.title = 'Download pdf for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20'; component.href = MOCK_PROGRESS_DATA_COMPLIANT.report; -======= ->>>>>>> main fixture.detectChanges(); }); @@ -98,11 +95,7 @@ describe('DownloadReportComponent', () => { 'delta_03-din-cpu_1.2.2_compliant_22_jun_2023_9:20' ); expect(downloadReportLink.title).toEqual( -<<<<<<< HEAD 'Download pdf for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20' -======= - 'Download report for Test Run # Delta 03-DIN-CPU 1.2.2 22 Jun 2023 9:20' ->>>>>>> main ); }); }); diff --git a/modules/ui/src/app/components/download-report/download-report.component.ts b/modules/ui/src/app/components/download-report/download-report.component.ts index 0f1de7b57..90c47ed4a 100644 --- a/modules/ui/src/app/components/download-report/download-report.component.ts +++ b/modules/ui/src/app/components/download-report/download-report.component.ts @@ -13,11 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; -======= -import { ChangeDetectionStrategy, Component } from '@angular/core'; ->>>>>>> main import { TestrunStatus } from '../../model/testrun-status'; import { CommonModule, DatePipe } from '@angular/common'; import { ReportActionComponent } from '../report-action/report-action.component'; @@ -32,12 +28,9 @@ import { ReportActionComponent } from '../report-action/report-action.component' changeDetection: ChangeDetectionStrategy.OnPush, }) export class DownloadReportComponent extends ReportActionComponent { -<<<<<<< HEAD @Input() href: string | undefined; @Input() title!: string; -======= ->>>>>>> main getReportTitle(data: TestrunStatus) { return `${data.device.manufacturer} ${data.device.model} ${ data.device.firmware diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.html b/modules/ui/src/app/components/filter-chips/filter-chips.component.html deleted file mode 100644 index 07cf43aa0..000000000 --- a/modules/ui/src/app/components/filter-chips/filter-chips.component.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - Device contains "{{ item.value }}" - - Firmware contains "{{ item.value }}" - - - {{ item.value }} - - - - - - Clear all filters - - diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.scss b/modules/ui/src/app/components/filter-chips/filter-chips.component.scss deleted file mode 100644 index 5dc1c5ede..000000000 --- a/modules/ui/src/app/components/filter-chips/filter-chips.component.scss +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@import '../../../theming/colors'; - -:host { - display: flex; -} - -.clear-all { - display: flex; - align-items: center; - justify-content: center; - padding: 0 8px; - cursor: pointer; - color: $primary; - font-weight: 400; - height: 32px; - margin: 4px 0 4px 8px; - border-radius: 16px; - flex-shrink: 0; - background: $white; - font-family: Roboto, sans-serif; -} - -.filter-chip.mat-mdc-chip { - background: $white; - border: 1px solid $primary; -} - -.filter-chip.mat-mdc-chip ::ng-deep .mat-mdc-chip-action-label { - color: $primary; - font-weight: 500; -} - -.filter-chip.mat-mdc-chip ::ng-deep .mat-mdc-chip-remove { - color: $primary; -} - -.filter-chip.cdk-keyboard-focused, -.filter-chip-remove:focus-visible { - outline: $black solid 2px; -} - -.filter-chip .filter-chip-remove { - margin: 0 8px; - padding-left: 0; - padding-right: 0; - border-radius: 8px; -} - -.mat-mdc-standard-chip:not( - .mdc-evolution-chip--disabled - ).filter-chip-clear-all { - background-color: $white; - - & ::ng-deep .mat-mdc-chip-action { - padding: 0; - } - - & ::ng-deep .mat-mdc-chip-focus-overlay { - display: none; - } -} diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts b/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts deleted file mode 100644 index 34cb9459f..000000000 --- a/modules/ui/src/app/components/filter-chips/filter-chips.component.spec.ts +++ /dev/null @@ -1,138 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { FilterChipsComponent } from './filter-chips.component'; - -describe('FilterChipsComponent', () => { - let component: FilterChipsComponent; - let fixture: ComponentFixture; - let compiled: HTMLElement; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [FilterChipsComponent], - }); - fixture = TestBed.createComponent(FilterChipsComponent); - component = fixture.componentInstance; - compiled = fixture.nativeElement as HTMLElement; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('DOM tests', () => { - describe('"Clear all filters" button', () => { - it('should exist', () => { - const button = compiled.querySelector('.clear-all'); - - expect(button).toBeTruthy(); - }); - - it('should clear all filters on click', () => { - const clearAllFiltersSpy = spyOn(component, 'clearAllFilters'); - const button = compiled.querySelector( - '.clear-all' - ) as HTMLButtonElement; - button.click(); - - expect(clearAllFiltersSpy).toHaveBeenCalled(); - }); - }); - - describe('filter chips', () => { - describe('with no filter data', () => { - beforeEach(() => { - component.filters = { - deviceInfo: '', - deviceFirmware: '', - results: [], - dateRange: '', - }; - fixture.detectChanges(); - }); - it('should not be displayed', () => { - const chips = compiled.querySelectorAll('.filter-chip'); - - expect(chips.length).toEqual(0); - }); - }); - - describe('with filter data', () => { - beforeEach(() => { - component.filters = { - deviceInfo: 'Delta', - deviceFirmware: '03', - results: ['Compliant'], - dateRange: '', - }; - fixture.detectChanges(); - }); - it('should be displayed', () => { - const chips = compiled.querySelectorAll('.filter-chip'); - - expect(chips.length).toEqual(3); - }); - - it('should call clearFilter on close button click', () => { - const clearFilterSpy = spyOn(component, 'clearFilter'); - const chipRemoveButtons = compiled.querySelectorAll( - '.filter-chip button' - ); - (chipRemoveButtons[1] as HTMLButtonElement).click(); - - expect(clearFilterSpy).toHaveBeenCalledWith('deviceInfo'); - }); - }); - }); - }); - - describe('Class tests', () => { - beforeEach(() => { - component.filters = { - deviceInfo: 'Delta', - deviceFirmware: '03', - results: ['Compliant'], - dateRange: '', - }; - fixture.detectChanges(); - }); - - it('should clear filters on clearAllFilters', () => { - component.clearAllFilters(); - - expect(component.filters).toEqual({ - deviceInfo: '', - deviceFirmware: '', - results: [], - dateRange: '', - }); - }); - - it('should filter by kay on clearFilter', () => { - component.clearFilter('deviceInfo'); - - expect(component.filters).toEqual({ - deviceInfo: '', - deviceFirmware: '03', - results: ['Compliant'], - dateRange: '', - }); - }); - }); -}); diff --git a/modules/ui/src/app/components/filter-chips/filter-chips.component.ts b/modules/ui/src/app/components/filter-chips/filter-chips.component.ts deleted file mode 100644 index 3a6d0c9e3..000000000 --- a/modules/ui/src/app/components/filter-chips/filter-chips.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { MatIconModule } from '@angular/material/icon'; -import { MatChipsModule } from '@angular/material/chips'; -import { CommonModule, KeyValuePipe } from '@angular/common'; -import { DateRange, FilterName, Filters } from '../../model/filters'; - -@Component({ - selector: 'app-filter-chips', - templateUrl: './filter-chips.component.html', - styleUrls: ['./filter-chips.component.scss'], - standalone: true, - imports: [MatIconModule, MatChipsModule, KeyValuePipe, CommonModule], -}) -export class FilterChipsComponent { - @Input() filters!: Filters; - - @Output() filterCleared = new EventEmitter(); - - isValueEmpty(value: string | string[] | DateRange) { - if (value instanceof DateRange) { - return !value.start && !value.end; - } - return value === null || value.length === 0; - } - - clearFilter(filter: string) { - switch (filter) { - case FilterName.DeviceInfo: - this.filters.deviceInfo = ''; - break; - case FilterName.DeviceFirmware: - this.filters.deviceFirmware = ''; - break; - case FilterName.Results: - this.filters.results = []; - break; - case FilterName.DateRange: - this.filters.dateRange = ''; - break; - } - this.filterCleared.emit(this.filters); - } - - clearAllFilters() { - this.filters.deviceInfo = ''; - this.filters.deviceFirmware = ''; - this.filters.results = []; - this.filters.dateRange = ''; - this.filterCleared.emit(this.filters); - } -} diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html deleted file mode 100644 index 459ad20d6..000000000 --- a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.html +++ /dev/null @@ -1,79 +0,0 @@ - - -
    - - - - - - -
    -

    - - {{ resultList[i].value }} - -

    -
    -
    - - - - - - - - - - - -
    - - - - diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss deleted file mode 100644 index e8f24fcc8..000000000 --- a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.scss +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@use '@angular/material' as mat; -@import '../../../theming/colors'; - -.filter-dialog-content { - display: flex; - flex-direction: column; - padding: 16px 16px 0 16px; -} - -.date-field { - flex-shrink: 0; -} - -.date-calendar { - flex-grow: 1; - overflow: auto; - min-height: 2em; -} - -.filter-dialog-actions { - border-top: 1px solid $lighter-grey; - gap: 16px; - - button { - min-width: 38px; - margin: 0; - padding: 0 8px; - color: mat.get-color-from-palette($color-primary, 600); - font-weight: 500; - line-height: 20px; - letter-spacing: 0.25px; - } -} - -.text-field, -.date-field { - width: 100%; -} - -.filter-result-item { - padding: 4px 0; - margin: 0; - - &:first-child { - padding-top: 0; - } - - &:last-child { - padding-bottom: 20px; - } -} diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts deleted file mode 100644 index 4ecc15e52..000000000 --- a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.spec.ts +++ /dev/null @@ -1,208 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { FilterDialogComponent } from './filter-dialog.component'; -import { CommonModule } from '@angular/common'; -import { - MAT_DIALOG_DATA, - MatDialogModule, - MatDialogRef, -} from '@angular/material/dialog'; -import { MatButtonModule } from '@angular/material/button'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { - MatDatepickerInputEvent, - MatDatepickerModule, -} from '@angular/material/datepicker'; -import { MatNativeDateModule } from '@angular/material/core'; -import { DateRange, FilterName } from '../../model/filters'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { of } from 'rxjs'; - -describe('FilterDialogComponent', () => { - let component: FilterDialogComponent; - let fixture: ComponentFixture; - let compiled: HTMLElement; - const mockData = { left: 0, bottom: 0 }; - const mockClientRest = { - nativeElement: { - getBoundingClientRect: () => mockData, - }, - }; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [ - FilterDialogComponent, - CommonModule, - NoopAnimationsModule, - MatDialogModule, - MatButtonModule, - FormsModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - MatCheckboxModule, - MatDatepickerModule, - MatNativeDateModule, - ], - providers: [ - { - provide: MatDialogRef, - useValue: { - keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), - close: () => ({}), - updateSize: () => ({}), - updatePosition: () => ({}), - }, - }, - { provide: MAT_DIALOG_DATA, useValue: {} }, - ], - }); - fixture = TestBed.createComponent(FilterDialogComponent); - component = fixture.componentInstance; - - component.data = { - trigger: mockClientRest, - filter: FilterName.DeviceInfo, - }; - component.data.trigger.nativeElement = { - getBoundingClientRect: () => mockData, - }; - compiled = fixture.nativeElement as HTMLElement; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should close dialog on "cancel" click', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const closeButton = compiled.querySelector( - '.cancel-button' - ) as HTMLButtonElement; - - closeButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith(); - - closeSpy.calls.reset(); - }); - - it('should close dialog with data on "confirm" click', () => { - fixture.detectChanges(); - component.filterForm.get('deviceInfo')?.setValue('deviceInfo '); - const mockFormData = { - deviceInfo: 'deviceInfo', - deviceFirmware: '', - results: [], - dateRange: new DateRange(), - }; - const closeSpy = spyOn(component.dialogRef, 'close'); - const confirmButton = compiled.querySelector( - '.confirm-button' - ) as HTMLButtonElement; - - confirmButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith(mockFormData); - - closeSpy.calls.reset(); - }); - - describe('date filter', () => { - beforeEach(() => { - component.data = { - trigger: mockClientRest, - filter: FilterName.Started, - }; - fixture.detectChanges(); - }); - - it('#selectedChange should set date range data', () => { - const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); - const mockDate2 = new Date('Thu Jun 22 2023 00:00:00 GMT+0000'); - const range = new DateRange(); - range.start = mockDate; - range.end = null; - - component.selectedChange(mockDate); - - expect(component.range).toEqual(range); - - range.end = mockDate2; - component.selectedChange(mockDate2); - - expect(component.range).toEqual(range); - }); - - it('#startDateChanged should set date range data', () => { - const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); - component.startDateChanged({ - value: mockDate, - } as MatDatepickerInputEvent); - - expect(component.selectedRangeValue?.end).toEqual(null); - expect(component.selectedRangeValue?.start).toEqual(mockDate); - }); - - it('#startDateChanged should replace year if selected year later than current', () => { - const mockDate = new Date('Wed Jun 21 99999 00:00:00 GMT+0000'); - const currentDate = new Date(mockDate); - currentDate.setFullYear(new Date().getFullYear()); - - component.startDateChanged({ - value: mockDate, - } as MatDatepickerInputEvent); - - expect(component.selectedRangeValue?.start).toEqual(currentDate); - expect(component.range.start).toEqual(currentDate); - }); - - it('#endDateChanged should set date range data', () => { - const mockDate = new Date('Wed Jun 21 2023 00:00:00 GMT+0000'); - component.endDateChanged({ - value: mockDate, - } as MatDatepickerInputEvent); - - expect(component.selectedRangeValue?.start).toEqual(null); - expect(component.selectedRangeValue?.end).toEqual(mockDate); - }); - - it('#endDateChanged should replace year if selected year later than current', () => { - const mockDate = new Date('Wed Jun 21 99999 00:00:00 GMT+0000'); - const currentDate = new Date(mockDate); - currentDate.setFullYear(new Date().getFullYear()); - - component.endDateChanged({ - value: mockDate, - } as MatDatepickerInputEvent); - - expect(component.selectedRangeValue?.end).toEqual(currentDate); - expect(component.range.end).toEqual(currentDate); - }); - - it('should max date as today', () => { - expect(component.calendar.maxDate?.getDate()).toBe(new Date().getDate()); - }); - }); -}); diff --git a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts b/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts deleted file mode 100644 index d8ed991ae..000000000 --- a/modules/ui/src/app/components/filter-dialog/filter-dialog.component.ts +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - ChangeDetectionStrategy, - Component, - ElementRef, - HostListener, - Inject, - OnInit, - ViewChild, -} from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { - MAT_DIALOG_DATA, - MatDialogConfig, - MatDialogModule, - MatDialogRef, -} from '@angular/material/dialog'; -import { MatButtonModule } from '@angular/material/button'; -import { - FormArray, - FormBuilder, - FormControl, - FormGroup, - FormsModule, - ReactiveFormsModule, -} from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { - DateRange, - DefaultMatCalendarRangeStrategy, - MAT_DATE_RANGE_SELECTION_STRATEGY, - MatCalendar, - MatDatepickerInputEvent, - MatDatepickerModule, -} from '@angular/material/datepicker'; -import { MatNativeDateModule } from '@angular/material/core'; -import { FilterName, DateRange as LocalDateRange } from '../../model/filters'; -import { EscapableDialogComponent } from '../escapable-dialog/escapable-dialog.component'; - -interface DialogData { - trigger: ElementRef; - filter: string; -} - -@Component({ - selector: 'app-filter-dialog', - standalone: true, - imports: [ - CommonModule, - MatDialogModule, - MatButtonModule, - FormsModule, - ReactiveFormsModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - MatCheckboxModule, - MatDatepickerModule, - MatNativeDateModule, - ], - templateUrl: './filter-dialog.component.html', - styleUrls: ['./filter-dialog.component.scss'], - providers: [ - { - provide: MAT_DATE_RANGE_SELECTION_STRATEGY, - useClass: DefaultMatCalendarRangeStrategy, - }, - ], - changeDetection: ChangeDetectionStrategy.OnPush, -}) -export class FilterDialogComponent - extends EscapableDialogComponent - implements OnInit -{ - resultList = [ - { value: 'Compliant', enabled: false }, - { value: 'Non-Compliant', enabled: false }, - ]; - filterForm!: FormGroup; - selectedRangeValue!: DateRange | undefined; - - public readonly FilterName = FilterName; - - range: LocalDateRange = new LocalDateRange(); - - topPosition = 0; - - today = new Date(); - - private dialog_actions_height = 50; - - @HostListener('window:resize', ['$event']) - onResize() { - this.setDialogView(); - } - - @ViewChild(MatCalendar) calendar!: MatCalendar; - - constructor( - public override dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: DialogData, - private fb: FormBuilder - ) { - super(dialogRef); - } - - ngOnInit() { - this.setDialogView(); - this.createFilterForm(); - } - - private setDialogView(): void { - const matDialogConfig: MatDialogConfig = new MatDialogConfig(); - const rect = this.data.trigger?.nativeElement.getBoundingClientRect(); - - matDialogConfig.position = { - left: `${rect.left - 80}px`, - top: `${rect.bottom + 0}px`, - }; - - this.topPosition = rect.bottom + this.dialog_actions_height; - matDialogConfig.width = this.data.filter === 'results' ? '240px' : '328px'; - - this.dialogRef.updateSize(matDialogConfig.width); - this.dialogRef.updatePosition(matDialogConfig.position); - } - private createFilterForm() { - this.filterForm = this.fb.group({ - deviceInfo: [''], - deviceFirmware: [''], - results: new FormArray(this.resultList.map(() => new FormControl(false))), - }); - } - - get results() { - return this.filterForm.controls['results'] as FormArray; - } - - selectedChange(date: Date): void { - if (!this.selectedRangeValue?.start || this.selectedRangeValue?.end) { - this.selectedRangeValue = new DateRange(date, null); - } else { - const start = this.selectedRangeValue.start; - const end = date; - if (end < start) { - this.selectedRangeValue = new DateRange(end, start); - } else { - this.selectedRangeValue = new DateRange(start, end); - } - } - - this.range.start = this.selectedRangeValue.start; - this.range.end = this.selectedRangeValue.end; - } - - confirm(): void { - const formData = this.filterForm.value; - const results = this.resultList - .filter((item, i) => { - return !!this.results.controls[i].value; - }) - .map(item => item.value); - - if ( - this.range.start && - (this.range.end === null || this.range.end === '') - ) { - this.range.end = new Date(); - } - - const filtersData = { - deviceInfo: formData.deviceInfo.trim(), - deviceFirmware: formData.deviceFirmware.trim(), - results, - dateRange: this.range, - }; - - this.dialogRef.close(filtersData); - } - - cancel(): void { - this.dialogRef.close(); - } - - startDateChanged(event: MatDatepickerInputEvent) { - const date = event.value; - if (date && date.getFullYear() > this.today.getFullYear()) { - date.setFullYear(this.today.getFullYear()); - this.range.start = date; - } - this.selectedRangeValue = new DateRange( - date, - this.selectedRangeValue?.end || null - ); - if (this.selectedRangeValue.start) { - this.calendar.activeDate = this.selectedRangeValue.start; - this.calendar.updateTodaysDate(); - } - } - - endDateChanged(event: MatDatepickerInputEvent) { - const date = event.value; - if (date && date.getFullYear() > this.today.getFullYear()) { - date.setFullYear(this.today.getFullYear()); - this.range.end = date; - } - this.selectedRangeValue = new DateRange( - this.selectedRangeValue?.start || null, - event.value - ); - if (this.selectedRangeValue?.end) { - this.calendar.activeDate = this.selectedRangeValue.end; - this.calendar.updateTodaysDate(); - } - } -} diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.html b/modules/ui/src/app/components/general-settings/general-settings.component.html deleted file mode 100644 index 3f951dcc9..000000000 --- a/modules/ui/src/app/components/general-settings/general-settings.component.html +++ /dev/null @@ -1,163 +0,0 @@ - -
    -

    Connection settings

    - -
    -
    -
    - - - Warning! Testrun requires two ports to operate correctly. - - -

    - Choose one of the options where you’ll connect IoT device for testing -

    - - Device connection port - - - -

    - {{ deviceControl.value.key }} -

    -

    - {{ deviceControl.value.value }} -

    -
    -
    - -

    {{ interface.key }}

    -

    {{ interface.value }}

    -
    -
    -
    - -

    - Choose one of the following ports on your Laptop or Desktop -

    - - Internet connection port - - - -

    - {{ internetControl.value.key }} -

    -

    - {{ internetControl.value.value }} -

    -
    -
    - -

    {{ defaultInternetOption.key }}

    -

    {{ defaultInternetOption.value }}

    -
    - -

    {{ interface.key }}

    -

    {{ interface.value }}

    -
    -
    -
    -
    -

    - If a port is missing from this list, you can - - Refresh - - the Connection settings -

    - - Both interfaces must have different values - - -
    - - - Warning! No ports is detected. - - -
    - diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts b/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts deleted file mode 100644 index 08f9309e5..000000000 --- a/modules/ui/src/app/components/general-settings/general-settings.component.spec.ts +++ /dev/null @@ -1,330 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { GeneralSettingsComponent } from './general-settings.component'; -import { - SystemInterfaces, - TestRunService, -} from '../../services/test-run.service'; -import { of } from 'rxjs'; -import { SystemConfig } from '../../model/setting'; -import { MatRadioModule } from '@angular/material/radio'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIcon, MatIconModule } from '@angular/material/icon'; -import { MatIconTestingModule } from '@angular/material/icon/testing'; -import { Component, Input } from '@angular/core'; -import { LiveAnnouncer } from '@angular/cdk/a11y'; -import SpyObj = jasmine.SpyObj; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - -const MOCK_SYSTEM_CONFIG_EMPTY: SystemConfig = { - network: { - device_intf: '', - internet_intf: '', - }, -}; - -const MOCK_SYSTEM_CONFIG_WITH_DATA: SystemConfig = { - network: { - device_intf: 'mockDeviceKey', - internet_intf: 'mockInternetKey', - }, -}; - -const MOCK_INTERFACES: SystemInterfaces = { - mockDeviceKey: 'mockDeviceValue', - mockInternetKey: 'mockInternetValue', -}; - -describe('GeneralSettingsComponent', () => { - let component: GeneralSettingsComponent; - let fixture: ComponentFixture; - let testRunServiceMock: SpyObj; - let mockLiveAnnouncer: SpyObj; - let compiled: HTMLElement; - - beforeEach(async () => { - testRunServiceMock = jasmine.createSpyObj([ - 'getSystemInterfaces', - 'getSystemConfig', - 'setSystemConfig', - 'createSystemConfig', - 'hasConnectionSetting$', - 'setHasConnectionSetting', - 'systemConfig$', - ]); - testRunServiceMock.getSystemInterfaces.and.returnValue(of({})); - testRunServiceMock.getSystemConfig.and.returnValue( - of(MOCK_SYSTEM_CONFIG_EMPTY) - ); - testRunServiceMock.createSystemConfig.and.returnValue( - of(MOCK_SYSTEM_CONFIG_WITH_DATA) - ); - testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_EMPTY); - testRunServiceMock.hasConnectionSetting$ = of(true); - - mockLiveAnnouncer = jasmine.createSpyObj(['announce']); - - await TestBed.configureTestingModule({ - declarations: [ - GeneralSettingsComponent, - MatIcon, - FakeSpinnerComponent, - FakeCalloutComponent, - ], - providers: [ - { provide: TestRunService, useValue: testRunServiceMock }, - { provide: LiveAnnouncer, useValue: mockLiveAnnouncer }, - ], - imports: [ - BrowserAnimationsModule, - MatButtonModule, - MatIconModule, - MatRadioModule, - ReactiveFormsModule, - MatIconTestingModule, - MatInputModule, - MatSelectModule, - ], - }).compileComponents(); - - fixture = TestBed.createComponent(GeneralSettingsComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - compiled = fixture.nativeElement as HTMLElement; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should set default values to form if systemConfig data', () => { - testRunServiceMock.getSystemConfig.and.returnValue( - of(MOCK_SYSTEM_CONFIG_WITH_DATA) - ); - component.interfaces = { mockDeviceKey: 'mockDeviceValue' }; - - const expectedDevice = { key: 'mockDeviceKey', value: 'mockDeviceValue' }; - - component.ngOnInit(); - - expect(component.deviceControl.value).toEqual(expectedDevice); - expect(component.internetControl.value).toEqual( - component.defaultInternetOption - ); - }); - - it('#reloadSetting should emit reloadInterfacesEvent', () => { - spyOn(component.reloadInterfacesEvent, 'emit'); - - component.reloadSetting(); - - expect(component.reloadInterfacesEvent.emit).toHaveBeenCalled(); - }); - - describe('#closeSetting', () => { - beforeEach(() => { - testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); - component.interfaces = MOCK_INTERFACES; - }); - - it('should emit closeSettingEvent', () => { - spyOn(component.closeSettingEvent, 'emit'); - - component.closeSetting('Message'); - - expect(component.closeSettingEvent.emit).toHaveBeenCalled(); - }); - - it('should call liveAnnouncer with provided message', () => { - const mockMessage = 'mock event'; - - component.closeSetting(mockMessage); - - expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( - `The ${mockMessage} finished. The connection setting panel is closed.` - ); - }); - - it('should call reset settingForm', () => { - spyOn(component.settingForm, 'reset'); - - component.closeSetting('Message'); - - expect(component.settingForm.reset).toHaveBeenCalled(); - }); - - it('should set value of settingForm on setSystemSetting', () => { - component.closeSetting('Message'); - - const expectedDevice = { key: 'mockDeviceKey', value: 'mockDeviceValue' }; - const expectedInternet = { - key: 'mockInternetKey', - value: 'mockInternetValue', - }; - - expect(component.settingForm.value.device_intf).toEqual(expectedDevice); - - expect(component.settingForm.value.internet_intf).toEqual( - expectedInternet - ); - }); - }); - - describe('#saveSetting', () => { - beforeEach(() => { - testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); - }); - - it('should have form error if form has the same value', () => { - const mockSameValue = 'sameValue'; - component.deviceControl.setValue(mockSameValue); - component.internetControl.setValue(mockSameValue); - - component.saveSetting(); - - expect(component.settingForm.invalid).toBeTrue(); - expect(component.isSubmitting).toBeTrue(); - expect(component.isFormError).toBeTrue(); - }); - - it('should call createSystemConfig when setting form valid', () => { - const expectedResult = { - network: { - device_intf: 'mockDeviceKey', - internet_intf: '', - }, - }; - - component.deviceControl.setValue({ - key: 'mockDeviceKey', - value: 'mockDeviceValue', - }); - component.internetControl.setValue(component.defaultInternetOption); - - component.saveSetting(); - - expect(component.settingForm.invalid).toBeFalse(); - expect(testRunServiceMock.createSystemConfig).toHaveBeenCalledWith( - expectedResult - ); - }); - }); - - describe('with no intefaces data', () => { - beforeEach(() => { - component.interfaces = {}; - fixture.detectChanges(); - }); - - it('should have callout component', () => { - const callout = compiled.querySelector('app-callout'); - - expect(callout).toBeTruthy(); - }); - - it('should have disabled "Save" button', () => { - const saveBtn = compiled.querySelector( - '.save-button' - ) as HTMLButtonElement; - - expect(saveBtn.disabled).toBeTrue(); - }); - }); - - describe('with interfaces length less than one', () => { - beforeEach(() => { - component.interfaces = {}; - fixture.detectChanges(); - }); - - it('should have callout component', () => { - const callout = compiled.querySelector('app-callout'); - - expect(callout).toBeTruthy(); - }); - - it('should have disabled "Save" button', () => { - component.deviceControl.setValue( - MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.device_intf - ); - component.internetControl.setValue( - MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.internet_intf - ); - fixture.detectChanges(); - - const saveBtn = compiled.querySelector( - '.save-button' - ) as HTMLButtonElement; - - expect(saveBtn.disabled).toBeTrue(); - }); - }); - - describe('with interfaces length more then one', () => { - beforeEach(() => { - component.interfaces = { - mockDeviceValue: 'mockDeviceValue', - mockInterfaceValue: 'mockInterfaceValue', - }; - testRunServiceMock.systemConfig$ = of(MOCK_SYSTEM_CONFIG_WITH_DATA); - testRunServiceMock.getSystemConfig.and.returnValue( - of(MOCK_SYSTEM_CONFIG_WITH_DATA) - ); - fixture.detectChanges(); - }); - - it('should not have callout component', () => { - const callout = compiled.querySelector('app-callout'); - - expect(callout).toBeFalsy(); - }); - - it('should not have disabled "Save" button', () => { - component.deviceControl.setValue( - MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.device_intf - ); - component.internetControl.setValue( - MOCK_SYSTEM_CONFIG_WITH_DATA?.network?.internet_intf - ); - fixture.detectChanges(); - - const saveBtn = compiled.querySelector( - '.save-button' - ) as HTMLButtonElement; - - expect(saveBtn.disabled).toBeFalse(); - }); - }); -}); - -@Component({ - selector: 'app-spinner', - template: '
    ', -}) -class FakeSpinnerComponent {} - -@Component({ - selector: 'app-callout', - template: '
    ', -}) -class FakeCalloutComponent { - @Input() type = ''; -} diff --git a/modules/ui/src/app/components/general-settings/general-settings.component.ts b/modules/ui/src/app/components/general-settings/general-settings.component.ts deleted file mode 100644 index d9bbecea1..000000000 --- a/modules/ui/src/app/components/general-settings/general-settings.component.ts +++ /dev/null @@ -1,234 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - Component, - EventEmitter, - Input, - OnDestroy, - OnInit, - Output, -} from '@angular/core'; -import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; -import { Subject, takeUntil, tap } from 'rxjs'; -import { - SystemInterfaces, - TestRunService, -} from '../../services/test-run.service'; -import { OnlyDifferentValuesValidator } from './only-different-values.validator'; -import { CalloutType } from '../../model/callout-type'; -import { Observable } from 'rxjs/internal/Observable'; -import { shareReplay } from 'rxjs/internal/operators/shareReplay'; -import { LiveAnnouncer } from '@angular/cdk/a11y'; -import { EventType } from '../../model/event-type'; -import { SettingOption } from '../../model/setting'; - -@Component({ - selector: 'app-general-settings', - templateUrl: './general-settings.component.html', - styleUrls: ['./general-settings.component.scss'], -}) -export class GeneralSettingsComponent implements OnInit, OnDestroy { - private _interfaces: SystemInterfaces = {}; - @Input() - get interfaces(): SystemInterfaces { - return this._interfaces; - } - set interfaces(value: SystemInterfaces) { - this._interfaces = value; - this.setSystemSetting(); - } - @Output() closeSettingEvent = new EventEmitter(); - @Output() reloadInterfacesEvent = new EventEmitter(); - public readonly CalloutType = CalloutType; - public readonly EventType = EventType; - public settingForm!: FormGroup; - public isSubmitting = false; - public defaultInternetOption = { - key: '', - value: 'Not specified', - }; - hasConnectionSetting$!: Observable; - private destroy$: Subject = new Subject(); - - get deviceControl(): FormControl { - return this.settingForm?.get('device_intf') as FormControl; - } - - get internetControl(): FormControl { - return this.settingForm?.get('internet_intf') as FormControl; - } - - get isFormValues(): boolean { - return this.internetControl.value && this.deviceControl.value; - } - - get isFormError(): boolean { - return this.settingForm.hasError('hasSameValues'); - } - - get isLessThanOneInterface(): boolean { - return Object.keys(this.interfaces).length < 1; - } - - constructor( - private readonly testRunService: TestRunService, - private readonly fb: FormBuilder, - private liveAnnouncer: LiveAnnouncer, - private readonly onlyDifferentValuesValidator: OnlyDifferentValuesValidator - ) {} - - ngOnInit() { - this.hasConnectionSetting$ = this.testRunService.hasConnectionSetting$.pipe( - shareReplay({ refCount: true, bufferSize: 1 }) - ); - - this.createSettingForm(); - this.setSettingView(); - this.cleanFormErrorMessage(); - } - - reloadSetting(): void { - this.reloadInterfacesEvent.emit(); - } - - closeSetting(message: string): void { - this.resetForm(); - this.closeSettingEvent.emit(); - this.liveAnnouncer.announce( - `The ${message} finished. The connection setting panel is closed.` - ); - this.setSystemSetting(); - } - - saveSetting(): void { - if (this.settingForm.invalid) { - this.isSubmitting = true; - this.settingForm.markAllAsTouched(); - } else { - this.createSystemConfig(); - } - } - - private createSettingForm(): FormGroup { - return (this.settingForm = this.fb.group( - { - device_intf: [''], - internet_intf: [this.defaultInternetOption], - }, - { - validators: [this.onlyDifferentValuesValidator.onlyDifferentSetting()], - updateOn: 'change', - } - )); - } - - private setSettingView(): void { - this.testRunService - .getSystemConfig() - .pipe(takeUntil(this.destroy$)) - .subscribe(config => { - if (config?.network) { - const { device_intf, internet_intf } = config.network; - if (device_intf && internet_intf) { - this.testRunService.setHasConnectionSetting(true); - } else { - this.testRunService.setHasConnectionSetting(false); - } - this.setDefaultFormValues(device_intf, internet_intf); - } else { - this.testRunService.setHasConnectionSetting(false); - } - this.testRunService.setSystemConfig(config); - }); - } - - compare(c1: SettingOption, c2: SettingOption): boolean { - return c1 && c2 && c1.key === c2.key && c1.value === c2.value; - } - - private setDefaultFormValues( - device: string | undefined, - internet: string | undefined - ): void { - if (device && this.interfaces[device]) { - const deviceData = this.transformValueToObj(device); - this.deviceControl.setValue(deviceData); - } - if (internet && this.interfaces[internet]) { - const interneData = this.transformValueToObj(internet); - this.internetControl.setValue(interneData); - } else { - this.internetControl.setValue(this.defaultInternetOption); - } - } - - private transformValueToObj(value: string): SettingOption { - return { - key: value, - value: this.interfaces[value], - }; - } - - private cleanFormErrorMessage(): void { - this.settingForm.valueChanges - .pipe( - takeUntil(this.destroy$), - tap(() => (this.isSubmitting = false)) - ) - .subscribe(); - } - - private createSystemConfig(): void { - const { device_intf, internet_intf } = this.settingForm.value; - const data = { - network: { - device_intf: device_intf.key, - internet_intf: internet_intf.key, - }, - }; - - this.testRunService - .createSystemConfig(data) - .pipe(takeUntil(this.destroy$)) - .subscribe(() => { - this.closeSetting(EventType.Save); - this.testRunService.setSystemConfig(data); - this.testRunService.setHasConnectionSetting(true); - }); - } - - private setSystemSetting(): void { - this.testRunService.systemConfig$ - .pipe(takeUntil(this.destroy$)) - .subscribe(config => { - if (config?.network) { - const { device_intf, internet_intf } = config.network; - this.setDefaultFormValues(device_intf, internet_intf); - } else { - this.internetControl?.setValue(this.defaultInternetOption); - } - }); - } - - private resetForm(): void { - this.settingForm.reset(); - } - - ngOnDestroy() { - this.destroy$.next(true); - this.destroy$.unsubscribe(); - } -} diff --git a/modules/ui/src/app/components/spinner/spinner.component.spec.ts b/modules/ui/src/app/components/spinner/spinner.component.spec.ts index 2576a3b2c..b9831986f 100644 --- a/modules/ui/src/app/components/spinner/spinner.component.spec.ts +++ b/modules/ui/src/app/components/spinner/spinner.component.spec.ts @@ -3,10 +3,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { SpinnerComponent } from './spinner.component'; import { LoaderService } from '../../services/loader.service'; import { of } from 'rxjs'; -<<<<<<< HEAD import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -======= ->>>>>>> main describe('SpinnerComponent', () => { let component: SpinnerComponent; @@ -17,11 +14,7 @@ describe('SpinnerComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ -<<<<<<< HEAD imports: [SpinnerComponent, BrowserAnimationsModule], -======= - imports: [SpinnerComponent], ->>>>>>> main providers: [{ provide: LoaderService, useValue: loaderServiceMock }], }); fixture = TestBed.createComponent(SpinnerComponent); diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html deleted file mode 100644 index b319f9b97..000000000 --- a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.html +++ /dev/null @@ -1,46 +0,0 @@ - -Software is outdated! -

    - You are currently using an outdated software ({{ - data.installed_version - }}). -
    - The actual version number is {{ data.latest_version }}. Please consider to update or continue at your own risk. -

    - - - - - Download - - diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss deleted file mode 100644 index e340a6192..000000000 --- a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.scss +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -@import '../../../../theming/colors'; - -:host { - display: grid; - overflow: hidden; - width: 570px; - padding: 24px 16px 8px 24px; - gap: 10px; -} - -.version-update-title { - color: #202124; - font-size: 18px; - line-height: 24px; -} - -.version-update-content { - font-family: Roboto, sans-serif; - font-size: 14px; - line-height: 20px; - letter-spacing: 0.2px; - color: $grey-800; -} - -.version-update-actions { - padding: 0; - min-height: 30px; -} diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts deleted file mode 100644 index 72fee490b..000000000 --- a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.spec.ts +++ /dev/null @@ -1,107 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -import { UpdateDialogComponent } from './update-dialog.component'; -import { - MAT_DIALOG_DATA, - MatDialogModule, - MatDialogRef, -} from '@angular/material/dialog'; -import { MatButtonModule } from '@angular/material/button'; -import { NEW_VERSION } from '../../../mocks/version.mock'; -import { of } from 'rxjs'; - -describe('UpdateDialogComponent', () => { - let component: UpdateDialogComponent; - let fixture: ComponentFixture; - let compiled: HTMLElement; - - beforeEach(() => { - TestBed.configureTestingModule({ - imports: [UpdateDialogComponent, MatDialogModule, MatButtonModule], - providers: [ - { - provide: MatDialogRef, - useValue: { - keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), - close: () => ({}), - }, - }, - { provide: MAT_DIALOG_DATA, useValue: {} }, - ], - }); - fixture = TestBed.createComponent(UpdateDialogComponent); - component = fixture.componentInstance; - component.data = NEW_VERSION; - fixture.detectChanges(); - compiled = fixture.nativeElement as HTMLElement; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should has title', () => { - const title = compiled.querySelector( - '.version-update-title' - ) as HTMLElement; - - expect(title.innerHTML).toEqual('Software is outdated!'); - }); - - it('should has content', () => { - const content = compiled.querySelector( - '.version-update-content' - ) as HTMLElement; - - const innerContent = content.innerHTML.trim(); - expect(innerContent).toContain( - 'You are currently using an outdated software' - ); - expect(innerContent).toContain('v1'); - expect(innerContent).toContain('v2'); - expect(innerContent).toContain( - 'Please consider to update or continue at your own risk.' - ); - }); - - it('should close dialog on "cancel" click', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const closeButton = compiled.querySelector( - '.cancel-button' - ) as HTMLButtonElement; - - closeButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith(); - - closeSpy.calls.reset(); - }); - - it('should close dialog on download link click', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const confirmButton = compiled.querySelector( - '.download-link' - ) as HTMLAnchorElement; - - confirmButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith(); - - closeSpy.calls.reset(); - }); -}); diff --git a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts b/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts deleted file mode 100644 index 86ed5db43..000000000 --- a/modules/ui/src/app/components/version/update-dialog/update-dialog.component.ts +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Component, Inject } from '@angular/core'; -import { - MAT_DIALOG_DATA, - MatDialogModule, - MatDialogRef, -} from '@angular/material/dialog'; -import { MatButtonModule } from '@angular/material/button'; -import { Version } from '../../../model/version'; -import { EscapableDialogComponent } from '../../escapable-dialog/escapable-dialog.component'; - -@Component({ - selector: 'app-update-dialog', - standalone: true, - imports: [MatDialogModule, MatButtonModule], - templateUrl: './update-dialog.component.html', - styleUrls: ['./update-dialog.component.scss'], -}) -export class UpdateDialogComponent extends EscapableDialogComponent { - constructor( - public override dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: Version - ) { - super(dialogRef); - } - - cancel() { - this.dialogRef.close(); - } -} diff --git a/modules/ui/src/app/components/version/version.component.html b/modules/ui/src/app/components/version/version.component.html index c730ca740..d45ea69da 100644 --- a/modules/ui/src/app/components/version/version.component.html +++ b/modules/ui/src/app/components/version/version.component.html @@ -16,7 +16,6 @@ - - - - - - - diff --git a/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts b/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts deleted file mode 100644 index 47f8fa423..000000000 --- a/modules/ui/src/app/device-repository/device-form/device-form.component.spec.ts +++ /dev/null @@ -1,472 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - ComponentFixture, - fakeAsync, - flush, - TestBed, -} from '@angular/core/testing'; - -import { DeviceFormComponent, FormAction } from './device-form.component'; -import { TestRunService } from '../../services/test-run.service'; -import { MatButtonModule } from '@angular/material/button'; -import { FormControl, ReactiveFormsModule } from '@angular/forms'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatInputModule } from '@angular/material/input'; -import { - MAT_DIALOG_DATA, - MatDialogModule, - MatDialogRef, -} from '@angular/material/dialog'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { Device } from '../../model/device'; -import { of, throwError } from 'rxjs'; -import { DeviceTestsComponent } from '../../components/device-tests/device-tests.component'; -import { SpinnerComponent } from '../../components/spinner/spinner.component'; -import { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask'; - -describe('DeviceFormComponent', () => { - let component: DeviceFormComponent; - let fixture: ComponentFixture; - let testRunServiceMock: jasmine.SpyObj; - let compiled: HTMLElement; - - beforeEach(() => { - testRunServiceMock = jasmine.createSpyObj([ - 'getTestModules', - 'hasDevice', - 'saveDevice', - 'editDevice', - 'setIsOpenAddDevice', - ]); - testRunServiceMock.getTestModules.and.returnValue([ - { - displayName: 'Connection', - name: 'connection', - enabled: true, - }, - { - displayName: 'Smart Ready', - name: 'udmi', - enabled: false, - }, - ]); - TestBed.configureTestingModule({ - declarations: [DeviceFormComponent], - providers: [ - { - provide: TestRunService, - useValue: testRunServiceMock, - }, - { - provide: MatDialogRef, - useValue: { - keydownEvents: () => of(new KeyboardEvent('keydown', { code: '' })), - close: () => ({}), - }, - }, - { provide: MAT_DIALOG_DATA, useValue: {} }, - provideNgxMask(), - ], - imports: [ - MatButtonModule, - ReactiveFormsModule, - MatCheckboxModule, - MatInputModule, - MatDialogModule, - BrowserAnimationsModule, - DeviceTestsComponent, - SpinnerComponent, - NgxMaskDirective, - NgxMaskPipe, - ], - }); - fixture = TestBed.createComponent(DeviceFormComponent); - component = fixture.componentInstance; - compiled = fixture.nativeElement as HTMLElement; - component.data = {}; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should contain device form', () => { - const form = compiled.querySelector('.device-form'); - - expect(form).toBeTruthy(); - }); - - it('should close dialog on "cancel" click', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const closeButton = compiled.querySelector( - '.close-button' - ) as HTMLButtonElement; - - closeButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith(); - - closeSpy.calls.reset(); - }); - - it('should call setIsOpenAddDevice with false on "cancel" click', () => { - const closeButton = compiled.querySelector( - '.close-button' - ) as HTMLButtonElement; - - closeButton?.click(); - - expect(testRunServiceMock.setIsOpenAddDevice).toHaveBeenCalledWith(false); - }); - - it('should not save data when fields are empty', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const saveButton = compiled.querySelector( - '.save-button' - ) as HTMLButtonElement; - const model: HTMLInputElement = compiled.querySelector( - '.device-form-model' - ) as HTMLInputElement; - const manufacturer: HTMLInputElement = compiled.querySelector( - '.device-form-manufacturer' - ) as HTMLInputElement; - const macAddress: HTMLInputElement = compiled.querySelector( - '.device-form-mac-address' - ) as HTMLInputElement; - - ['', ' '].forEach(value => { - model.value = value; - model.dispatchEvent(new Event('input')); - manufacturer.value = value; - manufacturer.dispatchEvent(new Event('input')); - macAddress.value = value; - macAddress.dispatchEvent(new Event('input')); - saveButton?.click(); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - const requiredErrors = compiled.querySelectorAll('mat-error'); - expect(requiredErrors?.length).toEqual(3); - - requiredErrors.forEach(error => { - expect(error?.innerHTML).toContain('required'); - }); - }); - - expect(closeSpy).not.toHaveBeenCalled(); - - closeSpy.calls.reset(); - }); - }); - - it('should not save data if no test selected', fakeAsync(() => { - const closeSpy = spyOn(component.dialogRef, 'close'); - component.model.setValue('model'); - component.manufacturer.setValue('manufacturer'); - component.mac_addr.setValue('07:07:07:07:07:07'); - component.test_modules.setValue([false, false]); - testRunServiceMock.hasDevice.and.returnValue(true); - - component.saveDevice(); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - const error = compiled.querySelector('mat-error'); - expect(error?.innerHTML).toContain( - 'At least one test has to be selected to save a Device.' - ); - }); - - expect(closeSpy).not.toHaveBeenCalled(); - - closeSpy.calls.reset(); - flush(); - })); - - it('should not save data when server response with error', fakeAsync(() => { - const closeSpy = spyOn(component.dialogRef, 'close'); - component.model.setValue('model'); - component.manufacturer.setValue('manufacturer'); - component.mac_addr.setValue('07:07:07:07:07:07'); - testRunServiceMock.hasDevice.and.returnValue(false); - testRunServiceMock.saveDevice.and.returnValue( - throwError({ error: 'some error' }) - ); - - component.saveDevice(); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - const error = compiled.querySelector('mat-error'); - expect(error?.innerHTML).toContain('some error'); - }); - expect(closeSpy).not.toHaveBeenCalled(); - - closeSpy.calls.reset(); - flush(); - })); - - it('should save data when form is valid', () => { - const device: Device = { - manufacturer: 'manufacturer', - model: 'model', - mac_addr: '07:07:07:07:07:07', - test_modules: { - connection: { - enabled: true, - }, - udmi: { - enabled: false, - }, - }, - }; - const closeSpy = spyOn(component.dialogRef, 'close'); - component.model.setValue('model'); - component.manufacturer.setValue('manufacturer'); - component.mac_addr.setValue('07:07:07:07:07:07'); - testRunServiceMock.hasDevice.and.returnValue(false); - testRunServiceMock.saveDevice.and.returnValue(of(true)); - - component.saveDevice(); - - expect(closeSpy).toHaveBeenCalledTimes(1); - expect(closeSpy).toHaveBeenCalledWith({ - action: FormAction.Save, - device, - }); - - closeSpy.calls.reset(); - }); - - describe('test modules', () => { - it('should be present', () => { - const test = compiled.querySelectorAll('mat-checkbox'); - - expect(test.length).toEqual(2); - }); - - it('should be enabled', () => { - const tests = compiled.querySelectorAll('.device-form-test-modules p'); - - expect(tests[0].classList.contains('disabled')).toEqual(false); - }); - }); - - describe('device model', () => { - it('should not contain errors when input is correct', () => { - const model: HTMLInputElement = compiled.querySelector( - '.device-form-model' - ) as HTMLInputElement; - ['model', 'Gebäude', 'jardín'].forEach(value => { - model.value = value; - model.dispatchEvent(new Event('input')); - - const errors = component.model.errors; - const uiValue = model.value; - const formValue = component.model.value; - - expect(uiValue).toEqual(formValue); - expect(errors).toBeNull(); - }); - }); - }); - - describe('device manufacturer', () => { - it('should not contain errors when input is correct', () => { - const manufacturer: HTMLInputElement = compiled.querySelector( - '.device-form-manufacturer' - ) as HTMLInputElement; - ['manufacturer', 'Gebäude', 'jardín'].forEach(value => { - manufacturer.value = value; - manufacturer.dispatchEvent(new Event('input')); - - const errors = component.manufacturer.errors; - const uiValue = manufacturer.value; - const formValue = component.manufacturer.value; - - expect(uiValue).toEqual(formValue); - expect(errors).toBeNull(); - }); - }); - }); - - describe('mac address', () => { - it('should not be disabled', () => { - expect(component.mac_addr.disabled).toBeFalse(); - }); - - it('should not contain errors when input is correct', () => { - const macAddress: HTMLInputElement = compiled.querySelector( - '.device-form-mac-address' - ) as HTMLInputElement; - ['07:07:07:07:07:07', ' 07:07:07:07:07:07 '].forEach(value => { - macAddress.value = value; - macAddress.dispatchEvent(new Event('input')); - - const errors = component.mac_addr.errors; - const formValue = component.mac_addr.value; - - expect(macAddress.value).toEqual(formValue); - expect(errors).toBeNull(); - }); - }); - - it('should have "pattern" error when field does not satisfy pattern', () => { - ['value', 'q01e423573c4'].forEach(value => { - const macAddress: HTMLInputElement = compiled.querySelector( - '.device-form-mac-address' - ) as HTMLInputElement; - macAddress.value = value; - macAddress.dispatchEvent(new Event('input')); - component.mac_addr.markAsTouched(); - fixture.detectChanges(); - - const macAddressError = compiled.querySelector('mat-error')?.innerHTML; - const error = component.mac_addr.hasError('pattern'); - - expect(error).toBeTruthy(); - expect(macAddressError).toContain( - 'Please, check. A MAC address consists of 12 hexadecimal digits (0 to 9, a to f, or A to F).' - ); - }); - }); - - it('should have "has_same_mac_address" error when MAC address is already used', () => { - testRunServiceMock.hasDevice.and.returnValue(true); - const macAddress: HTMLInputElement = compiled.querySelector( - '.device-form-mac-address' - ) as HTMLInputElement; - macAddress.value = '07:07:07:07:07:07'; - macAddress.dispatchEvent(new Event('input')); - component.mac_addr.markAsTouched(); - fixture.detectChanges(); - - const macAddressError = compiled.querySelector('mat-error')?.innerHTML; - const error = component.mac_addr.hasError('has_same_mac_address'); - - expect(error).toBeTruthy(); - expect(macAddressError).toContain( - 'This MAC address is already used for another device in the repository.' - ); - }); - }); - - it('should have hidden delete device button', () => { - const deleteButton = compiled.querySelector( - '.delete-button' - ) as HTMLButtonElement; - - expect(deleteButton.classList.contains('hidden')).toBeTrue(); - }); - - describe('when device is present', () => { - beforeEach(() => { - component.data = { - device: { - manufacturer: 'Delta', - model: 'O3-DIN-CPU', - mac_addr: '00:1e:42:35:73:c4', - test_modules: { - udmi: { - enabled: true, - }, - }, - }, - }; - component.ngOnInit(); - fixture.detectChanges(); - }); - - it('should fill form values with device values', () => { - const model: HTMLInputElement = compiled.querySelector( - '.device-form-model' - ) as HTMLInputElement; - const manufacturer: HTMLInputElement = compiled.querySelector( - '.device-form-manufacturer' - ) as HTMLInputElement; - - expect(model.value).toEqual('O3-DIN-CPU'); - expect(manufacturer.value).toEqual('Delta'); - }); - - it('should save data even mac address already exist', fakeAsync(() => { - const closeSpy = spyOn(component.dialogRef, 'close'); - testRunServiceMock.saveDevice.and.returnValue(of(true)); - testRunServiceMock.editDevice.and.returnValue(of(true)); - testRunServiceMock.hasDevice.and.returnValue(true); - // fill the test controls - component.test_modules.push(new FormControl(false)); - component.test_modules.push(new FormControl(true)); - component.saveDevice(); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - const error = compiled.querySelector('mat-error'); - expect(error).toBeFalse(); - }); - - expect(closeSpy).toHaveBeenCalledWith({ - action: FormAction.Save, - device: { - manufacturer: 'Delta', - model: 'O3-DIN-CPU', - mac_addr: '00:1e:42:35:73:c4', - test_modules: { - connection: { - enabled: false, - }, - udmi: { - enabled: true, - }, - }, - }, - }); - - closeSpy.calls.reset(); - flush(); - })); - - it('should have delete device button', () => { - const deleteButton = compiled.querySelector( - '.delete-button' - ) as HTMLButtonElement; - - expect(deleteButton.classList.contains('hidden')).toBeFalse(); - expect(deleteButton).toBeTruthy(); - }); - - it('should close dialog with delete action on "delete" click', () => { - const closeSpy = spyOn(component.dialogRef, 'close'); - const closeButton = compiled.querySelector( - '.delete-button' - ) as HTMLButtonElement; - - closeButton?.click(); - - expect(closeSpy).toHaveBeenCalledWith({ action: FormAction.Delete }); - - closeSpy.calls.reset(); - }); - }); - - it('should has loader element', () => { - const spinner = compiled.querySelector('app-spinner'); - - expect(spinner).toBeTruthy(); - }); -}); diff --git a/modules/ui/src/app/device-repository/device-repository.component.html b/modules/ui/src/app/device-repository/device-repository.component.html deleted file mode 100644 index 8ce001edb..000000000 --- a/modules/ui/src/app/device-repository/device-repository.component.html +++ /dev/null @@ -1,47 +0,0 @@ - - - -

    Devices

    - -
    -
    - - - -
    -
    - - -
    - -
    -
    - - - - diff --git a/modules/ui/src/app/device-repository/device-repository.component.spec.ts b/modules/ui/src/app/device-repository/device-repository.component.spec.ts deleted file mode 100644 index 3bcc131f3..000000000 --- a/modules/ui/src/app/device-repository/device-repository.component.spec.ts +++ /dev/null @@ -1,343 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; -import { of } from 'rxjs'; -import { Device } from '../model/device'; -import { TestRunService } from '../services/test-run.service'; - -import { DeviceRepositoryComponent } from './device-repository.component'; -import { DeviceRepositoryModule } from './device-repository.module'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { - DeviceFormComponent, - FormAction, -} from './device-form/device-form.component'; -import { MatDialogRef } from '@angular/material/dialog'; -import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; -import { device } from '../mocks/device.mock'; -import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; -import SpyObj = jasmine.SpyObj; -import { StateService } from '../services/state.service'; - -describe('DeviceRepositoryComponent', () => { - let component: DeviceRepositoryComponent; - let fixture: ComponentFixture; - let compiled: HTMLElement; - let mockService: SpyObj; - - const stateServiceMock: jasmine.SpyObj = jasmine.createSpyObj( - 'stateServiceMock', - ['focusFirstElementInMain'] - ); - - beforeEach(() => { - mockService = jasmine.createSpyObj([ - 'getDevices', - 'fetchDevices', - 'setDevices', - 'getTestModules', - 'addDevice', - 'updateDevice', - 'deleteDevice', - 'removeDevice', - 'isOpenAddDevice$', - ]); - mockService.isOpenAddDevice$ = new BehaviorSubject(false); - mockService.getDevices.and.returnValue( - new BehaviorSubject([]) - ); - mockService.getTestModules.and.returnValue([ - { - displayName: 'Connection', - name: 'connection', - enabled: true, - }, - { - displayName: 'Smart Ready', - name: 'udmi', - enabled: false, - }, - ]); - TestBed.configureTestingModule({ - imports: [DeviceRepositoryModule, BrowserAnimationsModule], - providers: [ - { provide: TestRunService, useValue: mockService }, - { provide: StateService, useValue: stateServiceMock }, - ], - declarations: [DeviceRepositoryComponent], - }); - fixture = TestBed.createComponent(DeviceRepositoryComponent); - component = fixture.componentInstance; - compiled = fixture.nativeElement as HTMLElement; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('with no devices devices', () => { - beforeEach(() => { - mockService.getDevices = jasmine.createSpy().and.returnValue(of([])); - mockService.isOpenAddDevice$ = new BehaviorSubject(true); - component.ngOnInit(); - }); - - it('should show only add device button if no device added', () => { - fixture.detectChanges(); - const button = compiled.querySelector( - '.device-repository-content-empty button' - ); - - expect(button).toBeTruthy(); - }); - - it('should open the modal if isOpenAddDevice$ as true', () => { - const openDialogSpy = spyOn(component, 'openDialog'); - - component.ngOnInit(); - - expect(openDialogSpy).toHaveBeenCalled(); - }); - }); - - describe('with devices', () => { - beforeEach(() => { - mockService.getDevices.and.returnValue( - new BehaviorSubject([device, device, device]) - ); - component.ngOnInit(); - }); - - it('should show device item', fakeAsync(() => { - fixture.detectChanges(); - const item = compiled.querySelectorAll('app-device-item'); - - expect(item.length).toEqual(3); - })); - - it('should add device-item-selected class for selected device', fakeAsync(() => { - component.selectedDevice = device; - fixture.detectChanges(); - const item = compiled.querySelector('app-device-item'); - - expect(item?.classList.contains('device-item-selected')).toBeTrue(); - })); - - describe('#openDialog', () => { - it('should open device dialog on item click', () => { - const openSpy = spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - fixture.detectChanges(); - - component.openDialog(device); - - expect(openSpy).toHaveBeenCalled(); - expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { - ariaLabel: 'Edit device', - data: { - device: device, - title: 'Edit device', - }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'device-form-dialog', - }); - - openSpy.calls.reset(); - }); - - it('should open device dialog with delete-button focus element', () => { - const openSpy = spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - fixture.detectChanges(); - - component.openDialog(device, true); - - expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { - ariaLabel: 'Edit device', - data: { - device: device, - title: 'Edit device', - }, - autoFocus: '.delete-button', - hasBackdrop: true, - disableClose: true, - panelClass: 'device-form-dialog', - }); - - openSpy.calls.reset(); - }); - }); - }); - - it('should open device dialog on "add device button" click', () => { - const openSpy = spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - fixture.detectChanges(); - const button = compiled.querySelector( - '.device-repository-content-empty button' - ) as HTMLButtonElement; - button?.click(); - - expect(button).toBeTruthy(); - expect(openSpy).toHaveBeenCalled(); - expect(openSpy).toHaveBeenCalledWith(DeviceFormComponent, { - ariaLabel: 'Create device', - data: { device: null, title: 'Create device' }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'device-form-dialog', - }); - - openSpy.calls.reset(); - }); - - it('should not add device if dialog closes with null', () => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(null), - } as MatDialogRef); - mockService.addDevice.and.callThrough(); - - component.openDialog(); - - expect(mockService.addDevice).not.toHaveBeenCalled(); - }); - - it('should add device if dialog closes with object and save action', () => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => - of({ - device, - action: FormAction.Save, - }), - } as MatDialogRef); - mockService.addDevice.and.callThrough(); - - component.openDialog(); - - expect(mockService.addDevice).toHaveBeenCalledWith(device); - }); - - it('should update device if dialog closes with object, action save and selected device', () => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => - of({ - device, - action: FormAction.Save, - }), - } as MatDialogRef); - mockService.updateDevice.and.callThrough(); - - component.openDialog(device); - - expect(mockService.updateDevice).toHaveBeenCalledWith(device, device); - }); - - it('should delete device if dialog closes with object, action delete and selected device', () => { - const openDeleteDialogSpy = spyOn(component, 'openDeleteDialog'); - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => - of({ - device, - action: FormAction.Delete, - }), - } as MatDialogRef); - - component.openDialog(device); - - expect(openDeleteDialogSpy).toHaveBeenCalledWith(device); - }); - - describe('delete device dialog', () => { - beforeEach(() => { - mockService.getDevices.and.returnValue( - new BehaviorSubject([device, device, device]) - ); - component.ngOnInit(); - }); - - it('should show device item', fakeAsync(() => { - fixture.detectChanges(); - const item = compiled.querySelectorAll('app-device-item'); - - expect(item.length).toEqual(3); - })); - - it('should delete device when dialog return true', () => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - mockService.deleteDevice.and.returnValue(of(true)); - mockService.removeDevice.and.callThrough(); - - component.openDeleteDialog(device); - - expect(mockService.deleteDevice).toHaveBeenCalledWith(device); - expect(mockService.removeDevice).toHaveBeenCalledWith(device); - }); - - it('should focus next device when dialog return true and next device is exist', fakeAsync(() => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - component.selectedDevice = device; - mockService.deleteDevice.and.returnValue(of(true)); - mockService.removeDevice.and.callThrough(); - fixture.detectChanges(); - const deviceButton = compiled.querySelector( - '.device-item-selected + app-device-item button' - ) as HTMLButtonElement; - const buttonFocusSpy = spyOn(deviceButton, 'focus'); - - component.openDeleteDialog(device); - - expect(buttonFocusSpy).toHaveBeenCalled(); - })); - - it('should focus add button when dialog return true and next device is not exist', fakeAsync(() => { - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - component.selectedDevice = null; - mockService.deleteDevice.and.returnValue(of(true)); - mockService.removeDevice.and.callThrough(); - fixture.detectChanges(); - - component.openDeleteDialog(device); - - expect( - document.activeElement?.classList.contains('device-add-button') - ).toBeTrue(); - })); - - it('should open device dialog when dialog return null', () => { - const openDeleteDialogSpy = spyOn(component, 'openDialog'); - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(null), - } as MatDialogRef); - - component.openDeleteDialog(device); - - expect(openDeleteDialogSpy).toHaveBeenCalledWith(device, true); - }); - }); -}); diff --git a/modules/ui/src/app/device-repository/device-repository.component.ts b/modules/ui/src/app/device-repository/device-repository.component.ts deleted file mode 100644 index ef569b55d..000000000 --- a/modules/ui/src/app/device-repository/device-repository.component.ts +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - Component, - ElementRef, - OnDestroy, - OnInit, - ChangeDetectorRef, -} from '@angular/core'; -import { MatDialog } from '@angular/material/dialog'; -import { Observable } from 'rxjs/internal/Observable'; -import { Device } from '../model/device'; -import { TestRunService } from '../services/test-run.service'; -import { - DeviceFormComponent, - FormAction, - FormResponse, -} from './device-form/device-form.component'; -import { Subject, takeUntil } from 'rxjs'; -import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; -import { combineLatest } from 'rxjs/internal/observable/combineLatest'; -import { StateService } from '../services/state.service'; -import { timer } from 'rxjs/internal/observable/timer'; - -@Component({ - selector: 'app-device-repository', - templateUrl: './device-repository.component.html', - styleUrls: ['./device-repository.component.scss'], -}) -export class DeviceRepositoryComponent implements OnInit, OnDestroy { - devices$!: Observable; - private destroy$: Subject = new Subject(); - selectedDevice: Device | undefined | null; - - constructor( - private testRunService: TestRunService, - private readonly state: StateService, - public dialog: MatDialog, - private element: ElementRef, - private readonly changeDetectorRef: ChangeDetectorRef - ) {} - - ngOnInit(): void { - this.devices$ = this.testRunService.getDevices(); - - combineLatest([this.devices$, this.testRunService.isOpenAddDevice$]) - .pipe(takeUntil(this.destroy$)) - .subscribe(([devices, isOpenAddDevice]) => { - if (!devices?.length && isOpenAddDevice) { - this.openDialog(); - } - }); - } - - ngOnDestroy() { - this.destroy$.next(true); - this.destroy$.unsubscribe(); - } - - openDialog(selectedDevice?: Device, focusDeleteButton = false): void { - const dialogRef = this.dialog.open(DeviceFormComponent, { - ariaLabel: selectedDevice ? 'Edit device' : 'Create device', - data: { - device: selectedDevice || null, - title: selectedDevice ? 'Edit device' : 'Create device', - }, - autoFocus: focusDeleteButton ? '.delete-button' : true, - hasBackdrop: true, - disableClose: true, - panelClass: 'device-form-dialog', - }); - - dialogRef - ?.afterClosed() - .pipe(takeUntil(this.destroy$)) - .subscribe((response: FormResponse) => { - this.selectedDevice = null; - if (!response) return; - - if ( - response.action === FormAction.Save && - response.device && - !selectedDevice - ) { - this.testRunService.addDevice(response.device); - timer(10) - .pipe(takeUntil(this.destroy$)) - .subscribe(() => { - this.state.focusFirstElementInMain(); - }); - } - if ( - response.action === FormAction.Save && - response.device && - selectedDevice - ) { - this.testRunService.updateDevice(selectedDevice, response.device); - } - if (response.action === FormAction.Delete && selectedDevice) { - this.selectedDevice = selectedDevice; - this.openDeleteDialog(selectedDevice); - } - }); - } - - openDeleteDialog(device: Device) { - const dialogRef = this.dialog.open(DeleteFormComponent, { - ariaLabel: 'Delete device', - data: { - title: 'Delete device', - content: `You are about to delete ${ - device.manufacturer + ' ' + device.model - }. Are you sure?`, - device: device, - }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'delete-form-dialog', - }); - - dialogRef - ?.afterClosed() - .pipe(takeUntil(this.destroy$)) - .subscribe(deleteDevice => { - if (deleteDevice) { - this.testRunService.deleteDevice(device).subscribe(() => { - this.testRunService.removeDevice(device); - this.focusNextButton(); - this.selectedDevice = null; - }); - } else { - this.openDialog(device, true); - this.selectedDevice = null; - } - }); - } - - private focusNextButton() { - // Try to focus next device item, if exitst - const next = this.element.nativeElement.querySelector( - '.device-item-selected + app-device-item button' - ); - if (next) { - next.focus(); - } else { - this.changeDetectorRef.detectChanges(); - // If next device item doest not exist, add device button should be focused - const addButton = - this.element.nativeElement.querySelector('.device-add-button'); - addButton?.focus(); - } - } -} diff --git a/modules/ui/src/app/device-repository/device-repository.module.ts b/modules/ui/src/app/device-repository/device-repository.module.ts deleted file mode 100644 index bc7935875..000000000 --- a/modules/ui/src/app/device-repository/device-repository.module.ts +++ /dev/null @@ -1,60 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ScrollingModule } from '@angular/cdk/scrolling'; -import { CommonModule } from '@angular/common'; -import { HttpClientModule } from '@angular/common/http'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { DeviceFormComponent } from './device-form/device-form.component'; - -import { DeviceRepositoryRoutingModule } from './device-repository-routing.module'; -import { DeviceRepositoryComponent } from './device-repository.component'; -import { DeviceItemComponent } from '../components/device-item/device-item.component'; -import { DeviceTestsComponent } from '../components/device-tests/device-tests.component'; -import { SpinnerComponent } from '../components/spinner/spinner.component'; -import { DeleteFormComponent } from '../components/delete-form/delete-form.component'; -import { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask'; - -@NgModule({ - declarations: [DeviceRepositoryComponent, DeviceFormComponent], - imports: [ - CommonModule, - DeviceRepositoryRoutingModule, - MatToolbarModule, - MatButtonModule, - MatIconModule, - ScrollingModule, - HttpClientModule, - MatDialogModule, - ReactiveFormsModule, - MatCheckboxModule, - MatInputModule, - DeviceItemComponent, - DeviceTestsComponent, - SpinnerComponent, - DeleteFormComponent, - NgxMaskDirective, - NgxMaskPipe, - ], - providers: [provideNgxMask()], -}) -export class DeviceRepositoryModule {} diff --git a/modules/ui/src/app/history/history.component.html b/modules/ui/src/app/history/history.component.html deleted file mode 100644 index f2c992c82..000000000 --- a/modules/ui/src/app/history/history.component.html +++ /dev/null @@ -1,230 +0,0 @@ - - - - -

    Reports

    -
    - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - Started - - - - {{ getFormattedDateString(data.started) }} - - Duration - - {{ data.duration }} - - Device - - - {{ data.deviceInfo }} - Firmware - - - {{ data.deviceFirmware }} - Result - - - - - {{ data.status }} - - Actions - - - file_download - - - - - delete - - - -
    - -
    -
    -
    - -
    -
    -
    -
    -
    - -
    - -
    -
    - - - - - - -
    -
    - {{ header }} - {{ message }} -
    -
    diff --git a/modules/ui/src/app/history/history.component.spec.ts b/modules/ui/src/app/history/history.component.spec.ts deleted file mode 100644 index 87ee2ab21..000000000 --- a/modules/ui/src/app/history/history.component.spec.ts +++ /dev/null @@ -1,379 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; - -import { HistoryComponent } from './history.component'; -import { TestRunService } from '../services/test-run.service'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { HistoryModule } from './history.module'; -import { of } from 'rxjs'; -import { TestrunStatus } from '../model/testrun-status'; -import { LiveAnnouncer } from '@angular/cdk/a11y'; -import { MatDialogRef } from '@angular/material/dialog'; -import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; -import { ElementRef } from '@angular/core'; -import { FilterName, ReportFilters } from '../model/filters'; -import SpyObj = jasmine.SpyObj; -import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; -import { MatSort } from '@angular/material/sort'; - -const history = [ - { - status: 'compliant', - device: { - manufacturer: 'Delta', - model: '03-DIN-SRC', - mac_addr: '01:02:03:04:05:06', - firmware: '1.2.2', - }, - report: 'https://api.testrun.io/report.pdf', - started: '2023-06-23T10:11:00.123Z', - finished: '2023-06-23T10:17:10.123Z', - }, - { - status: 'compliant', - device: { - manufacturer: 'Delta', - model: '03-DIN-SRC', - mac_addr: '01:02:03:04:05:07', - firmware: '1.2.3', - }, - report: 'https://api.testrun.io/report.pdf', - started: '2023-07-23T10:11:00.123Z', - finished: '2023-07-23T10:17:10.123Z', - }, -] as TestrunStatus[]; - -describe('HistoryComponent', () => { - let component: HistoryComponent; - let fixture: ComponentFixture; - let compiled: HTMLElement; - let mockService: SpyObj; - let mockLiveAnnouncer: SpyObj; - - beforeEach(() => { - mockService = jasmine.createSpyObj([ - 'fetchHistory', - 'getHistory', - 'getResultClass', - ]); - mockLiveAnnouncer = jasmine.createSpyObj(['announce']); - - TestBed.configureTestingModule({ - imports: [HistoryModule, BrowserAnimationsModule], - providers: [ - { provide: TestRunService, useValue: mockService }, - { provide: LiveAnnouncer, useValue: mockLiveAnnouncer }, - ], - declarations: [HistoryComponent], - }); - fixture = TestBed.createComponent(HistoryComponent); - component = fixture.componentInstance; - compiled = fixture.nativeElement as HTMLElement; - }); - - describe('Class tests', () => { - beforeEach(() => { - mockService.getHistory.and.returnValue( - new BehaviorSubject(history) - ); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - describe('ngOnInit', () => { - it('should set dataSource data', () => { - component.ngOnInit(); - - expect(component.dataSource.data).toBeTruthy(); - }); - - it('should update sort', fakeAsync(() => { - const sort = new MatSort(); - component.sort = sort; - component.ngOnInit(); - - expect(component.dataSource.sort).toBeTruthy(); - })); - - it('should update filter', fakeAsync(() => { - component.ngOnInit(); - - expect(component.dataSource.filter).toBeTruthy(); - })); - }); - - it('#sortData should call liveAnnouncer with sorted direction message', () => { - component.sortData({ active: '', direction: 'desc' }); - - expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( - 'Sorted descending' - ); - }); - - it('#sortData should call liveAnnouncer with "Sorting cleared" message', () => { - component.sortData({ active: '', direction: '' }); - - expect(mockLiveAnnouncer.announce).toHaveBeenCalledWith( - 'Sorting cleared' - ); - }); - - it('#getFormattedDateString should return string in the format "d MMM y H:mm"', () => { - const expectedResult = '23 Jun 2023 10:11'; - - const result = component.getFormattedDateString(history[0].started); - - expect(result).toEqual(expectedResult); - }); - - it('#getFormattedDateString should return empty string if no date', () => { - const expectedResult = ''; - - const result = component.getFormattedDateString(null); - - expect(result).toEqual(expectedResult); - }); - - it('#getDuration should return dates duration in minutes and seconds', () => { - const expectedResult = '06m 10s'; - - const result = component.getDuration( - history[0].started, - history[0].finished - ); - - expect(result).toEqual(expectedResult); - }); - - it('#getDuration should return empty string if any of dates are not provided', () => { - const expectedResult = ''; - - const result = component.getDuration(history[0].started, null); - - expect(result).toEqual(expectedResult); - }); - - it('should open filter dialog with data', () => { - const event = { - currentTarget: null, - stopPropagation: () => undefined, - } as Event; - const openSpy = spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(true), - } as MatDialogRef); - fixture.detectChanges(); - - component.openFilter(event, ''); - - expect(openSpy).toHaveBeenCalled(); - expect(openSpy).toHaveBeenCalledWith(FilterDialogComponent, { - ariaLabel: 'Filters', - data: { - filter: '', - trigger: new ElementRef(event.currentTarget), - }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'filter-form-dialog', - }); - - openSpy.calls.reset(); - }); - - it('should update filteredValues when filter dialog closes with data', () => { - const event = { - currentTarget: null, - stopPropagation: () => undefined, - } as Event; - - const mockFilteredData = { - results: ['compliant'], - deviceInfo: 'mockDevice', - deviceFirmware: 'mockFirmware', - dateRange: { - start: 'Wed Jun 21 2023 00:00:00', - end: 'Thu Jun 22 2023 00:00:00', - }, - }; - - spyOn(component.dialog, 'open').and.returnValue({ - afterClosed: () => of(mockFilteredData), - } as MatDialogRef); - fixture.detectChanges(); - - component.openFilter(event, FilterName.Started); - component.openFilter(event, FilterName.Results); - component.openFilter(event, FilterName.DeviceFirmware); - component.openFilter(event, FilterName.DeviceInfo); - expect(component.filteredValues as ReportFilters).toEqual( - mockFilteredData - ); - }); - - it('should return true if filters has no values', () => { - component.filteredValues = { - deviceInfo: '', - deviceFirmware: '', - results: [], - dateRange: { start: '', end: '' }, - }; - - expect(component.isFiltersEmpty()).toBeTrue(); - }); - - describe('#focusNextButton', () => { - beforeEach(() => { - fixture.detectChanges(); - }); - - it('should focus next active element if exist', () => { - const row = window.document.querySelector('tbody tr') as HTMLElement; - row.classList.add('report-selected'); - const nextButton = window.document.querySelector( - '.report-selected + tr a' - ) as HTMLButtonElement; - const buttonFocusSpy = spyOn(nextButton, 'focus'); - - component.focusNextButton(); - - expect(buttonFocusSpy).toHaveBeenCalled(); - }); - - it('should focus navigation button if next active element does not exist', () => { - const button = document.createElement('BUTTON'); - button.classList.add('app-sidebar-button-reports'); - document.querySelector('body')?.appendChild(button); - const buttonFocusSpy = spyOn(button, 'focus'); - - component.focusNextButton(); - - expect(buttonFocusSpy).toHaveBeenCalled(); - }); - }); - }); - - describe('DOM tests', () => { - describe('data is not fetched', () => { - beforeEach(() => { - mockService.getHistory.and.returnValue( - new BehaviorSubject(null) - ); - component.ngOnInit(); - }); - - it('should have empty page if data not fetched yet', () => { - const empty = compiled.querySelector('.results-content-empty'); - const table = compiled.querySelector('table'); - - expect(table).toBeNull(); - expect(empty).toBeNull(); - }); - }); - - describe('with no devices', () => { - beforeEach(() => { - mockService.getHistory.and.returnValue( - new BehaviorSubject([]) - ); - component.ngOnInit(); - fixture.detectChanges(); - }); - - it('should have empty message', () => { - const empty = compiled.querySelector('.results-content-empty'); - expect(empty).toBeTruthy(); - }); - }); - - describe('with devices', () => { - beforeEach(() => { - mockService.getHistory.and.returnValue( - new BehaviorSubject(history) - ); - mockService.getResultClass.and.returnValue({ - green: false, - red: true, - blue: false, - grey: false, - }); - component.ngOnInit(); - fixture.detectChanges(); - }); - - it('should have data table', () => { - const table = compiled.querySelector('table'); - - expect(table).toBeTruthy(); - }); - - it('should have addition valid class on table cell "Status"', () => { - const statusResultEl = compiled.querySelector( - '.table-cell-result-text' - ); - - expect(statusResultEl?.classList).toContain('red'); - }); - - it('should have report link', () => { - const link = compiled.querySelector( - '.download-report-link' - ) as HTMLAnchorElement; - - expect(link.href).toEqual('https://api.testrun.io/report.pdf'); - expect(link.download).toEqual( - 'delta_03-din-src_1.2.2_compliant_23_jun_2023_10:11' - ); - expect(link.title).toEqual( - 'Download report for Test Run # Delta 03-DIN-SRC 1.2.2 23 Jun 2023 10:11' - ); - }); - - it('should have filter chips', () => { - const chips = compiled.querySelector('app-filter-chips'); - - expect(chips).toBeTruthy(); - }); - - it('should have empty state when no data satisfy filters', () => { - component.dataSource.filter = JSON.stringify({ - deviceInfo: 'some not existing data', - deviceFirmware: 'some not existing data', - results: [], - dateRange: '', - }); - fixture.detectChanges(); - const emptyMessage = compiled.querySelector( - '.results-content-filter-empty' - ); - - expect(emptyMessage).toBeTruthy(); - }); - - it('should select row on row click', () => { - component.selectedRow = null; - const row = window.document.querySelector('tbody tr') as HTMLElement; - - row.click(); - - expect(component.selectedRow).toBeTruthy(); - }); - }); - }); -}); diff --git a/modules/ui/src/app/history/history.component.ts b/modules/ui/src/app/history/history.component.ts deleted file mode 100644 index bb4b54b5e..000000000 --- a/modules/ui/src/app/history/history.component.ts +++ /dev/null @@ -1,320 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - Component, - ElementRef, - OnDestroy, - OnInit, - ViewChild, -} from '@angular/core'; -import { LiveAnnouncer } from '@angular/cdk/a11y'; -import { TestRunService } from '../services/test-run.service'; -import { - HistoryTestrun, - StatusResultClassName, - TestrunStatus, -} from '../model/testrun-status'; -import { DatePipe } from '@angular/common'; -import { MatSort, Sort } from '@angular/material/sort'; -import { Subject, takeUntil } from 'rxjs'; -import { MatRow, MatTableDataSource } from '@angular/material/table'; -import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; -import { MatDialog } from '@angular/material/dialog'; -import { tap } from 'rxjs/internal/operators/tap'; -import { DateRange, FilterName, Filters } from '../model/filters'; - -@Component({ - selector: 'app-history', - templateUrl: './history.component.html', - styleUrls: ['./history.component.scss'], -}) -export class HistoryComponent implements OnInit, OnDestroy { - displayedColumns: string[] = [ - 'started', - 'duration', - 'deviceInfo', - 'deviceFirmware', - 'status', - 'report', - ]; - chips: string[] = ['chips']; - dataSource: MatTableDataSource = - new MatTableDataSource([]); - - public readonly FilterName = FilterName; - public filterOpened = false; - public activeFilter = ''; - public resultList = ['Compliant', 'Non-Compliant']; - filteredValues: Filters = { - deviceInfo: '', - deviceFirmware: '', - results: [], - dateRange: '', - }; - private destroy$: Subject = new Subject(); - @ViewChild(MatSort, { static: false }) sort!: MatSort; - dataLoaded = false; - selectedRow: MatRow | null = null; - constructor( - private testRunService: TestRunService, - private datePipe: DatePipe, - private liveAnnouncer: LiveAnnouncer, - public dialog: MatDialog - ) { - this.testRunService.fetchHistory(); - } - - ngOnInit() { - this.testRunService - .getHistory() - .pipe(takeUntil(this.destroy$)) - .subscribe(res => { - if (!res) { - return; - } - const data = this.formateData(res); - - this.dataSource = new MatTableDataSource(data); - - this.dataSource.sortingDataAccessor = ( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - data: any, - sortHeaderId: string - ): string => { - const value = data[sortHeaderId]; - return typeof value === 'string' ? value.toLocaleLowerCase() : value; - }; - this.dataSource.filterPredicate = this.customFilterPredicate(); - this.dataSource.filter = JSON.stringify(this.filteredValues); - this.dataSource.sort = this.sort; - this.dataLoaded = true; - }); - } - - customFilterPredicate() { - const filterPredicate = (data: HistoryTestrun, filter: string): boolean => { - const searchString = JSON.parse(filter); - const isIncludeDeviceInfo = this.filterStringData( - data.deviceInfo, - searchString.deviceInfo - ); - const isIncludeDeviceFirmware = this.filterStringData( - data.deviceFirmware, - searchString.deviceFirmware - ); - - const isIncludeStatus = - searchString.results?.length === 0 || - searchString.results?.includes(data.status); - const isIncludeStartedDate = this.filterStartedDateRange( - data.started, - searchString - ); - - return ( - isIncludeDeviceInfo && - isIncludeDeviceFirmware && - isIncludeStatus && - isIncludeStartedDate - ); - }; - return filterPredicate; - } - - private filterStringData(data: string, searchString: string): boolean { - return ( - data - .toString() - .trim() - .toLowerCase() - .indexOf(searchString.trim().toLowerCase()) !== -1 - ); - } - - private filterStartedDateRange( - startedDate: string | null, - searchString: { dateRange: DateRange } - ): boolean { - let isIncludeDate = true; - - if (!searchString.dateRange || !startedDate) { - return isIncludeDate; - } - - const startDate = searchString.dateRange.start - ? typeof searchString.dateRange.start === 'string' - ? Date.parse(searchString.dateRange.start) - : searchString.dateRange.start.getDate() - : 0; - const endDate = searchString.dateRange.end - ? typeof searchString.dateRange.end === 'string' - ? Date.parse(searchString.dateRange.end) - : searchString.dateRange.end.getDate() - : 0; - - const startedDateWithoutTime = new Date(startedDate).toDateString(); - const dateToFilter = Date.parse(startedDateWithoutTime); - - if (startDate && endDate && dateToFilter) { - isIncludeDate = dateToFilter >= startDate && dateToFilter <= endDate; - } else if (startDate && dateToFilter) { - isIncludeDate = dateToFilter >= startDate; - } - - return isIncludeDate; - } - - private formateData(data: TestrunStatus[]): HistoryTestrun[] { - return data.map(item => { - return { - ...item, - deviceFirmware: item.device.firmware, - deviceInfo: item.device.manufacturer + ' ' + item.device.model, - duration: this.getDuration(item.started, item.finished), - }; - }); - } - - getFormattedDateString(date: string | null) { - return date ? this.datePipe.transform(date, 'd MMM y H:mm') : ''; - } - sortData(sortState: Sort) { - this.dataSource.sort = this.sort; - if (sortState.direction) { - this.liveAnnouncer.announce(`Sorted ${sortState.direction}ending`); - } else { - this.liveAnnouncer.announce('Sorting cleared'); - } - } - - private transformDate(date: number, format: string) { - return this.datePipe.transform(date, format); - } - - public getDuration(started: string | null, finished: string | null): string { - if (!started || !finished) { - return ''; - } - const startedDate = new Date(started); - const finishedDate = new Date(finished); - - const durationMillisecond = finishedDate.getTime() - startedDate.getTime(); - const durationMinuts = this.transformDate(durationMillisecond, 'mm'); - const durationSeconds = this.transformDate(durationMillisecond, 'ss'); - - return `${durationMinuts}m ${durationSeconds}s`; - } - - public getResultClass(status: string): StatusResultClassName { - return this.testRunService.getResultClass(status); - } - - openFilter(event: Event, filter: string) { - event.stopPropagation(); - const target = new ElementRef(event.currentTarget); - - if (!this.filterOpened) { - this.openFilterDialog(target, filter); - } - } - - openFilterDialog(target: ElementRef, filter: string) { - this.filterOpened = true; - this.activeFilter = filter; - const dialogRef = this.dialog.open(FilterDialogComponent, { - ariaLabel: 'Filters', - data: { - filter, - trigger: target, - }, - autoFocus: true, - hasBackdrop: true, - disableClose: true, - panelClass: 'filter-form-dialog', - }); - - dialogRef - ?.afterClosed() - .pipe( - takeUntil(this.destroy$), - tap(() => { - this.filterOpened = false; - this.activeFilter = ''; - }) - ) - .subscribe(filteredData => { - if (filteredData) { - if (filter === FilterName.Results) { - this.filteredValues.results = filteredData.results; - } - if (filter === FilterName.DeviceInfo) { - this.filteredValues.deviceInfo = filteredData.deviceInfo; - } - if (filter === FilterName.DeviceFirmware) { - this.filteredValues.deviceFirmware = filteredData.deviceFirmware; - } - if (filter === FilterName.Started) { - this.filteredValues.dateRange = filteredData.dateRange; - } - - this.dataSource.filter = JSON.stringify(this.filteredValues); - } - }); - } - - filterCleared(filters: Filters) { - this.filteredValues = filters; - this.dataSource.filter = JSON.stringify(this.filteredValues); - } - - ngOnDestroy() { - this.destroy$.next(true); - this.destroy$.unsubscribe(); - } - - isFiltersEmpty() { - return Object.values(this.filteredValues).every(value => { - if (value.start === '') { - return value.end.length === 0; - } - return value.length === 0; - }); - } - - selectRow(row: MatRow) { - this.selectedRow = row; - } - - trackByStarted(index: number, item: TestrunStatus) { - return item.started; - } - - focusNextButton() { - // Try to focus next interactive element, if exists - const next = window.document.querySelector( - '.report-selected + tr a' - ) as HTMLButtonElement; - if (next) { - next.focus(); - } else { - // If next interactive element doest not exist, add menu reports button should be focused - const menuButton = window.document.querySelector( - '.app-sidebar-button-reports' - ) as HTMLButtonElement; - menuButton?.focus(); - } - } -} diff --git a/modules/ui/src/app/history/history.module.ts b/modules/ui/src/app/history/history.module.ts deleted file mode 100644 index 288f4e048..000000000 --- a/modules/ui/src/app/history/history.module.ts +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { NgModule } from '@angular/core'; -import { CommonModule, DatePipe } from '@angular/common'; -import { HistoryComponent } from './history.component'; -import { HistoryRoutingModule } from './history-routing.module'; -import { MatTableModule } from '@angular/material/table'; -import { MatIconModule } from '@angular/material/icon'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { DownloadReportComponent } from '../components/download-report/download-report.component'; -import { MatSortModule } from '@angular/material/sort'; -import { FilterDialogComponent } from '../components/filter-dialog/filter-dialog.component'; -import { FilterChipsComponent } from '../components/filter-chips/filter-chips.component'; -import { DeleteReportComponent } from '../components/delete-report/delete-report.component'; - -@NgModule({ - declarations: [HistoryComponent], - imports: [ - CommonModule, - HistoryRoutingModule, - MatTableModule, - MatIconModule, - MatToolbarModule, - MatSortModule, - DownloadReportComponent, - FilterDialogComponent, - FilterChipsComponent, - DeleteReportComponent, - ], - providers: [DatePipe], -}) -export class HistoryModule {} diff --git a/modules/ui/src/app/interceptors/error.interceptor.ts b/modules/ui/src/app/interceptors/error.interceptor.ts index 2a44de58c..8fe5d0c23 100644 --- a/modules/ui/src/app/interceptors/error.interceptor.ts +++ b/modules/ui/src/app/interceptors/error.interceptor.ts @@ -30,14 +30,11 @@ import { } from 'rxjs'; import { NotificationService } from '../services/notification.service'; -<<<<<<< HEAD import { SYSTEM_STOP } from '../services/test-run.service'; const DEFAULT_TIMEOUT_MS = 5000; const SYSTEM_STOP_TIMEOUT_MS = 10000; -======= ->>>>>>> main @Injectable() export class ErrorInterceptor implements HttpInterceptor { constructor(private notificationService: NotificationService) {} @@ -45,7 +42,6 @@ export class ErrorInterceptor implements HttpInterceptor { intercept( request: HttpRequest, next: HttpHandler, -<<<<<<< HEAD timeoutMs = DEFAULT_TIMEOUT_MS ): Observable> { const timeoutValue = request.url.includes(SYSTEM_STOP) @@ -53,12 +49,6 @@ export class ErrorInterceptor implements HttpInterceptor { : timeoutMs; return next.handle(request).pipe( timeout(timeoutValue), -======= - timeoutMs = 5000 - ): Observable> { - return next.handle(request).pipe( - timeout(timeoutMs), ->>>>>>> main catchError((error: HttpErrorResponse | TimeoutError) => { if (error instanceof TimeoutError) { this.notificationService.notify( diff --git a/modules/ui/src/app/mocks/progress.mock.ts b/modules/ui/src/app/mocks/progress.mock.ts index f5565fdd1..7d855bfd5 100644 --- a/modules/ui/src/app/mocks/progress.mock.ts +++ b/modules/ui/src/app/mocks/progress.mock.ts @@ -34,7 +34,6 @@ export const TEST_DATA_RESULT: IResult[] = [ }, ]; -<<<<<<< HEAD export const TEST_DATA_RESULT_WITH_RECOMMENDATIONS: IResult[] = [ { name: 'dns.network.from_dhcp', @@ -48,8 +47,6 @@ export const TEST_DATA_RESULT_WITH_RECOMMENDATIONS: IResult[] = [ }, ]; -======= ->>>>>>> main export const TEST_DATA_TABLE_RESULT: IResult[] = [ ...TEST_DATA_RESULT, ...new Array(24).fill(null).map(() => ({}) as IResult), diff --git a/modules/ui/src/app/model/callout-type.ts b/modules/ui/src/app/model/callout-type.ts index c41236be2..b8fabd0bc 100644 --- a/modules/ui/src/app/model/callout-type.ts +++ b/modules/ui/src/app/model/callout-type.ts @@ -16,9 +16,6 @@ export enum CalloutType { Info = 'info', Warning = 'warning_amber', -<<<<<<< HEAD Error = 'error', ErrorOutline = 'error_outline', -======= ->>>>>>> main } diff --git a/modules/ui/src/app/model/device.ts b/modules/ui/src/app/model/device.ts index 982d3c5a9..ba526e661 100644 --- a/modules/ui/src/app/model/device.ts +++ b/modules/ui/src/app/model/device.ts @@ -37,12 +37,9 @@ export interface TestModule { displayName: string; name: string; enabled: boolean; -<<<<<<< HEAD } export enum DeviceView { Basic = 'basic', WithActions = 'with actions', -======= ->>>>>>> main } diff --git a/modules/ui/src/app/model/routes.ts b/modules/ui/src/app/model/routes.ts index ad300bb76..f523f1b15 100644 --- a/modules/ui/src/app/model/routes.ts +++ b/modules/ui/src/app/model/routes.ts @@ -16,10 +16,6 @@ export enum Routes { Devices = '/devices', -<<<<<<< HEAD Testing = '/testing', -======= - Testrun = '/testrun', ->>>>>>> main Reports = '/reports', } diff --git a/modules/ui/src/app/model/setting.ts b/modules/ui/src/app/model/setting.ts index b68cfc44a..101ae6ded 100644 --- a/modules/ui/src/app/model/setting.ts +++ b/modules/ui/src/app/model/setting.ts @@ -18,16 +18,8 @@ export interface SystemConfig { device_intf?: string; internet_intf?: string; }; -<<<<<<< HEAD log_level?: string; monitor_period?: number; -======= -} - -export interface SettingOption { - key: string; - value: string; ->>>>>>> main } export interface InterfacesValidation { diff --git a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss index 4d03c175b..831f9907a 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss +++ b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss @@ -13,11 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.scss @import 'src/theming/colors'; -======= -@import '../../../theming/colors'; ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.scss $device-form-max-width: 580px; $device-form-min-width: 285px; diff --git a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts index a3c4bdec1..38ab05ffa 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts +++ b/modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts @@ -22,7 +22,6 @@ import { Validators, } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts import { Device, TestModule } from '../../../../model/device'; import { DeviceValidators } from './device.validators'; @@ -31,16 +30,6 @@ import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { EscapableDialogComponent } from '../../../../components/escapable-dialog/escapable-dialog.component'; import { DevicesStore } from '../../devices.store'; -======= -import { Device, TestModule } from '../../model/device'; -import { TestRunService } from '../../services/test-run.service'; -import { DeviceValidators } from './device.validators'; -import { catchError, of, Subject, takeUntil } from 'rxjs'; -import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; -import { EscapableDialogComponent } from '../../components/escapable-dialog/escapable-dialog.component'; -import { Observable } from 'rxjs/internal/Observable'; - ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts const MAC_ADDRESS_PATTERN = '^[\\s]*[a-fA-F0-9]{2}(?:[:][a-fA-F0-9]{2}){5}[\\s]*$'; @@ -61,24 +50,11 @@ export interface FormResponse { action: FormAction; } -export enum FormAction { - Delete = 'Delete', - Save = 'Save', -} - -export interface FormResponse { - device?: Device; - action: FormAction; -} - @Component({ selector: 'app-device-form', templateUrl: './device-form.component.html', styleUrls: ['./device-form.component.scss'], -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts providers: [DevicesStore], -======= ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts }) export class DeviceFormComponent extends EscapableDialogComponent @@ -95,13 +71,8 @@ export class DeviceFormComponent public override dialogRef: MatDialogRef, @Inject(MAT_DIALOG_DATA) public data: DialogData, private fb: FormBuilder, -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts private deviceValidators: DeviceValidators, private devicesStore: DevicesStore -======= - private testRunService: TestRunService, - private deviceValidators: DeviceValidators ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts ) { super(dialogRef); } @@ -142,7 +113,6 @@ export class DeviceFormComponent } cancel(): void { - this.testRunService.setIsOpenAddDevice(false); this.dialogRef.close(); } @@ -162,7 +132,6 @@ export class DeviceFormComponent const device = this.createDeviceFromForm(); -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts this.updateDevice(device, () => { this.dialogRef.close({ action: FormAction.Save, @@ -177,36 +146,12 @@ export class DeviceFormComponent device, mac_addr: this.data.device.mac_addr, onSuccess: callback, -======= - this.updateDevice(device) - .pipe( - takeUntil(this.destroy$), - catchError(error => { - this.error$.next(error.error); - return of(null); - }) - ) - .subscribe((deviceSaved: boolean | null) => { - if (deviceSaved) { - this.dialogRef.close({ - action: FormAction.Save, - device, - } as FormResponse); - } ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts }); } else { this.devicesStore.saveDevice({ device, onSuccess: callback }); } } - private updateDevice(device: Device): Observable { - if (this.data.device) { - return this.testRunService.editDevice(device, this.data.device.mac_addr); - } - return this.testRunService.saveDevice(device); - } - private isAllTestsDisabled(): boolean { return this.deviceForm.value.test_modules.every((enabled: boolean) => { return !enabled; @@ -254,14 +199,10 @@ export class DeviceFormComponent '', [ Validators.pattern(MAC_ADDRESS_PATTERN), -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device-form.component.ts this.deviceValidators.differentMACAddress( this.data.devices, this.data.device ), -======= - this.deviceValidators.differentMACAddress(this.data.device), ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device-form.component.ts ], ], test_modules: new FormArray([]), diff --git a/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts b/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts index dde599799..5e54e7996 100644 --- a/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts +++ b/modules/ui/src/app/pages/devices/components/device-form/device.validators.ts @@ -15,24 +15,13 @@ */ import { Injectable } from '@angular/core'; import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts import { Device } from '../../../../model/device'; -======= -import { TestRunService } from '../../services/test-run.service'; -import { Device } from '../../model/device'; - ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts @Injectable({ providedIn: 'root' }) /** * Validator uses for Device Name and Device Manufacturer inputs */ export class DeviceValidators { -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts -======= - constructor(private testRunService: TestRunService) {} - ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts readonly STRING_FORMAT_REGEXP = new RegExp( "^([a-z0-9\\p{L}\\p{M}.',-_ ]{1,64})$", 'u' @@ -53,23 +42,16 @@ export class DeviceValidators { return (control: AbstractControl): ValidationErrors | null => { const value = control.value?.trim(); if (value && (!device || device?.mac_addr !== value)) { -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts const result = this.hasDevice(value, devices); -======= - const result = this.testRunService.hasDevice(value); ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts return result ? { has_same_mac_address: true } : null; } return null; }; -<<<<<<< HEAD:modules/ui/src/app/pages/devices/components/device-form/device.validators.ts } private hasDevice(macAddress: string, devices: Device[]): boolean { return ( devices.some(device => device.mac_addr === macAddress.trim()) || false ); -======= ->>>>>>> main:modules/ui/src/app/device-repository/device-form/device.validators.ts } } diff --git a/modules/ui/src/app/pages/devices/device-repository.component.scss b/modules/ui/src/app/pages/devices/device-repository.component.scss index 710f421ac..d15f6bad5 100644 --- a/modules/ui/src/app/pages/devices/device-repository.component.scss +++ b/modules/ui/src/app/pages/devices/device-repository.component.scss @@ -13,13 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD:modules/ui/src/app/pages/devices/device-repository.component.scss @import 'src/theming/colors'; @import 'src/theming/variables'; -======= -@import '../../theming/colors'; -@import '../../theming/variables'; ->>>>>>> main:modules/ui/src/app/device-repository/device-repository.component.scss :host { overflow: hidden; diff --git a/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss b/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss index f1881e077..54464931e 100644 --- a/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss +++ b/modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<<< HEAD:modules/ui/src/app/pages/reports/components/delete-report/delete-report.component.scss :host { display: inline-block; } @@ -23,26 +22,5 @@ display: inline-block; & ::ng-deep .mdc-icon-button__ripple { display: none; -======== -import { Injectable } from '@angular/core'; -import { MatSnackBar } from '@angular/material/snack-bar'; - -@Injectable({ - providedIn: 'root', -}) -export class NotificationService { - constructor(private snackBar: MatSnackBar) {} - - notify(message: string, duration = 5000) { - this.snackBar.open(message, 'OK', { - horizontalPosition: 'right', - panelClass: 'test-run-notification', - duration: duration, - }); - } - - dismiss() { - this.snackBar.dismiss(); ->>>>>>>> main:modules/ui/src/app/services/notification.service.ts } } diff --git a/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss b/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss index 17e3f5c08..3dfdd2704 100644 --- a/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss +++ b/modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD:modules/ui/src/app/pages/reports/components/filter-dialog/filter-dialog.component.scss @use 'node_modules/@angular/material/index' as mat; @import 'src/theming/colors'; @@ -25,20 +24,6 @@ .date-field { flex-shrink: 0; -======= -@import '../../../theming/colors'; -@import '../../../theming/variables'; - -:host { - overflow-y: auto; - margin: 16px 0; -} - -table, -tr { - border: 1px solid $lighter-grey; - border-collapse: collapse; ->>>>>>> main:modules/ui/src/app/progress/progress-table/progress-table.component.scss } .date-calendar { diff --git a/modules/ui/src/app/pages/reports/history.component.scss b/modules/ui/src/app/pages/reports/history.component.scss index 017c90beb..1e3bdc59b 100644 --- a/modules/ui/src/app/pages/reports/history.component.scss +++ b/modules/ui/src/app/pages/reports/history.component.scss @@ -13,15 +13,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -<<<<<<< HEAD:modules/ui/src/app/pages/reports/history.component.scss @use 'node_modules/@angular/material/index' as mat; @import 'src/theming/colors'; @import 'src/theming/variables'; -======= -@use '@angular/material' as mat; -@import '../../theming/colors'; -@import '../../theming/variables'; ->>>>>>> main:modules/ui/src/app/history/history.component.scss :host { overflow: hidden; @@ -136,11 +130,7 @@ color: #202124; } -<<<<<<< HEAD:modules/ui/src/app/pages/reports/history.component.scss ::ng-deep .download-report-icon, -======= -.download-report-icon, ->>>>>>> main:modules/ui/src/app/history/history.component.scss .delete-report-icon { color: $dark-grey; } diff --git a/modules/ui/src/app/pages/settings/general-settings.component.scss b/modules/ui/src/app/pages/settings/general-settings.component.scss index 2af01f874..c1f2e259c 100644 --- a/modules/ui/src/app/pages/settings/general-settings.component.scss +++ b/modules/ui/src/app/pages/settings/general-settings.component.scss @@ -56,42 +56,30 @@ } .setting-drawer-content { -<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss padding: 0 16px 8px 16px; -======= - padding: 11px 16px 8px 16px; ->>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss overflow: hidden; flex: 1; form { display: grid; -<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss -======= - grid-template-rows: repeat(7, auto) 1fr; ->>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss height: 100%; } .setting-drawer-content-form-empty { grid-template-rows: repeat(2, auto) 1fr; } -<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss } .setting-drawer-content-inputs { overflow: auto; margin: 0 -16px; padding: 0 16px; -======= ->>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss } .error-message-container { display: block; margin-top: auto; padding-bottom: 8px; -<<<<<<< HEAD:modules/ui/src/app/pages/settings/general-settings.component.scss } .error-message-container + .setting-drawer-footer { @@ -101,78 +89,6 @@ .message { margin: 0; padding: 6px 0 12px 0; -======= -} - -.error-message-container + .setting-drawer-footer { - margin-top: 0; -} - -.setting-form-label { - font-size: 18px; - color: $dark-grey; -} - -:host:has(.two-ports-message) .internet-label { - padding-top: 16px; -} - -.setting-label-description { - font-family: $font-secondary; - font-size: 14px; - line-height: 20px; - letter-spacing: 0.2px; - margin: 10px 0; - color: $dark-grey; -} - -.setting-option-value { - padding: 14px 16px; -} - -.option-value { - margin: 0; - font-family: Roboto; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 20px; - letter-spacing: 0.2px; - - &.top { - color: #3c4043; - } - - &.bottom { - color: #5f6368; - } -} - -.setting-field { - ::ng-deep .mat-mdc-form-field-infix { - min-height: 76px; - display: flex; - align-items: center; - } - - ::ng-deep .mat-mdc-floating-label { - font-family: Roboto; - font-size: 14px; - font-style: normal; - font-weight: 400; - line-height: 20px; - letter-spacing: 0.2px; - } - - ::ng-deep .mat-mdc-floating-label:not(.mdc-floating-label--float-above) { - top: 35px; - } -} - -.message { - margin: 0; - padding: 16px 0 0 0; ->>>>>>> main:modules/ui/src/app/components/general-settings/general-settings.component.scss color: $grey-800; font-family: $font-secondary; font-size: 14px; diff --git a/modules/ui/src/app/pages/settings/only-different-values.validator.ts b/modules/ui/src/app/pages/settings/only-different-values.validator.ts index 6d6ae0ffd..a153fb0ef 100644 --- a/modules/ui/src/app/pages/settings/only-different-values.validator.ts +++ b/modules/ui/src/app/pages/settings/only-different-values.validator.ts @@ -20,10 +20,7 @@ import { ValidationErrors, ValidatorFn, } from '@angular/forms'; -<<<<<<< HEAD:modules/ui/src/app/pages/settings/only-different-values.validator.ts import { FormKey } from '../../model/setting'; -======= ->>>>>>> main:modules/ui/src/app/components/general-settings/only-different-values.validator.ts @Injectable({ providedIn: 'root' }) export class OnlyDifferentValuesValidator { diff --git a/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html b/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html index 44b2e3e3a..a5b8e1289 100644 --- a/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html +++ b/modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html @@ -22,10 +22,7 @@ >>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html [class.device-item-focused]="device === prevDevice" (itemClicked)="deviceSelected(device)" [device]="device"> @@ -33,10 +30,7 @@ >>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html [tabIndex]="-1" [device]="selectedDevice"> -<<<<<<< HEAD:modules/ui/src/app/pages/testrun/components/progress-initiate-form/progress-initiate-form.component.html -======= - ->>>>>>> main:modules/ui/src/app/progress/progress-initiate-form/progress-initiate-form.component.html
    ', -}) -class DummyComponent {} - -describe('StateService', () => { - let service: StateService; - let fixture: ComponentFixture; - - beforeEach(() => { - TestBed.configureTestingModule({ - declarations: [DummyComponent], - }); - service = TestBed.inject(StateService); - - fixture = TestBed.createComponent(DummyComponent); - - fixture.detectChanges(); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); - - it('should focus element', () => { - const testButton = fixture.nativeElement.querySelector( - '#test-button' - ) as HTMLButtonElement; - - service.focusFirstElementInMain(); - - expect(document.activeElement).toBe(testButton); - }); -}); diff --git a/modules/ui/src/app/services/state.service.ts b/modules/ui/src/app/services/state.service.ts deleted file mode 100644 index 509fbd897..000000000 --- a/modules/ui/src/app/services/state.service.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root', -}) -export class StateService { - focusFirstElementInMain() { - const firstControl: HTMLElement | null = window.document.querySelector( - '#main button:not([disabled="true"]), ' + - '#main a:not([disabled="true"]), #main table' - ); - - if (firstControl) { - firstControl.focus(); - } - } -} diff --git a/modules/ui/src/app/services/test-run.service.spec.ts b/modules/ui/src/app/services/test-run.service.spec.ts index fbafd7567..f6a6294cf 100644 --- a/modules/ui/src/app/services/test-run.service.spec.ts +++ b/modules/ui/src/app/services/test-run.service.spec.ts @@ -17,30 +17,18 @@ import { HttpClientTestingModule, HttpTestingController, } from '@angular/common/http/testing'; -<<<<<<< HEAD import { getTestBed, TestBed } from '@angular/core/testing'; import { Device, TestModule } from '../model/device'; import { TestRunService, UNAVAILABLE_VERSION } from './test-run.service'; import { SystemConfig, SystemInterfaces } from '../model/setting'; -======= -import { fakeAsync, getTestBed, TestBed, tick } from '@angular/core/testing'; -import { Device, TestModule } from '../model/device'; - -import { SystemInterfaces, TestRunService } from './test-run.service'; -import { SystemConfig } from '../model/setting'; ->>>>>>> main import { MOCK_PROGRESS_DATA_CANCELLING, MOCK_PROGRESS_DATA_IN_PROGRESS, } from '../mocks/progress.mock'; import { StatusOfTestResult, TestrunStatus } from '../model/testrun-status'; import { device } from '../mocks/device.mock'; -<<<<<<< HEAD import { NEW_VERSION, VERSION } from '../mocks/version.mock'; -======= -import { VERSION } from '../mocks/version.mock'; ->>>>>>> main const MOCK_SYSTEM_CONFIG: SystemConfig = { network: { @@ -99,7 +87,6 @@ describe('TestRunService', () => { name: 'tls', enabled: true, }, -<<<<<<< HEAD { displayName: 'Protocol', name: 'protocol', @@ -113,24 +100,6 @@ describe('TestRunService', () => { const deviceArray = [device] as Device[]; service.fetchDevices().subscribe(res => { -======= - ] as TestModule[]); - }); - - it('setIsOpenAddDevice should update the isOpenAddDevice$ value', () => { - service.setIsOpenAddDevice(true); - - service.isOpenAddDevice$.subscribe(value => { - expect(value).toBe(true); - }); - }); - - it('getDevices should return devices', () => { - let result: Device[] | null = null; - const deviceArray = [device] as Device[]; - - service.getDevices().subscribe(res => { ->>>>>>> main expect(res).toEqual(result); }); @@ -145,25 +114,6 @@ describe('TestRunService', () => { req.flush(deviceArray); }); -<<<<<<< HEAD -======= - it('setSystemConfig should update the systemConfig data', () => { - service.setSystemConfig(MOCK_SYSTEM_CONFIG); - - service.systemConfig$.subscribe(data => { - expect(data).toEqual(MOCK_SYSTEM_CONFIG); - }); - }); - - it('setHasConnectionSetting should update the hasConnectionSetting$', () => { - service.setHasConnectionSetting(true); - - service.hasConnectionSetting$.subscribe(data => { - expect(data).toEqual(true); - }); - }); - ->>>>>>> main it('getSystemConfig should return systemConfig data', () => { const apiUrl = 'http://localhost:8000/system/config'; @@ -205,18 +155,6 @@ describe('TestRunService', () => { req.flush(mockSystemInterfaces); }); -<<<<<<< HEAD -======= - it('hasDevice should return true if device with mac address already exist', fakeAsync(() => { - const deviceArray = [device] as Device[]; - service.setDevices(deviceArray); - tick(); - - expect(service.hasDevice('00:1e:42:35:73:c4')).toEqual(true); - expect(service.hasDevice(' 00:1e:42:35:73:c4 ')).toEqual(true); - })); - ->>>>>>> main describe('getSystemStatus', () => { it('should get system status data with no changes', () => { const result = { ...MOCK_PROGRESS_DATA_IN_PROGRESS }; @@ -296,11 +234,7 @@ describe('TestRunService', () => { }); result = reports; -<<<<<<< HEAD service.getHistory(); -======= - service.fetchHistory(); ->>>>>>> main const req = httpTestingController.expectOne( 'http://localhost:8000/reports' ); @@ -309,7 +243,6 @@ describe('TestRunService', () => { req.flush(reports); }); -<<<<<<< HEAD }); describe('#getResultClass', () => { @@ -380,98 +313,6 @@ describe('TestRunService', () => { expect(result).toEqual(expectedResult); }); -======= - - it('should return [] when error happens', () => { - let result: TestrunStatus[] | null = null; - - service.getHistory().subscribe(res => { - expect(res).toEqual(result); - }); - - result = []; - service.fetchHistory(); - const req = httpTestingController.expectOne({ - url: 'http://localhost:8000/reports', - }); - - req.flush([], { status: 500, statusText: 'error' }); - }); - }); - - describe('#getResultClass', () => { - it('should return class "green" if test result is "Compliant" or "Smart Ready"', () => { - const expectedResult = { - green: true, - red: false, - blue: false, - grey: false, - }; - - const result1 = service.getResultClass(StatusOfTestResult.Compliant); - - expect(result1).toEqual(expectedResult); - }); - - it('should return class "blue" if test result is "Smart Ready" or "Informational"', () => { - const expectedResult = { - green: false, - red: false, - blue: true, - grey: false, - }; - - const result1 = service.getResultClass(StatusOfTestResult.SmartReady); - const result2 = service.getResultClass(StatusOfTestResult.Info); - - expect(result1).toEqual(expectedResult); - expect(result2).toEqual(expectedResult); - }); - - it('should return class "read" if test result is "Non Compliant" or "Error"', () => { - const expectedResult = { - green: false, - red: true, - blue: false, - grey: false, - }; - - const result = service.getResultClass(StatusOfTestResult.NonCompliant); - const result2 = service.getResultClass(StatusOfTestResult.Error); - - expect(result).toEqual(expectedResult); - expect(result2).toEqual(expectedResult); - }); - - it('should return class "grey" if test result is "Skipped" or "Not Started"', () => { - const expectedResult = { - green: false, - red: false, - blue: false, - grey: true, - }; - - const result1 = service.getResultClass(StatusOfTestResult.Skipped); - const result2 = service.getResultClass(StatusOfTestResult.NotStarted); - - expect(result1).toEqual(expectedResult); - expect(result2).toEqual(expectedResult); - }); - }); - - describe('#addDevice', () => { - it('should create array with new value if previous value is null', function () { - service.addDevice(device); - - expect(service.getDevices().value).toEqual([device]); - }); - - it('should add new value if previous value is array', function () { - service.setDevices([device, device]); - service.addDevice(device); - - expect(service.getDevices().value).toEqual([device, device, device]); ->>>>>>> main }); }); @@ -488,7 +329,6 @@ describe('TestRunService', () => { req.flush({}); }); -<<<<<<< HEAD describe('#fetchVersion', () => { it('should get system version', () => { const version = VERSION; @@ -535,29 +375,6 @@ describe('TestRunService', () => { service.getVersion().subscribe(res => { expect(res).toEqual(UNAVAILABLE_VERSION); }); -======= - it('removeDevice should remove device from device list', fakeAsync(() => { - const deviceArray = [device] as Device[]; - service.setDevices(deviceArray); - tick(); - service.removeDevice(device); - - expect(service.hasDevice('00:1e:42:35:73:c4')).toEqual(false); - })); - - it('fetchVersion should get system version', () => { - const version = VERSION; - - service.fetchVersion(); - const req = httpTestingController.expectOne( - 'http://localhost:8000/system/version' - ); - expect(req.request.method).toBe('GET'); - req.flush(version); - - service.getVersion().subscribe(res => { - expect(res).toEqual(version); ->>>>>>> main }); }); @@ -579,42 +396,6 @@ describe('TestRunService', () => { req.flush({}); }); -<<<<<<< HEAD -======= - it('removeReport should remove device from history list', fakeAsync(() => { - const reports = [ - { - status: 'Completed', - device: device, - report: 'https://api.testrun.io/report.pdf', - started: '2023-06-22T10:11:00.123Z', - finished: '2023-06-22T10:17:00.123Z', - }, - { - status: 'Completed', - device: device, - report: 'https://api.testrun.io/report.pdf', - started: '2023-07-22T10:11:00.123Z', - finished: '2023-07-22T10:17:00.123Z', - }, - ] as TestrunStatus[]; - - service.getHistory().next(reports); - tick(); - service.removeReport('00:1e:42:35:73:c4', '2023-06-22T10:11:00.123Z'); - - expect( - service - .getHistory() - .value?.some( - report => - report.device.mac_addr === '00:1e:42:35:73:c4' && - report.started === '2023-06-22T10:11:00.123Z' - ) - ).toEqual(false); - })); - ->>>>>>> main it('#saveDevice should have necessary request data', () => { const apiUrl = 'http://localhost:8000/device'; diff --git a/modules/ui/src/app/services/test-run.service.ts b/modules/ui/src/app/services/test-run.service.ts index 370484b63..0ee0a03e9 100644 --- a/modules/ui/src/app/services/test-run.service.ts +++ b/modules/ui/src/app/services/test-run.service.ts @@ -18,13 +18,8 @@ import { Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject'; import { Observable } from 'rxjs/internal/Observable'; import { Device, TestModule } from '../model/device'; -<<<<<<< HEAD import { catchError, map, of, ReplaySubject, retry } from 'rxjs'; import { SystemConfig, SystemInterfaces } from '../model/setting'; -======= -import { map, ReplaySubject, retry } from 'rxjs'; -import { SystemConfig } from '../model/setting'; ->>>>>>> main import { StatusOfTestResult, StatusOfTestrun, @@ -34,7 +29,6 @@ import { import { Version } from '../model/version'; const API_URL = `http://${window.location.hostname}:8000`; -<<<<<<< HEAD export const SYSTEM_STOP = '/system/stop'; export const UNAVAILABLE_VERSION = { @@ -42,11 +36,6 @@ export const UNAVAILABLE_VERSION = { update_available: false, latest_version: 'v?.?', latest_version_url: '', -======= - -export type SystemInterfaces = { - [key: string]: string; ->>>>>>> main }; @Injectable({ @@ -79,7 +68,6 @@ export class TestRunService { name: 'tls', enabled: true, }, -<<<<<<< HEAD { displayName: 'Protocol', name: 'protocol', @@ -89,75 +77,24 @@ export class TestRunService { private isOpenStartTestrunSub$ = new BehaviorSubject(false); public isOpenStartTestrun$ = this.isOpenStartTestrunSub$.asObservable(); -======= - ]; - - private devices = new BehaviorSubject(null); - private isOpenAddDeviceSub$ = new BehaviorSubject(false); - public isOpenAddDevice$ = this.isOpenAddDeviceSub$.asObservable(); - private isOpenStartTestrunSub$ = new BehaviorSubject(false); - public isOpenStartTestrun$ = this.isOpenStartTestrunSub$.asObservable(); - private _systemConfig = new BehaviorSubject(null); - public systemConfig$ = this._systemConfig.asObservable(); ->>>>>>> main private systemStatusSubject = new ReplaySubject(1); public systemStatus$ = this.systemStatusSubject.asObservable(); private isTestrunStartedSub$ = new BehaviorSubject(false); public isTestrunStarted$ = this.isTestrunStartedSub$.asObservable(); -<<<<<<< HEAD -======= - private hasConnectionSettingSub$ = new BehaviorSubject(null); - public hasConnectionSetting$ = this.hasConnectionSettingSub$.asObservable(); - private history = new BehaviorSubject(null); ->>>>>>> main private version = new BehaviorSubject(null); constructor(private http: HttpClient) {} -<<<<<<< HEAD -======= - setIsOpenAddDevice(isOpen: boolean): void { - this.isOpenAddDeviceSub$.next(isOpen); - } - ->>>>>>> main setIsOpenStartTestrun(isOpen: boolean): void { this.isOpenStartTestrunSub$.next(isOpen); } -<<<<<<< HEAD -======= - setHasConnectionSetting(hasSetting: boolean): void { - this.hasConnectionSettingSub$.next(hasSetting); - } - getDevices(): BehaviorSubject { - return this.devices; - } - - setDevices(devices: Device[]): void { - this.devices.next(devices); - } - - setSystemConfig(config: SystemConfig): void { - this._systemConfig.next(config); - } - ->>>>>>> main setSystemStatus(status: TestrunStatus): void { this.systemStatusSubject.next(status); } -<<<<<<< HEAD fetchDevices(): Observable { return this.http.get(`${API_URL}/devices`); -======= - fetchDevices(): void { - this.http - .get(`${API_URL}/devices`) - .subscribe((devices: Device[]) => { - this.setDevices(devices); - }); ->>>>>>> main } getSystemConfig(): Observable { @@ -193,11 +130,7 @@ export class TestRunService { stopTestrun(): Observable { return this.http -<<<<<<< HEAD .post<{ success: string }>(`${API_URL}${SYSTEM_STOP}`, {}) -======= - .post<{ success: string }>(`${API_URL}/system/stop`, {}) ->>>>>>> main .pipe(map(() => true)); } @@ -233,85 +166,23 @@ export class TestRunService { .pipe(map(() => true)); } -<<<<<<< HEAD getHistory(): Observable { return this.http.get(`${API_URL}/reports`); -======= - hasDevice(macAddress: string): boolean { - return ( - this.devices.value?.some( - device => device.mac_addr === macAddress.trim() - ) || false - ); - } - - addDevice(device: Device): void { - this.devices.next( - this.devices.value ? this.devices.value.concat([device]) : [device] - ); - } - - updateDevice(deviceToUpdate: Device, update: Device): void { - const device = this.devices.value?.find( - device => deviceToUpdate.mac_addr === device.mac_addr - ); - if (device) { - device.model = update.model; - device.manufacturer = update.manufacturer; - device.test_modules = update.test_modules; - device.mac_addr = update.mac_addr; - - this.devices.next(this.devices.value); - } - } - - removeDevice(deviceToDelete: Device): void { - const idx = this.devices.value?.findIndex( - device => deviceToDelete.mac_addr === device.mac_addr - ); - if (typeof idx === 'number') { - this.devices.value?.splice(idx, 1); - this.devices.next(this.devices.value); - } - } - - fetchHistory(): void { - this.http.get(`${API_URL}/reports`).subscribe( - data => { - this.history.next(data); - }, - () => { - this.history.next([]); - } - ); - } - - getHistory(): BehaviorSubject { - return this.history; ->>>>>>> main } public getResultClass(result: string): StatusResultClassName { return { -<<<<<<< HEAD green: result === StatusOfTestResult.Compliant || result === StatusOfTestResult.CompliantLimited || result === StatusOfTestResult.CompliantHigh, -======= - green: result === StatusOfTestResult.Compliant, ->>>>>>> main red: result === StatusOfTestResult.NonCompliant || result === StatusOfTestResult.Error, blue: result === StatusOfTestResult.SmartReady || -<<<<<<< HEAD result === StatusOfTestResult.Info || result === StatusOfTestResult.InProgress, -======= - result === StatusOfTestResult.Info, ->>>>>>> main grey: result === StatusOfTestResult.Skipped || result === StatusOfTestResult.NotStarted, @@ -336,7 +207,6 @@ export class TestRunService { fetchVersion(): void { this.http .get(`${API_URL}/system/version`) -<<<<<<< HEAD .pipe( catchError(() => { const previousVersion = this.version.value?.installed_version @@ -345,9 +215,6 @@ export class TestRunService { return of(previousVersion); }) ) -======= - .pipe(retry(1)) ->>>>>>> main .subscribe(version => { this.version.next(version); }); @@ -360,18 +227,4 @@ export class TestRunService { }) .pipe(map(() => true)); } -<<<<<<< HEAD -======= - - removeReport(mac_addr: string, started: string): void { - const idx = this.history.value?.findIndex( - report => - report.device.mac_addr === mac_addr && report.started === started - ); - if (typeof idx === 'number') { - this.history.value?.splice(idx, 1); - this.history.next(this.history.value); - } - } ->>>>>>> main } diff --git a/modules/ui/src/index.html b/modules/ui/src/index.html index 9a1dbefe7..a13a16ad3 100644 --- a/modules/ui/src/index.html +++ b/modules/ui/src/index.html @@ -39,12 +39,9 @@ function gtag() { dataLayer.push(arguments); } -<<<<<<< HEAD gtag('consent', 'default', { analytics_storage: 'denied', }); -======= ->>>>>>> main gtag('js', new Date()); gtag('config', 'G-XCDFEHN64Z'); @@ -61,12 +58,9 @@ -<<<<<<< HEAD -======= ->>>>>>> main diff --git a/modules/ui/src/styles.scss b/modules/ui/src/styles.scss index 012ed6f34..10213326a 100644 --- a/modules/ui/src/styles.scss +++ b/modules/ui/src/styles.scss @@ -50,10 +50,7 @@ body { border-radius: inherit; } -<<<<<<< HEAD .consent-dialog, -======= ->>>>>>> main .device-form-dialog, .initiate-test-run-dialog { max-height: 100vh; @@ -107,11 +104,7 @@ mat-hint { .active-menu { .app-sidebar-button { .mdc-button__label { -<<<<<<< HEAD left: 8px; -======= - left: 0; ->>>>>>> main } } @@ -124,11 +117,7 @@ mat-hint { fill: mat.get-color-from-palette($color-primary, 600); } -<<<<<<< HEAD .cell-result-text { -======= -.table-cell-result-text { ->>>>>>> main margin: 0; padding: 4px; border-radius: 2px; @@ -189,13 +178,10 @@ h2.title { --mat-option-selected-state-layer-color: #e8f0fe; } -<<<<<<< HEAD .mat-mdc-form-field { --mdc-outlined-text-field-focus-label-text-color: #1a73e8; } -======= ->>>>>>> main body:has(.initiate-test-run-dialog) app-root app-spinner.connection-settings-spinner, @@ -212,7 +198,6 @@ body:has(.filter-dialog-content) opacity: 0; } -<<<<<<< HEAD body:has(app-callout .info):not(:has(app-callout .error)) app-device-repository:not(:has(.device-repository-content-empty)), body:has(app-callout .info):not(:has(app-callout .error)) @@ -237,15 +222,6 @@ body:has(app-callout .info):has(app-callout .error) margin-top: 156px; } -======= -body:has(app-callout .info) - app-device-repository:not(:has(.device-repository-content-empty)), -body:has(app-callout .info) app-history:not(:has(.results-content-empty)), -body:has(app-callout .info) app-progress:not(:has(.progress-content-empty)) { - margin-top: 96px; -} - ->>>>>>> main .text-nowrap { white-space: nowrap; } @@ -259,7 +235,6 @@ body:has(app-callout .info) app-progress:not(:has(.progress-content-empty)) { .filter-chip .mat-mdc-focus-indicator::before { border: none; } -<<<<<<< HEAD .version-content, .version-content-update { @@ -272,5 +247,3 @@ body:has(app-callout .info) app-progress:not(:has(.progress-content-empty)) { opacity: var(--mat-text-button-focus-state-layer-opacity); } } -======= ->>>>>>> main From 9a22b3bf0e66c91a5d99a035affb3c06ef188dbc Mon Sep 17 00:00:00 2001 From: Jacob Boddey Date: Mon, 25 Mar 2024 10:27:00 +0000 Subject: [PATCH 4/5] Fixed lowercase letter in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fcce0752e..5c1489975 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Once you have met the hardware and software requirements, you can get started wi Testrun will constantly evolve to further support end-users by automating device network behaviour against industry standards. For further information on upcoming features, check out the [Roadmap](docs/roadmap.pdf). ## Accessibility :busts_in_silhouette: -we are proud of our tool and strive to provide an enjoyable experience for all of our users. Testrun goes through rigorous accessibility testing at each release. You can read more about [Google and Accessibility here](https://www.google.co.uk/accessibility). You are welcome to submit a new issue and provide feedback on our implementations. +We are proud of our tool and strive to provide an enjoyable experience for all of our users. Testrun goes through rigorous accessibility testing at each release. You can read more about [Google and Accessibility here](https://www.google.co.uk/accessibility). You are welcome to submit a new issue and provide feedback on our implementations. ## Issue reporting :triangular_flag_on_post: If the application has come across a problem at any point during setup or use, please raise an issue under the [issues tab](https://github.com/auto-iot/test-run/issues). Issue templates exist for both bug reports and feature requests. If neither of these are appropriate for your issue, raise a blank issue instead. From 7be301ccc9fb178e1ade2332f65dd766c90b2c63 Mon Sep 17 00:00:00 2001 From: Jacob Boddey Date: Mon, 25 Mar 2024 11:19:36 +0000 Subject: [PATCH 5/5] Fix report generation --- framework/python/src/common/testreport.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/framework/python/src/common/testreport.py b/framework/python/src/common/testreport.py index ccde0647b..4f166e4e3 100644 --- a/framework/python/src/common/testreport.py +++ b/framework/python/src/common/testreport.py @@ -306,12 +306,16 @@ def generate_module_pages(self, json_data): return pages def generate_body(self, json_data): - return f''' + self._num_pages = 0 + self._cur_page = 0 + body = f''' {self.generate_pages(json_data)} {self.generate_module_pages(json_data)} ''' + # Set the max pages after all pages have been generated + return body.replace('MAX_PAGE', str(self._cur_page)) def generate_footer(self, page_num): footer = f'''