diff --git a/deno.lock b/deno.lock index aace5b5a..908d0e19 100644 --- a/deno.lock +++ b/deno.lock @@ -1,34 +1,74 @@ { "version": "4", "specifiers": { - "npm:@tailwindcss/postcss@^4.0.9": "4.0.9", + "npm:@bufbuild/protobuf@^2.2.3": "2.2.5", + "npm:@jsr/meshtastic__core@2.6.0-0": "2.6.0-0", + "npm:@jsr/meshtastic__js@2.6.0-0": "2.6.0-0", + "npm:@jsr/meshtastic__transport-http@*": "0.2.1", + "npm:@jsr/meshtastic__transport-web-serial@*": "0.2.1", + "npm:@noble/curves@^1.8.1": "1.8.1", + "npm:@radix-ui/react-accordion@^1.2.3": "1.2.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-checkbox@^1.1.4": "1.1.4_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-dialog@^1.1.6": "1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-dropdown-menu@^2.1.6": "2.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-label@^2.1.2": "2.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-menubar@^1.1.6": "1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-popover@^1.1.6": "1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-scroll-area@^1.2.3": "1.2.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-select@^2.1.6": "2.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-separator@^1.1.2": "1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-switch@^1.1.3": "1.1.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-tabs@^1.1.3": "1.1.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-toast@^1.2.6": "1.2.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@radix-ui/react-tooltip@^1.1.8": "1.1.8_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@tailwindcss/postcss@^4.0.9": "4.0.15", "npm:@testing-library/jest-dom@^6.6.3": "6.6.3", - "npm:@testing-library/react@^16.2.0": "16.2.0_@testing-library+dom@10.4.0_@types+react@19.0.10_@types+react-dom@19.0.4__@types+react@19.0.10_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:@testing-library/react@^16.2.0": "16.2.0_@testing-library+dom@10.4.0_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0", "npm:@testing-library/user-event@^14.6.1": "14.6.1_@testing-library+dom@10.4.0", + "npm:@turf/turf@^7.2.0": "7.2.0", "npm:@types/chrome@^0.0.307": "0.0.307", "npm:@types/js-cookie@^3.0.6": "3.0.6", - "npm:@types/node@^22.13.7": "22.13.8", - "npm:@types/react-dom@^19.0.4": "19.0.4_@types+react@19.0.10", - "npm:@types/react@^19.0.10": "19.0.10", + "npm:@types/node@^22.13.7": "22.13.13", + "npm:@types/react-dom@^19.0.4": "19.0.4_@types+react@19.0.12", + "npm:@types/react@^19.0.10": "19.0.12", "npm:@types/serviceworker@^0.0.123": "0.0.123", "npm:@types/w3c-web-serial@^1.0.8": "1.0.8", "npm:@types/web-bluetooth@^0.0.21": "0.0.21", - "npm:@vitejs/plugin-react@^4.3.4": "4.3.4_vite@6.2.3__@types+node@22.13.8_@babel+core@7.26.10_@types+node@22.13.8", - "npm:autoprefixer@^10.4.20": "10.4.20_postcss@8.5.3", + "npm:@vitejs/plugin-react@^4.3.4": "4.3.4_vite@6.2.3__@types+node@22.13.13_@babel+core@7.26.10_@types+node@22.13.13", + "npm:autoprefixer@^10.4.20": "10.4.21_postcss@8.5.3", "npm:base64-js@^1.5.1": "1.5.1", - "npm:gzipper@^8.2.0": "8.2.0", - "npm:happy-dom@^17.2.2": "17.2.2", + "npm:class-validator@~0.14.1": "0.14.1", + "npm:class-variance-authority@~0.7.1": "0.7.1", + "npm:clsx@^2.1.1": "2.1.1", + "npm:cmdk@^1.0.4": "1.1.1_react@19.0.0_react-dom@19.0.0__react@19.0.0_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12", + "npm:crypto-random-string@5": "5.0.0", + "npm:gzipper@^8.2.0": "8.2.1", + "npm:happy-dom@^17.2.2": "17.4.4", + "npm:idb-keyval@^6.2.1": "6.2.1", + "npm:immer@^10.1.1": "10.1.1", + "npm:js-cookie@^3.0.5": "3.0.5", + "npm:lucide-react@0.477": "0.477.0_react@19.0.0", + "npm:maplibre-gl@5.1.1": "5.1.1", "npm:postcss@^8.5.3": "8.5.3", - "npm:simple-git-hooks@^2.11.1": "2.11.1", + "npm:react-dom@19": "19.0.0_react@19.0.0", + "npm:react-error-boundary@5": "5.0.0_react@19.0.0", + "npm:react-hook-form@^7.54.2": "7.54.2_react@19.0.0", + "npm:react-map-gl@8.0.1": "8.0.1_maplibre-gl@5.1.1_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:react-qrcode-logo@3": "3.0.0_react@19.0.0_react-dom@19.0.0__react@19.0.0", + "npm:react@19": "19.0.0", + "npm:rfc4648@^1.5.4": "1.5.4", + "npm:simple-git-hooks@^2.11.1": "2.12.1", "npm:tailwind-merge@^3.0.2": "3.0.2", - "npm:tailwindcss-animate@^1.0.7": "1.0.7_tailwindcss@4.0.9", - "npm:tailwindcss@^4.0.9": "4.0.9", + "npm:tailwindcss-animate@^1.0.7": "1.0.7_tailwindcss@4.0.15", + "npm:tailwindcss@^4.0.9": "4.0.15", "npm:tar@^7.4.3": "7.4.3", "npm:testing-library@^0.0.2": "0.0.2_@angular+common@6.1.10__@angular+core@6.1.10___rxjs@6.6.7___zone.js@0.8.29__rxjs@6.6.7_@angular+core@6.1.10__rxjs@6.6.7__zone.js@0.8.29", "npm:typescript@^5.8.2": "5.8.2", - "npm:vite-plugin-pwa@~0.21.1": "0.21.2_vite@6.2.3__@types+node@22.13.8_workbox-build@7.3.0__ajv@8.17.1__@babel+core@7.26.10__rollup@2.79.2_workbox-window@7.3.0_@types+node@22.13.8", - "npm:vite@^6.2.3": "6.2.3_@types+node@22.13.8", - "npm:vitest@^3.0.7": "3.0.9_@types+node@22.13.8_happy-dom@17.2.2_vite@6.2.3__@types+node@22.13.8" + "npm:vite-plugin-node-polyfills@0.23": "0.23.0_vite@6.2.3__@types+node@22.13.13_@types+node@22.13.13", + "npm:vite-plugin-pwa@~0.21.1": "0.21.2_vite@6.2.3__@types+node@22.13.13_workbox-build@7.3.0__ajv@8.17.1__@babel+core@7.26.10__rollup@2.79.2_workbox-window@7.3.0_@types+node@22.13.13", + "npm:vite@^6.2.3": "6.2.3_@types+node@22.13.13", + "npm:vitest@^3.0.7": "3.0.9_@types+node@22.13.13_happy-dom@17.4.4_vite@6.2.3__@types+node@22.13.13", + "npm:zustand@5.0.3": "5.0.3_@types+react@19.0.12_immer@10.1.1_react@19.0.0" }, "npm": { "@adobe/css-tools@4.4.2": { @@ -49,14 +89,14 @@ "dependencies": [ "@angular/core", "rxjs", - "tslib" + "tslib@1.14.1" ] }, "@angular/core@6.1.10_rxjs@6.6.7_zone.js@0.8.29": { "integrity": "sha512-61l3rIQTVdT45eOf6/fBJIeVmV10mcrxqS4N/1OWkuDT29YSJTZSxGcv8QjAyyutuhcqWWpO6gVRkN07rWmkPg==", "dependencies": [ "rxjs", - "tslib", + "tslib@1.14.1", "zone.js" ] }, @@ -798,8 +838,8 @@ "esutils" ] }, - "@babel/runtime@7.26.9": { - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", + "@babel/runtime@7.26.10": { + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "dependencies": [ "regenerator-runtime" ] @@ -831,6 +871,9 @@ "@babel/helper-validator-identifier" ] }, + "@bufbuild/protobuf@2.2.5": { + "integrity": "sha512-/g5EzJifw5GF8aren8wZ/G5oMuPoGeS6MQD3ca8ddcvdXR5UELUfdTZITCGNhNXynY/AYl3Z4plmxdj/tRl/hQ==" + }, "@esbuild/aix-ppc64@0.25.1": { "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==" }, @@ -906,6 +949,30 @@ "@esbuild/win32-x64@0.25.1": { "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==" }, + "@floating-ui/core@1.6.9": { + "integrity": "sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==", + "dependencies": [ + "@floating-ui/utils" + ] + }, + "@floating-ui/dom@1.6.13": { + "integrity": "sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==", + "dependencies": [ + "@floating-ui/core", + "@floating-ui/utils" + ] + }, + "@floating-ui/react-dom@2.1.2_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": [ + "@floating-ui/dom", + "react", + "react-dom" + ] + }, + "@floating-ui/utils@0.2.9": { + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, "@gfx/zopfli@1.0.15": { "integrity": "sha512-7mBgpi7UD82fsff5ThQKet0uBTl4BYerQuc+/qA1ELTwWEiIedRTcD3JgiUu9wwZ2kytW8JOb165rSdAt8PfcQ==", "dependencies": [ @@ -960,241 +1027,2235 @@ "@jridgewell/sourcemap-codec" ] }, - "@pkgjs/parseargs@0.11.0": { - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" + "@jsr/meshtastic__core@2.6.0-0": { + "integrity": "sha512-Ks71sRagbBipotznULpsJZ1EMcQIqCEJQx6mf628dmCNVf2YECi2zi/i/5zErp1hGPgfbDvCz9oPogvsd/7fMA==", + "dependencies": [ + "@bufbuild/protobuf", + "@jsr/meshtastic__protobufs", + "crc", + "ste-simple-events", + "tslog" + ] }, - "@rollup/plugin-babel@5.3.1_@babel+core@7.26.10_rollup@2.79.2": { - "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "@jsr/meshtastic__core@2.6.2": { + "integrity": "sha512-mzsxs9hQeVimQd/tj15Ojw5FYY8Iko3EbDviFZoEw3bmXgiySG53GvQsNA9wV13lFbDu96SM3uK/LI3EHMFY9w==", "dependencies": [ - "@babel/core", - "@babel/helper-module-imports", - "@rollup/pluginutils@3.1.0_rollup@2.79.2", - "rollup@2.79.2" + "@bufbuild/protobuf", + "@jsr/meshtastic__protobufs", + "crc", + "ste-simple-events", + "tslog" ] }, - "@rollup/plugin-node-resolve@15.3.1_rollup@2.79.2": { - "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "@jsr/meshtastic__js@2.6.0-0": { + "integrity": "sha512-+xpZpxK6oUIVOuEs7C+LyxRr2druvc7UNNNTK9Rl8ioXj63Jz1uQXlYe2Gj0xjnRAiSQLR7QVaPef21BR/YTxA==", "dependencies": [ - "@rollup/pluginutils@5.1.4_rollup@2.79.2", - "@types/resolve", - "deepmerge", - "is-module", - "resolve", - "rollup@2.79.2" + "@bufbuild/protobuf", + "@jsr/meshtastic__protobufs", + "crc", + "ste-simple-events", + "tslog" ] }, - "@rollup/plugin-replace@2.4.2_rollup@2.79.2": { - "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "@jsr/meshtastic__protobufs@2.6.2": { + "integrity": "sha512-bIENtFnUEru28GrAeSdiBS9skp0hN/3HZunMbF/IjvUrXOlx2fptKVj3b+pzjOWnLBZxllrByV/W+XDmrxqJ6g==", "dependencies": [ - "@rollup/pluginutils@3.1.0_rollup@2.79.2", - "magic-string@0.25.9", - "rollup@2.79.2" + "@bufbuild/protobuf" ] }, - "@rollup/plugin-terser@0.4.4_rollup@2.79.2": { - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "@jsr/meshtastic__transport-http@0.2.1": { + "integrity": "sha512-lmQKr3aIINKvtGROU4HchmSVqbZSbkIHqajowRRC8IAjsnR0zNTyxz210QyY4pFUF9hpcW3GRjwq5h/VO2JuGg==", "dependencies": [ - "rollup@2.79.2", - "serialize-javascript", - "smob", - "terser" + "@jsr/meshtastic__core@2.6.2" ] }, - "@rollup/pluginutils@3.1.0_rollup@2.79.2": { - "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "@jsr/meshtastic__transport-web-serial@0.2.1": { + "integrity": "sha512-yumjEGLkAuJYOC3aWKvZzbQqi/LnqaKfNpVCY7Ki7oLtAshNiZrBLiwiFhN7+ZR9FfMdJThyBMqREBDRRWTO1Q==", "dependencies": [ - "@types/estree@0.0.39", - "estree-walker@1.0.1", - "picomatch@2.3.1", - "rollup@2.79.2" + "@jsr/meshtastic__core@2.6.2" ] }, - "@rollup/pluginutils@5.1.4_rollup@2.79.2": { - "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "@mapbox/geojson-rewind@0.5.2": { + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", "dependencies": [ - "@types/estree@1.0.6", - "estree-walker@2.0.2", - "picomatch@4.0.2", - "rollup@2.79.2" + "get-stream", + "minimist" ] }, - "@rollup/rollup-android-arm-eabi@4.37.0": { - "integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==" + "@mapbox/jsonlint-lines-primitives@2.0.2": { + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==" }, - "@rollup/rollup-android-arm64@4.37.0": { - "integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==" + "@mapbox/point-geometry@0.1.0": { + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" }, - "@rollup/rollup-darwin-arm64@4.37.0": { - "integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==" + "@mapbox/tiny-sdf@2.0.6": { + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" }, - "@rollup/rollup-darwin-x64@4.37.0": { - "integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==" + "@mapbox/unitbezier@0.0.1": { + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" }, - "@rollup/rollup-freebsd-arm64@4.37.0": { - "integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==" + "@mapbox/vector-tile@1.3.1": { + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "dependencies": [ + "@mapbox/point-geometry" + ] }, - "@rollup/rollup-freebsd-x64@4.37.0": { - "integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==" + "@mapbox/whoots-js@3.1.0": { + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, - "@rollup/rollup-linux-arm-gnueabihf@4.37.0": { - "integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==" + "@maplibre/maplibre-gl-style-spec@19.3.3": { + "integrity": "sha512-cOZZOVhDSulgK0meTsTkmNXb1ahVvmTmWmfx9gRBwc6hq98wS9JP35ESIoNq3xqEan+UN+gn8187Z6E4NKhLsw==", + "dependencies": [ + "@mapbox/jsonlint-lines-primitives", + "@mapbox/unitbezier", + "json-stringify-pretty-compact@3.0.0", + "minimist", + "rw", + "sort-object" + ] }, - "@rollup/rollup-linux-arm-musleabihf@4.37.0": { - "integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==" + "@maplibre/maplibre-gl-style-spec@23.1.0": { + "integrity": "sha512-R6/ihEuC5KRexmKIYkWqUv84Gm+/QwsOUgHyt1yy2XqCdGdLvlBWVWIIeTZWN4NGdwmY6xDzdSGU2R9oBLNg2w==", + "dependencies": [ + "@mapbox/jsonlint-lines-primitives", + "@mapbox/unitbezier", + "json-stringify-pretty-compact@4.0.0", + "minimist", + "quickselect@3.0.0", + "rw", + "tinyqueue@3.0.0" + ] }, - "@rollup/rollup-linux-arm64-gnu@4.37.0": { - "integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==" + "@noble/curves@1.8.1": { + "integrity": "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ==", + "dependencies": [ + "@noble/hashes" + ] }, - "@rollup/rollup-linux-arm64-musl@4.37.0": { - "integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==" + "@noble/hashes@1.7.1": { + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==" }, - "@rollup/rollup-linux-loongarch64-gnu@4.37.0": { - "integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==" + "@pkgjs/parseargs@0.11.0": { + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==" }, - "@rollup/rollup-linux-powerpc64le-gnu@4.37.0": { - "integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==" + "@radix-ui/number@1.1.0": { + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==" }, - "@rollup/rollup-linux-riscv64-gnu@4.37.0": { - "integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==" + "@radix-ui/primitive@1.1.1": { + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==" }, - "@rollup/rollup-linux-riscv64-musl@4.37.0": { - "integrity": "sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==" + "@radix-ui/react-accordion@1.2.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-RIQ15mrcvqIkDARJeERSuXSry2N8uYnxkdDetpfmalT/+0ntOXLkFOsh9iwlAsCv+qcmhZjbdJogIm6WBa6c4A==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-collapsible", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-id", + "@radix-ui/react-primitive", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] }, - "@rollup/rollup-linux-s390x-gnu@4.37.0": { - "integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==" + "@radix-ui/react-arrow@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-G+KcpzXHq24iH0uGG/pF8LyzpFJYGD4RfLjCIBfGdSLXvjLHST31RUiRVrupIBMvIppMgSzQ6l66iAxl03tdlg==", + "dependencies": [ + "@radix-ui/react-primitive", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] }, - "@rollup/rollup-linux-x64-gnu@4.37.0": { - "integrity": "sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==" + "@radix-ui/react-checkbox@1.1.4_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-wP0CPAHq+P5I4INKe3hJrIa1WoNqqrejzW+zoU0rOvo1b9gDEJJFl2rYfO1PYJUQCc2H1WZxIJmyv9BS8i5fLw==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-use-previous", + "@radix-ui/react-use-size", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] }, - "@rollup/rollup-linux-x64-musl@4.37.0": { - "integrity": "sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==" + "@radix-ui/react-collapsible@1.1.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-jFSerheto1X03MUC0g6R7LedNW9EEGWdg9W1+MlpkMLwGkgkbUXLPBH/KIuWKXUoeYRVY11llqbTBDzuLg7qrw==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-id", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-use-layout-effect", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] }, - "@rollup/rollup-win32-arm64-msvc@4.37.0": { - "integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==" + "@radix-ui/react-collection@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", + "dependencies": [ + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-primitive", + "@radix-ui/react-slot", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] }, - "@rollup/rollup-win32-ia32-msvc@4.37.0": { - "integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==" + "@radix-ui/react-compose-refs@1.1.1_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "dependencies": [ + "@types/react", + "react" + ] }, - "@rollup/rollup-win32-x64-msvc@4.37.0": { - "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==" + "@radix-ui/react-context@1.1.1_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "dependencies": [ + "@types/react", + "react" + ] + }, + "@radix-ui/react-dialog@1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-focus-guards", + "@radix-ui/react-focus-scope", + "@radix-ui/react-id", + "@radix-ui/react-portal", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-slot", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "aria-hidden", + "react", + "react-dom", + "react-remove-scroll" + ] }, - "@surma/rollup-plugin-off-main-thread@2.2.3": { - "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "@radix-ui/react-direction@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", "dependencies": [ - "ejs", - "json5", - "magic-string@0.25.9", - "string.prototype.matchall" + "@types/react", + "react" + ] + }, + "@radix-ui/react-dismissable-layer@1.1.5_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-escape-keydown", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-dropdown-menu@2.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-no3X7V5fD487wab/ZYSHXq3H37u4NVeLDKI/Ks724X/eEFSSEFYZxWgsIlr1UBeEyDaM29HM5x9p1Nv8DuTYPA==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-id", + "@radix-ui/react-menu", + "@radix-ui/react-primitive", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-focus-guards@1.1.1_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "dependencies": [ + "@types/react", + "react" + ] + }, + "@radix-ui/react-focus-scope@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "dependencies": [ + "@radix-ui/react-compose-refs", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-id@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dependencies": [ + "@radix-ui/react-use-layout-effect", + "@types/react", + "react" + ] + }, + "@radix-ui/react-label@2.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-zo1uGMTaNlHehDyFQcDZXRJhUPDuukcnHz0/jnrup0JA6qL+AFpAnty+7VKa9esuU5xTblAZzTGYJKSKaBxBhw==", + "dependencies": [ + "@radix-ui/react-primitive", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-menu@2.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-tBBb5CXDJW3t2mo9WlO7r6GTmWV0F0uzHZVFmlRmYpiSK1CDU5IKojP1pm7oknpBOrFZx/YgBRW9oorPO2S/Lg==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-focus-guards", + "@radix-ui/react-focus-scope", + "@radix-ui/react-id", + "@radix-ui/react-popper", + "@radix-ui/react-portal", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-roving-focus", + "@radix-ui/react-slot", + "@radix-ui/react-use-callback-ref", + "@types/react", + "@types/react-dom", + "aria-hidden", + "react", + "react-dom", + "react-remove-scroll" + ] + }, + "@radix-ui/react-menubar@1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-FHq7+3DlXwh/7FOM4i0G4bC4vPjiq89VEEvNF4VMLchGnaUuUbE5uKXMUCjdKaOghEEMeiKa5XCa2Pk4kteWmg==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-id", + "@radix-ui/react-menu", + "@radix-ui/react-primitive", + "@radix-ui/react-roving-focus", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-popover@1.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-NQouW0x4/GnkFJ/pRqsIS3rM/k97VzKnVb2jB7Gq7VEGPy5g7uNV1ykySFt7eWSp3i2uSGFwaJcvIRJBAHmmFg==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-focus-guards", + "@radix-ui/react-focus-scope", + "@radix-ui/react-id", + "@radix-ui/react-popper", + "@radix-ui/react-portal", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-slot", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "aria-hidden", + "react", + "react-dom", + "react-remove-scroll" + ] + }, + "@radix-ui/react-popper@1.2.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-Rvqc3nOpwseCyj/rgjlJDYAgyfw7OC1tTkKn2ivhaMGcYt8FSBlahHOZak2i3QwkRXUXgGgzeEe2RuqeEHuHgA==", + "dependencies": [ + "@floating-ui/react-dom", + "@radix-ui/react-arrow", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-layout-effect", + "@radix-ui/react-use-rect", + "@radix-ui/react-use-size", + "@radix-ui/rect", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-portal@1.1.4_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "dependencies": [ + "@radix-ui/react-primitive", + "@radix-ui/react-use-layout-effect", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-presence@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "dependencies": [ + "@radix-ui/react-compose-refs", + "@radix-ui/react-use-layout-effect", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-primitive@2.0.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "dependencies": [ + "@radix-ui/react-slot", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-roving-focus@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-id", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-scroll-area@1.2.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-l7+NNBfBYYJa9tNqVcP2AGvxdE3lmE6kFTBXdvHgUaZuy+4wGCL1Cl2AfaR7RKyimj7lZURGLwFO59k4eBnDJQ==", + "dependencies": [ + "@radix-ui/number", + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-layout-effect", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-select@2.1.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-T6ajELxRvTuAMWH0YmRJ1qez+x4/7Nq7QIx7zJ0VK3qaEWdnWpNbEDnmWldG1zBDwqrLy5aLMUWcoGirVj5kMg==", + "dependencies": [ + "@radix-ui/number", + "@radix-ui/primitive", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-focus-guards", + "@radix-ui/react-focus-scope", + "@radix-ui/react-id", + "@radix-ui/react-popper", + "@radix-ui/react-portal", + "@radix-ui/react-primitive", + "@radix-ui/react-slot", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-use-layout-effect", + "@radix-ui/react-use-previous", + "@radix-ui/react-visually-hidden", + "@types/react", + "@types/react-dom", + "aria-hidden", + "react", + "react-dom", + "react-remove-scroll" + ] + }, + "@radix-ui/react-separator@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-oZfHcaAp2Y6KFBX6I5P1u7CQoy4lheCGiYj+pGFrHy8E/VNRb5E39TkTr3JrV520csPBTZjkuKFdEsjS5EUNKQ==", + "dependencies": [ + "@radix-ui/react-primitive", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-slot@1.1.2_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "dependencies": [ + "@radix-ui/react-compose-refs", + "@types/react", + "react" + ] + }, + "@radix-ui/react-switch@1.1.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-1nc+vjEOQkJVsJtWPSiISGT6OKm4SiOdjMo+/icLxo2G4vxz1GntC5MzfL4v8ey9OEfw787QCD1y3mUv0NiFEQ==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-primitive", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-use-previous", + "@radix-ui/react-use-size", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-tabs@1.1.3_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-context", + "@radix-ui/react-direction", + "@radix-ui/react-id", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-roving-focus", + "@radix-ui/react-use-controllable-state", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-toast@1.2.6_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-gN4dpuIVKEgpLn1z5FhzT9mYRUitbfZq9XqN/7kkBMUgFTzTG8x/KszWJugJXHcwxckY8xcKDZPz7kG3o6DsUA==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-collection", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-portal", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-use-callback-ref", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-use-layout-effect", + "@radix-ui/react-visually-hidden", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-tooltip@1.1.8_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-YAA2cu48EkJZdAMHC0dqo9kialOcRStbtiY4nJPaht7Ptrhcvpo+eDChaM6BIs8kL6a8Z5l5poiqLnXcNduOkA==", + "dependencies": [ + "@radix-ui/primitive", + "@radix-ui/react-compose-refs", + "@radix-ui/react-context", + "@radix-ui/react-dismissable-layer", + "@radix-ui/react-id", + "@radix-ui/react-popper", + "@radix-ui/react-portal", + "@radix-ui/react-presence", + "@radix-ui/react-primitive", + "@radix-ui/react-slot", + "@radix-ui/react-use-controllable-state", + "@radix-ui/react-visually-hidden", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/react-use-callback-ref@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "dependencies": [ + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-controllable-state@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dependencies": [ + "@radix-ui/react-use-callback-ref", + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-escape-keydown@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dependencies": [ + "@radix-ui/react-use-callback-ref", + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-layout-effect@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "dependencies": [ + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-previous@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "dependencies": [ + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-rect@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "dependencies": [ + "@radix-ui/rect", + "@types/react", + "react" + ] + }, + "@radix-ui/react-use-size@1.1.0_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "dependencies": [ + "@radix-ui/react-use-layout-effect", + "@types/react", + "react" + ] + }, + "@radix-ui/react-visually-hidden@1.1.2_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-1SzA4ns2M1aRlvxErqhLHsBHoS5eI5UUcI2awAMgGUp4LoaoWOKYmvqDY2s/tltuPkh3Yk77YF/r3IRj+Amx4Q==", + "dependencies": [ + "@radix-ui/react-primitive", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@radix-ui/rect@1.1.0": { + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==" + }, + "@rollup/plugin-babel@5.3.1_@babel+core@7.26.10_rollup@2.79.2": { + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dependencies": [ + "@babel/core", + "@babel/helper-module-imports", + "@rollup/pluginutils@3.1.0_rollup@2.79.2", + "rollup@2.79.2" + ] + }, + "@rollup/plugin-inject@5.0.5": { + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dependencies": [ + "@rollup/pluginutils@5.1.4_rollup@2.79.2", + "estree-walker@2.0.2", + "magic-string@0.30.17" + ] + }, + "@rollup/plugin-node-resolve@15.3.1_rollup@2.79.2": { + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dependencies": [ + "@rollup/pluginutils@5.1.4_rollup@2.79.2", + "@types/resolve", + "deepmerge", + "is-module", + "resolve", + "rollup@2.79.2" + ] + }, + "@rollup/plugin-replace@2.4.2_rollup@2.79.2": { + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dependencies": [ + "@rollup/pluginutils@3.1.0_rollup@2.79.2", + "magic-string@0.25.9", + "rollup@2.79.2" + ] + }, + "@rollup/plugin-terser@0.4.4_rollup@2.79.2": { + "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", + "dependencies": [ + "rollup@2.79.2", + "serialize-javascript", + "smob", + "terser" + ] + }, + "@rollup/pluginutils@3.1.0_rollup@2.79.2": { + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dependencies": [ + "@types/estree@0.0.39", + "estree-walker@1.0.1", + "picomatch@2.3.1", + "rollup@2.79.2" + ] + }, + "@rollup/pluginutils@5.1.4_rollup@2.79.2": { + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dependencies": [ + "@types/estree@1.0.6", + "estree-walker@2.0.2", + "picomatch@4.0.2", + "rollup@2.79.2" + ] + }, + "@rollup/rollup-android-arm-eabi@4.37.0": { + "integrity": "sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==" + }, + "@rollup/rollup-android-arm64@4.37.0": { + "integrity": "sha512-6U3SlVyMxezt8Y+/iEBcbp945uZjJwjZimu76xoG7tO1av9VO691z8PkhzQ85ith2I8R2RddEPeSfcbyPfD4hA==" + }, + "@rollup/rollup-darwin-arm64@4.37.0": { + "integrity": "sha512-+iTQ5YHuGmPt10NTzEyMPbayiNTcOZDWsbxZYR1ZnmLnZxG17ivrPSWFO9j6GalY0+gV3Jtwrrs12DBscxnlYA==" + }, + "@rollup/rollup-darwin-x64@4.37.0": { + "integrity": "sha512-m8W2UbxLDcmRKVjgl5J/k4B8d7qX2EcJve3Sut7YGrQoPtCIQGPH5AMzuFvYRWZi0FVS0zEY4c8uttPfX6bwYQ==" + }, + "@rollup/rollup-freebsd-arm64@4.37.0": { + "integrity": "sha512-FOMXGmH15OmtQWEt174v9P1JqqhlgYge/bUjIbiVD1nI1NeJ30HYT9SJlZMqdo1uQFyt9cz748F1BHghWaDnVA==" + }, + "@rollup/rollup-freebsd-x64@4.37.0": { + "integrity": "sha512-SZMxNttjPKvV14Hjck5t70xS3l63sbVwl98g3FlVVx2YIDmfUIy29jQrsw06ewEYQ8lQSuY9mpAPlmgRD2iSsA==" + }, + "@rollup/rollup-linux-arm-gnueabihf@4.37.0": { + "integrity": "sha512-hhAALKJPidCwZcj+g+iN+38SIOkhK2a9bqtJR+EtyxrKKSt1ynCBeqrQy31z0oWU6thRZzdx53hVgEbRkuI19w==" + }, + "@rollup/rollup-linux-arm-musleabihf@4.37.0": { + "integrity": "sha512-jUb/kmn/Gd8epbHKEqkRAxq5c2EwRt0DqhSGWjPFxLeFvldFdHQs/n8lQ9x85oAeVb6bHcS8irhTJX2FCOd8Ag==" + }, + "@rollup/rollup-linux-arm64-gnu@4.37.0": { + "integrity": "sha512-oNrJxcQT9IcbcmKlkF+Yz2tmOxZgG9D9GRq+1OE6XCQwCVwxixYAa38Z8qqPzQvzt1FCfmrHX03E0pWoXm1DqA==" + }, + "@rollup/rollup-linux-arm64-musl@4.37.0": { + "integrity": "sha512-pfxLBMls+28Ey2enpX3JvjEjaJMBX5XlPCZNGxj4kdJyHduPBXtxYeb8alo0a7bqOoWZW2uKynhHxF/MWoHaGQ==" + }, + "@rollup/rollup-linux-loongarch64-gnu@4.37.0": { + "integrity": "sha512-yCE0NnutTC/7IGUq/PUHmoeZbIwq3KRh02e9SfFh7Vmc1Z7atuJRYWhRME5fKgT8aS20mwi1RyChA23qSyRGpA==" + }, + "@rollup/rollup-linux-powerpc64le-gnu@4.37.0": { + "integrity": "sha512-NxcICptHk06E2Lh3a4Pu+2PEdZ6ahNHuK7o6Np9zcWkrBMuv21j10SQDJW3C9Yf/A/P7cutWoC/DptNLVsZ0VQ==" + }, + "@rollup/rollup-linux-riscv64-gnu@4.37.0": { + "integrity": "sha512-PpWwHMPCVpFZLTfLq7EWJWvrmEuLdGn1GMYcm5MV7PaRgwCEYJAwiN94uBuZev0/J/hFIIJCsYw4nLmXA9J7Pw==" + }, + "@rollup/rollup-linux-riscv64-musl@4.37.0": { + "integrity": "sha512-DTNwl6a3CfhGTAOYZ4KtYbdS8b+275LSLqJVJIrPa5/JuIufWWZ/QFvkxp52gpmguN95eujrM68ZG+zVxa8zHA==" + }, + "@rollup/rollup-linux-s390x-gnu@4.37.0": { + "integrity": "sha512-hZDDU5fgWvDdHFuExN1gBOhCuzo/8TMpidfOR+1cPZJflcEzXdCy1LjnklQdW8/Et9sryOPJAKAQRw8Jq7Tg+A==" + }, + "@rollup/rollup-linux-x64-gnu@4.37.0": { + "integrity": "sha512-pKivGpgJM5g8dwj0ywBwe/HeVAUSuVVJhUTa/URXjxvoyTT/AxsLTAbkHkDHG7qQxLoW2s3apEIl26uUe08LVQ==" + }, + "@rollup/rollup-linux-x64-musl@4.37.0": { + "integrity": "sha512-E2lPrLKE8sQbY/2bEkVTGDEk4/49UYRVWgj90MY8yPjpnGBQ+Xi1Qnr7b7UIWw1NOggdFQFOLZ8+5CzCiz143w==" + }, + "@rollup/rollup-win32-arm64-msvc@4.37.0": { + "integrity": "sha512-Jm7biMazjNzTU4PrQtr7VS8ibeys9Pn29/1bm4ph7CP2kf21950LgN+BaE2mJ1QujnvOc6p54eWWiVvn05SOBg==" + }, + "@rollup/rollup-win32-ia32-msvc@4.37.0": { + "integrity": "sha512-e3/1SFm1OjefWICB2Ucstg2dxYDkDTZGDYgwufcbsxTHyqQps1UQf33dFEChBNmeSsTOyrjw2JJq0zbG5GF6RA==" + }, + "@rollup/rollup-win32-x64-msvc@4.37.0": { + "integrity": "sha512-LWbXUBwn/bcLx2sSsqy7pK5o+Nr+VCoRoAohfJ5C/aBio9nfJmGQqHAhU6pwxV/RmyTk5AqdySma7uwWGlmeuA==" + }, + "@surma/rollup-plugin-off-main-thread@2.2.3": { + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dependencies": [ + "ejs", + "json5", + "magic-string@0.25.9", + "string.prototype.matchall" + ] + }, + "@tailwindcss/node@4.0.15": { + "integrity": "sha512-IODaJjNmiasfZX3IoS+4Em3iu0fD2HS0/tgrnkYfW4hyUor01Smnr5eY3jc4rRgaTDrJlDmBTHbFO0ETTDaxWA==", + "dependencies": [ + "enhanced-resolve", + "jiti", + "tailwindcss" + ] + }, + "@tailwindcss/oxide-android-arm64@4.0.15": { + "integrity": "sha512-EBuyfSKkom7N+CB3A+7c0m4+qzKuiN0WCvzPvj5ZoRu4NlQadg/mthc1tl5k9b5ffRGsbDvP4k21azU4VwVk3Q==" + }, + "@tailwindcss/oxide-darwin-arm64@4.0.15": { + "integrity": "sha512-ObVAnEpLepMhV9VoO0JSit66jiN5C4YCqW3TflsE9boo2Z7FIjV80RFbgeL2opBhtxbaNEDa6D0/hq/EP03kgQ==" + }, + "@tailwindcss/oxide-darwin-x64@4.0.15": { + "integrity": "sha512-IElwoFhUinOr9MyKmGTPNi1Rwdh68JReFgYWibPWTGuevkHkLWKEflZc2jtI5lWZ5U9JjUnUfnY43I4fEXrc4g==" + }, + "@tailwindcss/oxide-freebsd-x64@4.0.15": { + "integrity": "sha512-6BLLqyx7SIYRBOnTZ8wgfXANLJV5TQd3PevRJZp0vn42eO58A2LykRKdvL1qyPfdpmEVtF+uVOEZ4QTMqDRAWA==" + }, + "@tailwindcss/oxide-linux-arm-gnueabihf@4.0.15": { + "integrity": "sha512-Zy63EVqO9241Pfg6G0IlRIWyY5vNcWrL5dd2WAKVJZRQVeolXEf1KfjkyeAAlErDj72cnyXObEZjMoPEKHpdNw==" + }, + "@tailwindcss/oxide-linux-arm64-gnu@4.0.15": { + "integrity": "sha512-2NemGQeaTbtIp1Z2wyerbVEJZTkAWhMDOhhR5z/zJ75yMNf8yLnE+sAlyf6yGDNr+1RqvWrRhhCFt7i0CIxe4Q==" + }, + "@tailwindcss/oxide-linux-arm64-musl@4.0.15": { + "integrity": "sha512-342GVnhH/6PkVgKtEzvNVuQ4D+Q7B7qplvuH20Cfz9qEtydG6IQczTZ5IT4JPlh931MG1NUCVxg+CIorr1WJyw==" + }, + "@tailwindcss/oxide-linux-x64-gnu@4.0.15": { + "integrity": "sha512-g76GxlKH124RuGqacCEFc2nbzRl7bBrlC8qDQMiUABkiifDRHOIUjgKbLNG4RuR9hQAD/MKsqZ7A8L08zsoBrw==" + }, + "@tailwindcss/oxide-linux-x64-musl@4.0.15": { + "integrity": "sha512-Gg/Y1XrKEvKpq6WeNt2h8rMIKOBj/W3mNa5NMvkQgMC7iO0+UNLrYmt6zgZufht66HozNpn+tJMbbkZ5a3LczA==" + }, + "@tailwindcss/oxide-win32-arm64-msvc@4.0.15": { + "integrity": "sha512-7QtSSJwYZ7ZK1phVgcNZpuf7c7gaCj8Wb0xjliligT5qCGCp79OV2n3SJummVZdw4fbTNKUOYMO7m1GinppZyA==" + }, + "@tailwindcss/oxide-win32-x64-msvc@4.0.15": { + "integrity": "sha512-JQ5H+5MLhOjpgNp6KomouE0ZuKmk3hO5h7/ClMNAQ8gZI2zkli3IH8ZqLbd2DVfXDbdxN2xvooIEeIlkIoSCqw==" + }, + "@tailwindcss/oxide@4.0.15": { + "integrity": "sha512-e0uHrKfPu7JJGMfjwVNyt5M0u+OP8kUmhACwIRlM+JNBuReDVQ63yAD1NWe5DwJtdaHjugNBil76j+ks3zlk6g==", + "dependencies": [ + "@tailwindcss/oxide-android-arm64", + "@tailwindcss/oxide-darwin-arm64", + "@tailwindcss/oxide-darwin-x64", + "@tailwindcss/oxide-freebsd-x64", + "@tailwindcss/oxide-linux-arm-gnueabihf", + "@tailwindcss/oxide-linux-arm64-gnu", + "@tailwindcss/oxide-linux-arm64-musl", + "@tailwindcss/oxide-linux-x64-gnu", + "@tailwindcss/oxide-linux-x64-musl", + "@tailwindcss/oxide-win32-arm64-msvc", + "@tailwindcss/oxide-win32-x64-msvc" + ] + }, + "@tailwindcss/postcss@4.0.15": { + "integrity": "sha512-qyrpoDKIO7wzkRbKCvGLo7gXRjT9/Njf7ZJiJhG4njrfZkvOhjwnaHpYbpxYeDysEg+9pB1R4jcd+vQ7ZUDsmQ==", + "dependencies": [ + "@alloc/quick-lru", + "@tailwindcss/node", + "@tailwindcss/oxide", + "lightningcss", + "postcss", + "tailwindcss" + ] + }, + "@testing-library/dom@10.4.0": { + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "dependencies": [ + "@babel/code-frame", + "@babel/runtime", + "@types/aria-query", + "aria-query@5.3.0", + "chalk@4.1.2", + "dom-accessibility-api@0.5.16", + "lz-string", + "pretty-format" + ] + }, + "@testing-library/jest-dom@6.6.3": { + "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "dependencies": [ + "@adobe/css-tools", + "aria-query@5.3.2", + "chalk@3.0.0", + "css.escape", + "dom-accessibility-api@0.6.3", + "lodash", + "redent" + ] + }, + "@testing-library/react@16.2.0_@testing-library+dom@10.4.0_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", + "dependencies": [ + "@babel/runtime", + "@testing-library/dom", + "@types/react", + "@types/react-dom", + "react", + "react-dom" + ] + }, + "@testing-library/user-event@14.6.1_@testing-library+dom@10.4.0": { + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "dependencies": [ + "@testing-library/dom" + ] + }, + "@turf/along@7.2.0": { + "integrity": "sha512-Cf+d2LozABdb0TJoIcJwFKB+qisJY4nMUW9z6PAuZ9UCH7AR//hy2Z06vwYCKFZKP4a7DRPkOMBadQABCyoYuw==", + "dependencies": [ + "@turf/bearing", + "@turf/destination", + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/angle@7.2.0": { + "integrity": "sha512-b28rs1NO8Dt/MXadFhnpqH7GnEWRsl+xF5JeFtg9+eM/+l/zGrdliPYMZtAj12xn33w22J1X4TRprAI0rruvVQ==", + "dependencies": [ + "@turf/bearing", + "@turf/helpers", + "@turf/invariant", + "@turf/rhumb-bearing", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/area@7.2.0": { + "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/bbox-clip@7.2.0": { + "integrity": "sha512-q6RXTpqeUQAYLAieUL1n3J6ukRGsNVDOqcYtfzaJbPW+0VsAf+1cI16sN700t0sekbeU1DH/RRVAHhpf8+36wA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/bbox-polygon@7.2.0": { + "integrity": "sha512-Aj4G1GAAy26fmOqMjUk0Z+Lcax5VQ9g1xYDbHLQWXvfTsaueBT+RzdH6XPnZ/seEEnZkio2IxE8V5af/osupgA==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/bbox@7.2.0": { + "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/bearing@7.2.0": { + "integrity": "sha512-Jm0Xt3GgHjRrWvBtAGvgfnADLm+4exud2pRlmCYx8zfiKuNXQFkrcTZcOiJOgTfG20Agq28iSh15uta47jSIbg==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/bezier-spline@7.2.0": { + "integrity": "sha512-7BPkc3ufYB9KLvcaTpTsnpXzh9DZoENxCS0Ms9XUwuRXw45TpevwUpOsa3atO76iKQ5puHntqFO4zs8IUxBaaA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-clockwise@7.2.0": { + "integrity": "sha512-0fJeFSARxy6ealGBM4Gmgpa1o8msQF87p2Dx5V6uSqzT8VPDegX1NSWl4b7QgXczYa9qv7IAABttdWP0K7Q7eQ==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-concave@7.2.0": { + "integrity": "sha512-v3dTN04dfO6VqctQj1a+pjDHb6+/Ev90oAR2QjJuAntY4ubhhr7vKeJdk/w+tWNSMKULnYwfe65Du3EOu3/TeA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-contains@7.2.0": { + "integrity": "sha512-dgRQm4uVO5XuLee4PLVH7CFQZKdefUBMIXTPITm2oRIDmPLJKHDOFKQTNkGJ73mDKKBR2lmt6eVH3br6OYrEYg==", + "dependencies": [ + "@turf/bbox", + "@turf/boolean-point-in-polygon", + "@turf/boolean-point-on-line", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-crosses@7.2.0": { + "integrity": "sha512-9GyM4UUWFKQOoNhHVSfJBf5XbPy8Fxfz9djjJNAnm/IOl8NmFUSwFPAjKlpiMcr6yuaAoc9R/1KokS9/eLqPvA==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@turf/invariant", + "@turf/line-intersect", + "@turf/polygon-to-line", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-disjoint@7.2.0": { + "integrity": "sha512-xdz+pYKkLMuqkNeJ6EF/3OdAiJdiHhcHCV0ykX33NIuALKIEpKik0+NdxxNsZsivOW6keKwr61SI+gcVtHYcnQ==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@turf/line-intersect", + "@turf/meta", + "@turf/polygon-to-line", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-equal@7.2.0": { + "integrity": "sha512-TmjKYLsxXqEmdDtFq3QgX4aSogiISp3/doeEtDOs3NNSR8susOtBEZkmvwO6DLW+g/rgoQJIBR6iVoWiRqkBxw==", + "dependencies": [ + "@turf/clean-coords", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "geojson-equality-ts", + "tslib@2.8.1" + ] + }, + "@turf/boolean-intersects@7.2.0": { + "integrity": "sha512-GLRyLQgK3F14drkK5Qi9Mv7Z9VT1bgQUd9a3DB3DACTZWDSwfh8YZUFn/HBwRkK8dDdgNEXaavggQHcPi1k9ow==", + "dependencies": [ + "@turf/boolean-disjoint", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-overlap@7.2.0": { + "integrity": "sha512-ieM5qIE4anO+gUHIOvEN7CjyowF+kQ6v20/oNYJCp63TVS6eGMkwgd+I4uMzBXfVW66nVHIXjODdUelU+Xyctw==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/line-intersect", + "@turf/line-overlap", + "@turf/meta", + "@types/geojson", + "geojson-equality-ts", + "tslib@2.8.1" + ] + }, + "@turf/boolean-parallel@7.2.0": { + "integrity": "sha512-iOtuzzff8nmwv05ROkSvyeGLMrfdGkIi+3hyQ+DH4IVyV37vQbqR5oOJ0Nt3Qq1Tjrq9fvF8G3OMdAv3W2kY9w==", + "dependencies": [ + "@turf/clean-coords", + "@turf/helpers", + "@turf/line-segment", + "@turf/rhumb-bearing", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-point-in-polygon@7.2.0": { + "integrity": "sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "point-in-polygon-hao", + "tslib@2.8.1" + ] + }, + "@turf/boolean-point-on-line@7.2.0": { + "integrity": "sha512-H/bXX8+2VYeSyH8JWrOsu8OGmeA9KVZfM7M6U5/fSqGsRHXo9MyYJ94k39A9kcKSwI0aWiMXVD2UFmiWy8423Q==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-touches@7.2.0": { + "integrity": "sha512-8qb1CO+cwFATGRGFgTRjzL9aibfsbI91pdiRl7KIEkVdeN/H9k8FDrUA1neY7Yq48IaciuwqjbbojQ16FD9b0w==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/boolean-point-on-line", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/boolean-valid@7.2.0": { + "integrity": "sha512-xb7gdHN8VV6ivPJh6rPpgxmAEGReiRxqY+QZoEZVGpW2dXcmU1BdY6FA6G/cwvggXAXxJBREoANtEDgp/0ySbA==", + "dependencies": [ + "@turf/bbox", + "@turf/boolean-crosses", + "@turf/boolean-disjoint", + "@turf/boolean-overlap", + "@turf/boolean-point-in-polygon", + "@turf/boolean-point-on-line", + "@turf/helpers", + "@turf/invariant", + "@turf/line-intersect", + "@types/geojson", + "geojson-polygon-self-intersections", + "tslib@2.8.1" + ] + }, + "@turf/boolean-within@7.2.0": { + "integrity": "sha512-zB3AiF59zQZ27Dp1iyhp9mVAKOFHat8RDH45TZhLY8EaqdEPdmLGvwMFCKfLryQcUDQvmzP8xWbtUR82QM5C4g==", + "dependencies": [ + "@turf/bbox", + "@turf/boolean-point-in-polygon", + "@turf/boolean-point-on-line", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/buffer@7.2.0": { + "integrity": "sha512-QH1FTr5Mk4z1kpQNztMD8XBOZfpOXPOtlsxaSAj2kDIf5+LquA6HtJjZrjUngnGtzG5+XwcfyRL4ImvLnFjm5Q==", + "dependencies": [ + "@turf/bbox", + "@turf/center", + "@turf/helpers", + "@turf/jsts", + "@turf/meta", + "@turf/projection", + "@types/geojson", + "d3-geo" + ] + }, + "@turf/center-mean@7.2.0": { + "integrity": "sha512-NaW6IowAooTJ35O198Jw3U4diZ6UZCCeJY+4E+WMLpks3FCxMDSHEfO2QjyOXQMGWZnVxVelqI5x9DdniDbQ+A==", + "dependencies": [ + "@turf/bbox", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/center-median@7.2.0": { + "integrity": "sha512-/CgVyHNG4zAoZpvkl7qBCe4w7giWNVtLyTU5PoIfg1vWM4VpYw+N7kcBBH46bbzvVBn0vhmZr586r543EwdC/A==", + "dependencies": [ + "@turf/center-mean", + "@turf/centroid", + "@turf/distance", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/center-of-mass@7.2.0": { + "integrity": "sha512-ij3pmG61WQPHGTQvOziPOdIgwTMegkYTwIc71Gl7xn4C0vWH6KLDSshCphds9xdWSXt2GbHpUs3tr4XGntHkEQ==", + "dependencies": [ + "@turf/centroid", + "@turf/convex", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/center@7.2.0": { + "integrity": "sha512-UTNp9abQ2kuyRg5gCIGDNwwEQeF3NbpYsd1Q0KW9lwWuzbLVNn0sOwbxjpNF4J2HtMOs5YVOcqNvYyuoa2XrXw==", + "dependencies": [ + "@turf/bbox", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/centroid@7.2.0": { + "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/circle@7.2.0": { + "integrity": "sha512-1AbqBYtXhstrHmnW6jhLwsv7TtmT0mW58Hvl1uZXEDM1NCVXIR50yDipIeQPjrCuJ/Zdg/91gU8+4GuDCAxBGA==", + "dependencies": [ + "@turf/destination", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/clean-coords@7.2.0": { + "integrity": "sha512-+5+J1+D7wW7O/RDXn46IfCHuX1gIV1pIAQNSA7lcDbr3HQITZj334C4mOGZLEcGbsiXtlHWZiBtm785Vg8i+QQ==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/clone@7.2.0": { + "integrity": "sha512-JlGUT+/5qoU5jqZmf6NMFIoLDY3O7jKd53Up+zbpJ2vzUp6QdwdNzwrsCeONhynWM13F0MVtPXH4AtdkrgFk4g==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/clusters-dbscan@7.2.0": { + "integrity": "sha512-VWVUuDreev56g3/BMlnq/81yzczqaz+NVTypN5CigGgP67e+u/CnijphiuhKjtjDd/MzGjXgEWBJc26Y6LYKAw==", + "dependencies": [ + "@turf/clone", + "@turf/distance", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "rbush@3.0.1", + "tslib@2.8.1" + ] + }, + "@turf/clusters-kmeans@7.2.0": { + "integrity": "sha512-BxQdK8jc8Mwm9yoClCYkktm4W004uiQGqb/i/6Y7a8xqgJITWDgTu/cy//wOxAWPk4xfe6MThjnqkszWW8JdyQ==", + "dependencies": [ + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "skmeans", + "tslib@2.8.1" + ] + }, + "@turf/clusters@7.2.0": { + "integrity": "sha512-sKOrIKHHtXAuTKNm2USnEct+6/MrgyzMW42deZ2YG2RRKWGaaxHMFU2Yw71Yk4DqStOqTIBQpIOdrRuSOwbuQw==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/collect@7.2.0": { + "integrity": "sha512-zRVGDlYS8Bx/Zz4vnEUyRg4dmqHhkDbW/nIUIJh657YqaMj1SFi4Iv2i9NbcurlUBDJFkpuOhCvvEvAdskJ8UA==", + "dependencies": [ + "@turf/bbox", + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@types/geojson", + "rbush@3.0.1", + "tslib@2.8.1" + ] + }, + "@turf/combine@7.2.0": { + "integrity": "sha512-VEjm3IvnbMt3IgeRIhCDhhQDbLqCU1/5uN1+j1u6fyA095pCizPThGp4f/COSzC3t1s/iiV+fHuDsB6DihHffQ==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/concave@7.2.0": { + "integrity": "sha512-cpaDDlumK762kdadexw5ZAB6g/h2pJdihZ+e65lbQVe3WukJHAANnIEeKsdFCuIyNKrwTz2gWu5ws+OpjP48Yw==", + "dependencies": [ + "@turf/clone", + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/tin", + "@types/geojson", + "topojson-client", + "topojson-server", + "tslib@2.8.1" + ] + }, + "@turf/convex@7.2.0": { + "integrity": "sha512-HsgHm+zHRE8yPCE/jBUtWFyaaBmpXcSlyHd5/xsMhSZRImFzRzBibaONWQo7xbKZMISC3Nc6BtUjDi/jEVbqyA==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "concaveman", + "tslib@2.8.1" + ] + }, + "@turf/destination@7.2.0": { + "integrity": "sha512-8DUxtOO0Fvrh1xclIUj3d9C5WS20D21F5E+j+X9Q+ju6fcM4huOqTg5ckV1DN2Pg8caABEc5HEZJnGch/5YnYQ==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/difference@7.2.0": { + "integrity": "sha512-NHKD1v3s8RX+9lOpvHJg6xRuJOKiY3qxHhz5/FmE0VgGqnCkE7OObqWZ5SsXG+Ckh0aafs5qKhmDdDV/gGi6JA==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "polyclip-ts", + "tslib@2.8.1" + ] + }, + "@turf/dissolve@7.2.0": { + "integrity": "sha512-gPG5TE3mAYuZqBut8tPYCKwi4hhx5Cq0ALoQMB9X0hrVtFIKrihrsj98XQM/5pL/UIpAxQfwisQvy6XaOFaoPA==", + "dependencies": [ + "@turf/flatten", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "polyclip-ts", + "tslib@2.8.1" + ] + }, + "@turf/distance-weight@7.2.0": { + "integrity": "sha512-NeoyV0fXDH+7nIoNtLjAoH9XL0AS1pmTIyDxEE6LryoDTsqjnuR0YQxIkLCCWDqECoqaOmmBqpeWONjX5BwWCg==", + "dependencies": [ + "@turf/centroid", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/distance@7.2.0": { + "integrity": "sha512-HBjjXIgEcD/wJYjv7/6OZj5yoky2oUvTtVeIAqO3lL80XRvoYmVg6vkOIu6NswkerwLDDNT9kl7+BFLJoHbh6Q==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/ellipse@7.2.0": { + "integrity": "sha512-/Y75S5hE2+xjnTw4dXpQ5r/Y2HPM4xrwkPRCCQRpuuboKdEvm42azYmh7isPnMnBTVcmGb9UmGKj0HHAbiwt1g==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/rhumb-destination", + "@turf/transform-rotate", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/envelope@7.2.0": { + "integrity": "sha512-xOMtDeNKHwUuDfzQeoSNmdabsP0/IgVDeyzitDe/8j9wTeW+MrKzVbGz7627PT3h6gsO+2nUv5asfKtUbmTyHA==", + "dependencies": [ + "@turf/bbox", + "@turf/bbox-polygon", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/explode@7.2.0": { + "integrity": "sha512-jyMXg93J1OI7/65SsLE1k9dfQD3JbcPNMi4/O3QR2Qb3BAs2039oFaSjtW+YqhMqVC4V3ZeKebMcJ8h9sK1n+A==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/flatten@7.2.0": { + "integrity": "sha512-q38Qsqr4l7mxp780zSdn0gp/WLBX+sa+gV6qIbDQ1HKCrrPK8QQJmNx7gk1xxEXVot6tq/WyAPysCQdX+kLmMA==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/flip@7.2.0": { + "integrity": "sha512-X0TQ0U/UYh4tyXdLO5itP1sO2HOvfrZC0fYSWmTfLDM14jEPkEK8PblofznfBygL+pIFtOS2is8FuVcp5XxYpQ==", + "dependencies": [ + "@turf/clone", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/geojson-rbush@7.2.0": { + "integrity": "sha512-ST8fLv+EwxVkDgsmhHggM0sPk2SfOHTZJkdgMXVFT7gB9o4lF8qk4y4lwvCCGIfFQAp2yv/PN5EaGMEKutk6xw==", + "dependencies": [ + "@turf/bbox", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "rbush@3.0.1" + ] + }, + "@turf/great-circle@7.2.0": { + "integrity": "sha512-n30OiADyOKHhor0aXNgYfXQYXO3UtsOKmhQsY1D89/Oh1nCIXG/1ZPlLL9ZoaRXXBTUBjh99a+K8029NQbGDhw==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson" + ] + }, + "@turf/helpers@7.2.0": { + "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", + "dependencies": [ + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/hex-grid@7.2.0": { + "integrity": "sha512-Yo2yUGxrTCQfmcVsSjDt0G3Veg8YD26WRd7etVPD9eirNNgXrIyZkbYA7zVV/qLeRWVmYIKRXg1USWl7ORQOGA==", + "dependencies": [ + "@turf/distance", + "@turf/helpers", + "@turf/intersect", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/interpolate@7.2.0": { + "integrity": "sha512-Ifgjm1SEo6XujuSAU6lpRMvoJ1SYTreil1Rf5WsaXj16BQJCedht/4FtWCTNhSWTwEz2motQ1WNrjTCuPG94xA==", + "dependencies": [ + "@turf/bbox", + "@turf/centroid", + "@turf/clone", + "@turf/distance", + "@turf/helpers", + "@turf/hex-grid", + "@turf/invariant", + "@turf/meta", + "@turf/point-grid", + "@turf/square-grid", + "@turf/triangle-grid", + "@types/geojson" + ] + }, + "@turf/intersect@7.2.0": { + "integrity": "sha512-81GMzKS9pKqLPa61qSlFxLFeAC8XbwyCQ9Qv4z6o5skWk1qmMUbEHeMqaGUTEzk+q2XyhZ0sju1FV4iLevQ/aw==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "polyclip-ts", + "tslib@2.8.1" + ] + }, + "@turf/invariant@7.2.0": { + "integrity": "sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/isobands@7.2.0": { + "integrity": "sha512-lYoHeRieFzpBp29Jh19QcDIb0E+dzo/K5uwZuNga4wxr6heNU0AfkD4ByAHYIXHtvmp4m/JpSKq/2N6h/zvBkg==", + "dependencies": [ + "@turf/area", + "@turf/bbox", + "@turf/boolean-point-in-polygon", + "@turf/explode", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "marchingsquares", + "tslib@2.8.1" + ] + }, + "@turf/isolines@7.2.0": { + "integrity": "sha512-4ZXKxvA/JKkxAXixXhN3UVza5FABsdYgOWXyYm3L5ryTPJVOYTVSSd9A+CAVlv9dZc3YdlsqMqLTXNOOre/kwg==", + "dependencies": [ + "@turf/bbox", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "marchingsquares", + "tslib@2.8.1" + ] + }, + "@turf/jsts@2.7.2": { + "integrity": "sha512-zAezGlwWHPyU0zxwcX2wQY3RkRpwuoBmhhNE9HY9kWhFDkCxZ3aWK5URKwa/SWKJbj9aztO+8vtdiBA28KVJFg==", + "dependencies": [ + "jsts" + ] + }, + "@turf/kinks@7.2.0": { + "integrity": "sha512-BtxDxGewJR0Q5WR9HKBSxZhirFX+GEH1rD7/EvgDsHS8e1Y5/vNQQUmXdURjdPa4StzaUBsWRU5T3A356gLbPA==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/length@7.2.0": { + "integrity": "sha512-LBmYN+iCgVtWNLsckVnpQIJENqIIPO63mogazMp23lrDGfWXu07zZQ9ZinJVO5xYurXNhc/QI2xxoqt2Xw90Ig==", + "dependencies": [ + "@turf/distance", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/line-arc@7.2.0": { + "integrity": "sha512-kfWzA5oYrTpslTg5fN50G04zSypiYQzjZv3FLjbZkk6kta5fo4JkERKjTeA8x4XNojb+pfmjMBB0yIh2w2dDRw==", + "dependencies": [ + "@turf/circle", + "@turf/destination", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/line-chunk@7.2.0": { + "integrity": "sha512-1ODyL5gETtWSL85MPI0lgp/78vl95M39gpeBxePXyDIqx8geDP9kXfAzctuKdxBoR4JmOVM3NT7Fz7h+IEkC+g==", + "dependencies": [ + "@turf/helpers", + "@turf/length", + "@turf/line-slice-along", + "@turf/meta", + "@types/geojson" + ] + }, + "@turf/line-intersect@7.2.0": { + "integrity": "sha512-GhCJVEkc8EmggNi85EuVLoXF5T5jNVxmhIetwppiVyJzMrwkYAkZSYB3IBFYGUUB9qiNFnTwungVSsBV/S8ZiA==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "sweepline-intersections", + "tslib@2.8.1" + ] + }, + "@turf/line-offset@7.2.0": { + "integrity": "sha512-1+OkYueDCbnEWzbfBh3taVr+3SyM2bal5jfnSEuDiLA6jnlScgr8tn3INo+zwrUkPFZPPAejL1swVyO5TjUahw==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson" + ] + }, + "@turf/line-overlap@7.2.0": { + "integrity": "sha512-NNn7/jg53+N10q2Kyt66bEDqN3101iW/1zA5FW7J6UbKApDFkByh+18YZq1of71kS6oUYplP86WkDp16LFpqqw==", + "dependencies": [ + "@turf/boolean-point-on-line", + "@turf/geojson-rbush", + "@turf/helpers", + "@turf/invariant", + "@turf/line-segment", + "@turf/meta", + "@turf/nearest-point-on-line", + "@types/geojson", + "fast-deep-equal", + "tslib@2.8.1" + ] + }, + "@turf/line-segment@7.2.0": { + "integrity": "sha512-E162rmTF9XjVN4rINJCd15AdQGCBlNqeWN3V0YI1vOUpZFNT2ii4SqEMCcH2d+5EheHLL8BWVwZoOsvHZbvaWA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/line-slice-along@7.2.0": { + "integrity": "sha512-4/gPgP0j5Rp+1prbhXqn7kIH/uZTmSgiubUnn67F8nb9zE+MhbRglhSlRYEZxAVkB7VrGwjyolCwvrROhjHp2A==", + "dependencies": [ + "@turf/bearing", + "@turf/destination", + "@turf/distance", + "@turf/helpers", + "@types/geojson" + ] + }, + "@turf/line-slice@7.2.0": { + "integrity": "sha512-bHotzZIaU1GPV3RMwttYpDrmcvb3X2i1g/WUttPZWtKrEo2VVAkoYdeZ2aFwtogERYS4quFdJ/TDzAtquBC8WQ==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/nearest-point-on-line", + "@types/geojson" + ] + }, + "@turf/line-split@7.2.0": { + "integrity": "sha512-yJTZR+c8CwoKqdW/aIs+iLbuFwAa3Yan+EOADFQuXXIUGps3bJUXx/38rmowNoZbHyP1np1+OtrotyHu5uBsfQ==", + "dependencies": [ + "@turf/bbox", + "@turf/geojson-rbush", + "@turf/helpers", + "@turf/invariant", + "@turf/line-intersect", + "@turf/line-segment", + "@turf/meta", + "@turf/nearest-point-on-line", + "@turf/square", + "@turf/truncate", + "@types/geojson" + ] + }, + "@turf/line-to-polygon@7.2.0": { + "integrity": "sha512-iKpJqc7EYc5NvlD4KaqrKKO6mXR7YWO/YwtW60E2FnsF/blnsy9OfAOcilYHgH3S/V/TT0VedC7DW7Kgjy2EIA==", + "dependencies": [ + "@turf/bbox", + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/mask@7.2.0": { + "integrity": "sha512-ulJ6dQqXC0wrjIoqFViXuMUdIPX5Q6GPViZ3kGfeVijvlLM7kTFBsZiPQwALSr5nTQg4Ppf3FD0Jmg8IErPrgA==", + "dependencies": [ + "@turf/clone", + "@turf/helpers", + "@types/geojson", + "polyclip-ts", + "tslib@2.8.1" + ] + }, + "@turf/meta@7.2.0": { + "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", + "dependencies": [ + "@turf/helpers", + "@types/geojson" + ] + }, + "@turf/midpoint@7.2.0": { + "integrity": "sha512-AMn5S9aSrbXdE+Q4Rj+T5nLdpfpn+mfzqIaEKkYI021HC0vb22HyhQHsQbSeX+AWcS4CjD1hFsYVcgKI+5qCfw==", + "dependencies": [ + "@turf/bearing", + "@turf/destination", + "@turf/distance", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/moran-index@7.2.0": { + "integrity": "sha512-Aexh1EmXVPJhApr9grrd120vbalIthcIsQ3OAN2Tqwf+eExHXArJEJqGBo9IZiQbIpFJeftt/OvUvlI8BeO1bA==", + "dependencies": [ + "@turf/distance-weight", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/nearest-neighbor-analysis@7.2.0": { + "integrity": "sha512-LmP/crXb7gilgsL0wL9hsygqc537W/a1W5r9XBKJT4SKdqjoXX5APJatJfd3nwXbRIqwDH0cDA9/YyFjBPlKnA==", + "dependencies": [ + "@turf/area", + "@turf/bbox", + "@turf/bbox-polygon", + "@turf/centroid", + "@turf/distance", + "@turf/helpers", + "@turf/meta", + "@turf/nearest-point", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/nearest-point-on-line@7.2.0": { + "integrity": "sha512-UOhAeoDPVewBQV+PWg1YTMQcYpJsIqfW5+EuZ5vJl60XwUa0+kqB/eVfSLNXmHENjKKIlEt9Oy9HIDF4VeWmXA==", + "dependencies": [ + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/nearest-point-to-line@7.2.0": { + "integrity": "sha512-EorU7Qj30A7nAjh++KF/eTPDlzwuuV4neBz7tmSTB21HKuXZAR0upJsx6M2X1CSyGEgNsbFB0ivNKIvymRTKBw==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/point-to-line-distance", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/nearest-point@7.2.0": { + "integrity": "sha512-0wmsqXZ8CGw4QKeZmS+NdjYTqCMC+HXZvM3XAQIU6k6laNLqjad2oS4nDrtcRs/nWDvcj1CR+Io7OiQ6sbpn5Q==", + "dependencies": [ + "@turf/clone", + "@turf/distance", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/planepoint@7.2.0": { + "integrity": "sha512-8Vno01tvi5gThUEKBQ46CmlEKDAwVpkl7stOPFvJYlA1oywjAL4PsmgwjXgleZuFtXQUPBNgv5a42Pf438XP4g==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/point-grid@7.2.0": { + "integrity": "sha512-ai7lwBV2FREPW3XiUNohT4opC1hd6+F56qZe20xYhCTkTD9diWjXHiNudQPSmVAUjgMzQGasblQQqvOdL+bJ3Q==", + "dependencies": [ + "@turf/boolean-within", + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/point-on-feature@7.2.0": { + "integrity": "sha512-ksoYoLO9WtJ/qI8VI9ltF+2ZjLWrAjZNsCsu8F7nyGeCh4I8opjf4qVLytFG44XA2qI5yc6iXDpyv0sshvP82Q==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/center", + "@turf/explode", + "@turf/helpers", + "@turf/nearest-point", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/point-to-line-distance@7.2.0": { + "integrity": "sha512-fB9Rdnb5w5+t76Gho2dYDkGe20eRrFk8CXi4v1+l1PC8YyLXO+x+l3TrtT8HzL/dVaZeepO6WUIsIw3ditTOPg==", + "dependencies": [ + "@turf/bearing", + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/nearest-point-on-line", + "@turf/projection", + "@turf/rhumb-bearing", + "@turf/rhumb-distance", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/point-to-polygon-distance@7.2.0": { + "integrity": "sha512-w+WYuINgTiFjoZemQwOaQSje/8Kq+uqJOynvx7+gleQPHyWQ3VtTodtV4LwzVzXz8Sf7Mngx1Jcp2SNai5CJYA==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/point-to-line-distance", + "@turf/polygon-to-line", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/points-within-polygon@7.2.0": { + "integrity": "sha512-jRKp8/mWNMzA+hKlQhxci97H5nOio9tp14R2SzpvkOt+cswxl+NqTEi1hDd2XetA7tjU0TSoNjEgVY8FfA0S6w==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/polygon-smooth@7.2.0": { + "integrity": "sha512-KCp9wF2IEynvGXVhySR8oQ2razKP0zwg99K+fuClP21pSKCFjAPaihPEYq6e8uI/1J7ibjL5++6EMl+LrUTrLg==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/polygon-tangents@7.2.0": { + "integrity": "sha512-AHUUPmOjiQDrtP/ODXukHBlUG0C/9I1je7zz50OTfl2ZDOdEqFJQC3RyNELwq07grTXZvg5TS5wYx/Y7nsm47g==", + "dependencies": [ + "@turf/bbox", + "@turf/boolean-within", + "@turf/explode", + "@turf/helpers", + "@turf/invariant", + "@turf/nearest-point", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/polygon-to-line@7.2.0": { + "integrity": "sha512-9jeTN3LiJ933I5sd4K0kwkcivOYXXm1emk0dHorwXeSFSHF+nlYesEW3Hd889wb9lZd7/SVLMUeX/h39mX+vCA==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/polygonize@7.2.0": { + "integrity": "sha512-U9v+lBhUPDv+nsg/VcScdiqCB59afO6CHDGrwIl2+5i6Ve+/KQKjpTV/R+NqoC1iMXAEq3brY6HY8Ukp/pUWng==", + "dependencies": [ + "@turf/boolean-point-in-polygon", + "@turf/envelope", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" ] }, - "@tailwindcss/node@4.0.9": { - "integrity": "sha512-tOJvdI7XfJbARYhxX+0RArAhmuDcczTC46DGCEziqxzzbIaPnfYaIyRT31n4u8lROrsO7Q6u/K9bmQHL2uL1bQ==", + "@turf/projection@7.2.0": { + "integrity": "sha512-/qke5vJScv8Mu7a+fU3RSChBRijE6EVuFHU3RYihMuYm04Vw8dBMIs0enEpoq0ke/IjSbleIrGQNZIMRX9EwZQ==", "dependencies": [ - "enhanced-resolve", - "jiti", - "tailwindcss" + "@turf/clone", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" ] }, - "@tailwindcss/oxide-android-arm64@4.0.9": { - "integrity": "sha512-YBgy6+2flE/8dbtrdotVInhMVIxnHJPbAwa7U1gX4l2ThUIaPUp18LjB9wEH8wAGMBZUb//SzLtdXXNBHPUl6Q==" - }, - "@tailwindcss/oxide-darwin-arm64@4.0.9": { - "integrity": "sha512-pWdl4J2dIHXALgy2jVkwKBmtEb73kqIfMpYmcgESr7oPQ+lbcQ4+tlPeVXaSAmang+vglAfFpXQCOvs/aGSqlw==" - }, - "@tailwindcss/oxide-darwin-x64@4.0.9": { - "integrity": "sha512-4Dq3lKp0/C7vrRSkNPtBGVebEyWt9QPPlQctxJ0H3MDyiQYvzVYf8jKow7h5QkWNe8hbatEqljMj/Y0M+ERYJg==" + "@turf/quadrat-analysis@7.2.0": { + "integrity": "sha512-fDQh3+ldYNxUqS6QYlvJ7GZLlCeDZR6tD3ikdYtOsSemwW1n/4gm2xcgWJqy3Y0uszBwxc13IGGY7NGEjHA+0w==", + "dependencies": [ + "@turf/area", + "@turf/bbox", + "@turf/bbox-polygon", + "@turf/centroid", + "@turf/helpers", + "@turf/invariant", + "@turf/point-grid", + "@turf/random", + "@turf/square-grid", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-freebsd-x64@4.0.9": { - "integrity": "sha512-k7U1RwRODta8x0uealtVt3RoWAWqA+D5FAOsvVGpYoI6ObgmnzqWW6pnVwz70tL8UZ/QXjeMyiICXyjzB6OGtQ==" + "@turf/random@7.2.0": { + "integrity": "sha512-fNXs5mOeXsrirliw84S8UCNkpm4RMNbefPNsuCTfZEXhcr1MuHMzq4JWKb4FweMdN1Yx2l/xcytkO0s71cJ50w==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-linux-arm-gnueabihf@4.0.9": { - "integrity": "sha512-NDDjVweHz2zo4j+oS8y3KwKL5wGCZoXGA9ruJM982uVJLdsF8/1AeKvUwKRlMBpxHt1EdWJSAh8a0Mfhl28GlQ==" + "@turf/rectangle-grid@7.2.0": { + "integrity": "sha512-f0o5ifvy0Ml/nHDJzMNcuSk4h11aa3BfvQNnYQhLpuTQu03j/ICZNlzKTLxwjcUqvxADUifty7Z9CX5W6zky4A==", + "dependencies": [ + "@turf/boolean-intersects", + "@turf/distance", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-linux-arm64-gnu@4.0.9": { - "integrity": "sha512-jk90UZ0jzJl3Dy1BhuFfRZ2KP9wVKMXPjmCtY4U6fF2LvrjP5gWFJj5VHzfzHonJexjrGe1lMzgtjriuZkxagg==" + "@turf/rewind@7.2.0": { + "integrity": "sha512-SZpRAZiZsE22+HVz6pEID+ST25vOdpAMGk5NO1JeqzhpMALIkIGnkG+xnun2CfYHz7wv8/Z0ADiAvei9rkcQYA==", + "dependencies": [ + "@turf/boolean-clockwise", + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-linux-arm64-musl@4.0.9": { - "integrity": "sha512-3eMjyTC6HBxh9nRgOHzrc96PYh1/jWOwHZ3Kk0JN0Kl25BJ80Lj9HEvvwVDNTgPg154LdICwuFLuhfgH9DULmg==" + "@turf/rhumb-bearing@7.2.0": { + "integrity": "sha512-jbdexlrR8X2ZauUciHx3tRwG+BXoMXke4B8p8/IgDlAfIrVdzAxSQN89FMzIKnjJ/kdLjo9bFGvb92bu31Etug==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-linux-x64-gnu@4.0.9": { - "integrity": "sha512-v0D8WqI/c3WpWH1kq/HP0J899ATLdGZmENa2/emmNjubT0sWtEke9W9+wXeEoACuGAhF9i3PO5MeyditpDCiWQ==" + "@turf/rhumb-destination@7.2.0": { + "integrity": "sha512-U9OLgLAHlH4Wfx3fBZf3jvnkDjdTcfRan5eI7VPV1+fQWkOteATpzkiRjCvSYK575GljVwWBjkKca8LziGWitQ==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-linux-x64-musl@4.0.9": { - "integrity": "sha512-Kvp0TCkfeXyeehqLJr7otsc4hd/BUPfcIGrQiwsTVCfaMfjQZCG7DjI+9/QqPZha8YapLA9UoIcUILRYO7NE1Q==" + "@turf/rhumb-distance@7.2.0": { + "integrity": "sha512-NsijTPON1yOc9tirRPEQQuJ5aQi7pREsqchQquaYKbHNWsexZjcDi4wnw2kM3Si4XjmgynT+2f7aXH7FHarHzw==", + "dependencies": [ + "@turf/helpers", + "@turf/invariant", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-win32-arm64-msvc@4.0.9": { - "integrity": "sha512-m3+60T/7YvWekajNq/eexjhV8z10rswcz4BC9bioJ7YaN+7K8W2AmLmG0B79H14m6UHE571qB0XsPus4n0QVgQ==" + "@turf/sample@7.2.0": { + "integrity": "sha512-f+ZbcbQJ9glQ/F26re8LadxO0ORafy298EJZe6XtbctRTJrNus6UNAsl8+GYXFqMnXM22tbTAznnJX3ZiWNorA==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide-win32-x64-msvc@4.0.9": { - "integrity": "sha512-dpc05mSlqkwVNOUjGu/ZXd5U1XNch1kHFJ4/cHkZFvaW1RzbHmRt24gvM8/HC6IirMxNarzVw4IXVtvrOoZtxA==" + "@turf/sector@7.2.0": { + "integrity": "sha512-zL06MjbbMG4DdpiNz+Q9Ax8jsCekt3R76uxeWShulAGkyDB5smdBOUDoRwxn05UX7l4kKv4Ucq2imQXhxKFd1w==", + "dependencies": [ + "@turf/circle", + "@turf/helpers", + "@turf/invariant", + "@turf/line-arc", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] }, - "@tailwindcss/oxide@4.0.9": { - "integrity": "sha512-eLizHmXFqHswJONwfqi/WZjtmWZpIalpvMlNhTM99/bkHtUs6IqgI1XQ0/W5eO2HiRQcIlXUogI2ycvKhVLNcA==", + "@turf/shortest-path@7.2.0": { + "integrity": "sha512-6fpx8feZ2jMSaeRaFdqFShGWkNb+veUOeyLFSHA/aRD9n/e9F2pWZoRbQWKbKTpcKFJ2FnDEqCZnh/GrcAsqWA==", "dependencies": [ - "@tailwindcss/oxide-android-arm64", - "@tailwindcss/oxide-darwin-arm64", - "@tailwindcss/oxide-darwin-x64", - "@tailwindcss/oxide-freebsd-x64", - "@tailwindcss/oxide-linux-arm-gnueabihf", - "@tailwindcss/oxide-linux-arm64-gnu", - "@tailwindcss/oxide-linux-arm64-musl", - "@tailwindcss/oxide-linux-x64-gnu", - "@tailwindcss/oxide-linux-x64-musl", - "@tailwindcss/oxide-win32-arm64-msvc", - "@tailwindcss/oxide-win32-x64-msvc" + "@turf/bbox", + "@turf/bbox-polygon", + "@turf/boolean-point-in-polygon", + "@turf/clean-coords", + "@turf/distance", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/transform-scale", + "@types/geojson", + "tslib@2.8.1" ] }, - "@tailwindcss/postcss@4.0.9": { - "integrity": "sha512-BT/E+pdMqulavEAVM5NCpxmGEwHiLDPpkmg/c/X25ZBW+izTe+aZ+v1gf/HXTrihRoCxrUp5U4YyHsBTzspQKQ==", + "@turf/simplify@7.2.0": { + "integrity": "sha512-9YHIfSc8BXQfi5IvEMbCeQYqNch0UawIGwbboJaoV8rodhtk6kKV2wrpXdGqk/6Thg6/RWvChJFKVVTjVrULyQ==", "dependencies": [ - "@alloc/quick-lru", - "@tailwindcss/node", - "@tailwindcss/oxide", - "lightningcss", - "postcss", - "tailwindcss" + "@turf/clean-coords", + "@turf/clone", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" ] }, - "@testing-library/dom@10.4.0": { - "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", + "@turf/square-grid@7.2.0": { + "integrity": "sha512-EmzGXa90hz+tiCOs9wX+Lak6pH0Vghb7QuX6KZej+pmWi3Yz7vdvQLmy/wuN048+wSkD5c8WUo/kTeNDe7GnmA==", "dependencies": [ - "@babel/code-frame", - "@babel/runtime", - "@types/aria-query", - "aria-query", - "chalk@4.1.2", - "dom-accessibility-api@0.5.16", - "lz-string", - "pretty-format" + "@turf/helpers", + "@turf/rectangle-grid", + "@types/geojson", + "tslib@2.8.1" ] }, - "@testing-library/jest-dom@6.6.3": { - "integrity": "sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==", + "@turf/square@7.2.0": { + "integrity": "sha512-9pMoAGFvqzCDOlO9IRSSBCGXKbl8EwMx6xRRBMKdZgpS0mZgfm9xiptMmx/t1m4qqHIlb/N+3MUF7iMBx6upcA==", "dependencies": [ - "@adobe/css-tools", - "aria-query", - "chalk@3.0.0", - "css.escape", - "dom-accessibility-api@0.6.3", - "lodash", - "redent" + "@turf/distance", + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" ] }, - "@testing-library/react@16.2.0_@testing-library+dom@10.4.0_@types+react@19.0.10_@types+react-dom@19.0.4__@types+react@19.0.10_react@19.0.0_react-dom@19.0.0__react@19.0.0": { - "integrity": "sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ==", + "@turf/standard-deviational-ellipse@7.2.0": { + "integrity": "sha512-+uC0pR2nRjm90JvMXe/2xOCZsYV2II1ZZ2zmWcBWv6bcFXBspcxk2QfCC3k0bj6jDapELzoQgnn3cG5lbdQV2w==", "dependencies": [ - "@babel/runtime", - "@testing-library/dom", - "@types/react", - "@types/react-dom", - "react", - "react-dom" + "@turf/center-mean", + "@turf/ellipse", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/points-within-polygon", + "@types/geojson", + "tslib@2.8.1" ] }, - "@testing-library/user-event@14.6.1_@testing-library+dom@10.4.0": { - "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", + "@turf/tag@7.2.0": { + "integrity": "sha512-TAFvsbp5TCBqXue8ui+CtcLsPZ6NPC88L8Ad6Hb/R6VAi21qe0U42WJHQYXzWmtThoTNwxi+oKSeFbRDsr0FIA==", "dependencies": [ - "@testing-library/dom" + "@turf/boolean-point-in-polygon", + "@turf/clone", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/tesselate@7.2.0": { + "integrity": "sha512-zHGcG85aOJJu1seCm+CYTJ3UempX4Xtyt669vFG6Hbr/Hc7ii6STQ2ysFr7lJwFtU9uyYhphVrrgwIqwglvI/Q==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "earcut@2.2.4", + "tslib@2.8.1" + ] + }, + "@turf/tin@7.2.0": { + "integrity": "sha512-y24Vt3oeE6ZXvyLJamP0Ke02rPlDGE9gF7OFADnR0mT+2uectb0UTIBC3kKzON80TEAlA3GXpKFkCW5Fo/O/Kg==", + "dependencies": [ + "@turf/helpers", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/transform-rotate@7.2.0": { + "integrity": "sha512-EMCj0Zqy3cF9d3mGRqDlYnX2ZBXe3LgT+piDR0EuF5c5sjuKErcFcaBIsn/lg1gp4xCNZFinkZ3dsFfgGHf6fw==", + "dependencies": [ + "@turf/centroid", + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/rhumb-bearing", + "@turf/rhumb-destination", + "@turf/rhumb-distance", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/transform-scale@7.2.0": { + "integrity": "sha512-HYB+pw938eeI8s1/zSWFy6hq+t38fuUaBb0jJsZB1K9zQ1WjEYpPvKF/0//80zNPlyxLv3cOkeBucso3hzI07A==", + "dependencies": [ + "@turf/bbox", + "@turf/center", + "@turf/centroid", + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/rhumb-bearing", + "@turf/rhumb-destination", + "@turf/rhumb-distance", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/transform-translate@7.2.0": { + "integrity": "sha512-zAglR8MKCqkzDTjGMIQgbg/f+Q3XcKVzr9cELw5l9CrS1a0VTSDtBZLDm0kWx0ankwtam7ZmI2jXyuQWT8Gbug==", + "dependencies": [ + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@turf/meta", + "@turf/rhumb-destination", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/triangle-grid@7.2.0": { + "integrity": "sha512-4gcAqWKh9hg6PC5nNSb9VWyLgl821cwf9yR9yEzQhEFfwYL/pZONBWCO1cwVF23vSYMSMm+/TwqxH4emxaArfw==", + "dependencies": [ + "@turf/distance", + "@turf/helpers", + "@turf/intersect", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/truncate@7.2.0": { + "integrity": "sha512-jyFzxYbPugK4XjV5V/k6Xr3taBjjvo210IbPHJXw0Zh7Y6sF+hGxeRVtSuZ9VP/6oRyqAOHKUrze+OOkPqBgUg==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/turf@7.2.0": { + "integrity": "sha512-G1kKBu4hYgoNoRJgnpJohNuS7bLnoWHZ2G/4wUMym5xOSiYah6carzdTEsMoTsauyi7ilByWHx5UHwbjjCVcBw==", + "dependencies": [ + "@turf/along", + "@turf/angle", + "@turf/area", + "@turf/bbox", + "@turf/bbox-clip", + "@turf/bbox-polygon", + "@turf/bearing", + "@turf/bezier-spline", + "@turf/boolean-clockwise", + "@turf/boolean-concave", + "@turf/boolean-contains", + "@turf/boolean-crosses", + "@turf/boolean-disjoint", + "@turf/boolean-equal", + "@turf/boolean-intersects", + "@turf/boolean-overlap", + "@turf/boolean-parallel", + "@turf/boolean-point-in-polygon", + "@turf/boolean-point-on-line", + "@turf/boolean-touches", + "@turf/boolean-valid", + "@turf/boolean-within", + "@turf/buffer", + "@turf/center", + "@turf/center-mean", + "@turf/center-median", + "@turf/center-of-mass", + "@turf/centroid", + "@turf/circle", + "@turf/clean-coords", + "@turf/clone", + "@turf/clusters", + "@turf/clusters-dbscan", + "@turf/clusters-kmeans", + "@turf/collect", + "@turf/combine", + "@turf/concave", + "@turf/convex", + "@turf/destination", + "@turf/difference", + "@turf/dissolve", + "@turf/distance", + "@turf/distance-weight", + "@turf/ellipse", + "@turf/envelope", + "@turf/explode", + "@turf/flatten", + "@turf/flip", + "@turf/geojson-rbush", + "@turf/great-circle", + "@turf/helpers", + "@turf/hex-grid", + "@turf/interpolate", + "@turf/intersect", + "@turf/invariant", + "@turf/isobands", + "@turf/isolines", + "@turf/kinks", + "@turf/length", + "@turf/line-arc", + "@turf/line-chunk", + "@turf/line-intersect", + "@turf/line-offset", + "@turf/line-overlap", + "@turf/line-segment", + "@turf/line-slice", + "@turf/line-slice-along", + "@turf/line-split", + "@turf/line-to-polygon", + "@turf/mask", + "@turf/meta", + "@turf/midpoint", + "@turf/moran-index", + "@turf/nearest-neighbor-analysis", + "@turf/nearest-point", + "@turf/nearest-point-on-line", + "@turf/nearest-point-to-line", + "@turf/planepoint", + "@turf/point-grid", + "@turf/point-on-feature", + "@turf/point-to-line-distance", + "@turf/point-to-polygon-distance", + "@turf/points-within-polygon", + "@turf/polygon-smooth", + "@turf/polygon-tangents", + "@turf/polygon-to-line", + "@turf/polygonize", + "@turf/projection", + "@turf/quadrat-analysis", + "@turf/random", + "@turf/rectangle-grid", + "@turf/rewind", + "@turf/rhumb-bearing", + "@turf/rhumb-destination", + "@turf/rhumb-distance", + "@turf/sample", + "@turf/sector", + "@turf/shortest-path", + "@turf/simplify", + "@turf/square", + "@turf/square-grid", + "@turf/standard-deviational-ellipse", + "@turf/tag", + "@turf/tesselate", + "@turf/tin", + "@turf/transform-rotate", + "@turf/transform-scale", + "@turf/transform-translate", + "@turf/triangle-grid", + "@turf/truncate", + "@turf/union", + "@turf/unkink-polygon", + "@turf/voronoi", + "@types/geojson", + "tslib@2.8.1" + ] + }, + "@turf/union@7.2.0": { + "integrity": "sha512-Xex/cfKSmH0RZRWSJl4RLlhSmEALVewywiEXcu0aIxNbuZGTcpNoI0h4oLFrE/fUd0iBGFg/EGLXRL3zTfpg6g==", + "dependencies": [ + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "polyclip-ts", + "tslib@2.8.1" + ] + }, + "@turf/unkink-polygon@7.2.0": { + "integrity": "sha512-dFPfzlIgkEr15z6oXVxTSWshWi51HeITGVFtl1GAKGMtiXJx1uMqnfRsvljqEjaQu/4AzG1QAp3b+EkSklQSiQ==", + "dependencies": [ + "@turf/area", + "@turf/boolean-point-in-polygon", + "@turf/helpers", + "@turf/meta", + "@types/geojson", + "rbush@3.0.1", + "tslib@2.8.1" + ] + }, + "@turf/voronoi@7.2.0": { + "integrity": "sha512-3K6N0LtJsWTXxPb/5N2qD9e8f4q8+tjTbGV3lE3v8x06iCnNlnuJnqM5NZNPpvgvCatecBkhClO3/3RndE61Fw==", + "dependencies": [ + "@turf/clone", + "@turf/helpers", + "@turf/invariant", + "@types/d3-voronoi", + "@types/geojson", + "d3-voronoi", + "tslib@2.8.1" ] }, "@types/aria-query@5.0.4": { @@ -1236,6 +3297,9 @@ "@types/har-format" ] }, + "@types/d3-voronoi@1.1.12": { + "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==" + }, "@types/estree@0.0.39": { "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" }, @@ -1251,26 +3315,49 @@ "@types/filewriter@0.0.33": { "integrity": "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==" }, + "@types/geojson-vt@3.2.5": { + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", + "dependencies": [ + "@types/geojson" + ] + }, + "@types/geojson@7946.0.16": { + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" + }, "@types/har-format@1.2.16": { "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==" }, "@types/js-cookie@3.0.6": { "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==" }, - "@types/node@22.13.8": { - "integrity": "sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==", + "@types/mapbox__point-geometry@0.1.4": { + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" + }, + "@types/mapbox__vector-tile@1.3.4": { + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "dependencies": [ + "@types/geojson", + "@types/mapbox__point-geometry", + "@types/pbf" + ] + }, + "@types/node@22.13.13": { + "integrity": "sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==", "dependencies": [ "undici-types" ] }, - "@types/react-dom@19.0.4_@types+react@19.0.10": { + "@types/pbf@3.0.5": { + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + }, + "@types/react-dom@19.0.4_@types+react@19.0.12": { "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==", "dependencies": [ "@types/react" ] }, - "@types/react@19.0.10": { - "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "@types/react@19.0.12": { + "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", "dependencies": [ "csstype" ] @@ -1281,16 +3368,41 @@ "@types/serviceworker@0.0.123": { "integrity": "sha512-c6ynzmpJwqKTkMHDLonE+EStBqTHJqiR+1RsDd40K3YjglABm/C6mZO7xn25g5WldsgxfGHGaKa3IXRnig9c0A==" }, + "@types/supercluster@7.1.3": { + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", + "dependencies": [ + "@types/geojson" + ] + }, "@types/trusted-types@2.0.7": { "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, + "@types/validator@13.12.2": { + "integrity": "sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==" + }, "@types/w3c-web-serial@1.0.8": { "integrity": "sha512-QQOT+bxQJhRGXoZDZGLs3ksLud1dMNnMiSQtBA0w8KXvLpXX4oM4TZb6J0GgJ8UbCaHo5s9/4VQT8uXy9JER2A==" }, "@types/web-bluetooth@0.0.21": { "integrity": "sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==" }, - "@vitejs/plugin-react@4.3.4_vite@6.2.3__@types+node@22.13.8_@babel+core@7.26.10_@types+node@22.13.8": { + "@vis.gl/react-mapbox@8.0.1_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-s/OokvgK1T43Ev2/4hj21C0DKrf79nIigBCdYPtAkEX88qGLRQ5t5zCRqg5Zl+44xXfVxcVpX2/vWUKd9oYGKQ==", + "dependencies": [ + "react", + "react-dom" + ] + }, + "@vis.gl/react-maplibre@8.0.1_maplibre-gl@5.1.1_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-IFguo7DKIDZ9U9uRI4thZRfc5aTHEH4lWlIjedBeCpLeMm7wdrqtU2JshyEQt8dDO85kkEE7CbrtjMx5MplaoA==", + "dependencies": [ + "@maplibre/maplibre-gl-style-spec@19.3.3", + "maplibre-gl", + "react", + "react-dom" + ] + }, + "@vitejs/plugin-react@4.3.4_vite@6.2.3__@types+node@22.13.13_@babel+core@7.26.10_@types+node@22.13.13": { "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", "dependencies": [ "@babel/core", @@ -1310,7 +3422,7 @@ "tinyrainbow" ] }, - "@vitest/mocker@3.0.9_vite@6.2.3__@types+node@22.13.8_@types+node@22.13.8": { + "@vitest/mocker@3.0.9_vite@6.2.3__@types+node@22.13.13_@types+node@22.13.13": { "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==", "dependencies": [ "@vitest/spy", @@ -1384,12 +3496,24 @@ "ansi-styles@6.2.1": { "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" }, + "aria-hidden@1.2.4": { + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": [ + "tslib@2.8.1" + ] + }, "aria-query@5.3.0": { "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": [ "dequal" ] }, + "aria-query@5.3.2": { + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==" + }, + "arr-union@3.1.0": { + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==" + }, "array-buffer-byte-length@1.0.2": { "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dependencies": [ @@ -1409,9 +3533,30 @@ "is-array-buffer" ] }, + "asn1.js@4.10.1": { + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dependencies": [ + "bn.js@4.12.1", + "inherits", + "minimalistic-assert" + ] + }, + "assert@2.1.0": { + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dependencies": [ + "call-bind", + "is-nan", + "object-is", + "object.assign", + "util" + ] + }, "assertion-error@2.0.1": { "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==" }, + "assign-symbols@1.0.0": { + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==" + }, "async-function@1.0.0": { "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==" }, @@ -1421,8 +3566,8 @@ "at-least-node@1.0.0": { "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "autoprefixer@10.4.20_postcss@8.5.3": { - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "autoprefixer@10.4.21_postcss@8.5.3": { + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dependencies": [ "browserslist", "caniuse-lite", @@ -1469,6 +3614,15 @@ "base64-js@1.5.1": { "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, + "bignumber.js@9.1.2": { + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==" + }, + "bn.js@4.12.1": { + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" + }, + "bn.js@5.2.1": { + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, "brace-expansion@1.1.11": { "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": [ @@ -1482,6 +3636,72 @@ "balanced-match" ] }, + "brorand@1.1.0": { + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browser-resolve@2.0.0": { + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dependencies": [ + "resolve" + ] + }, + "browserify-aes@1.2.0": { + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dependencies": [ + "buffer-xor", + "cipher-base", + "create-hash", + "evp_bytestokey", + "inherits", + "safe-buffer@5.2.1" + ] + }, + "browserify-cipher@1.0.1": { + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dependencies": [ + "browserify-aes", + "browserify-des", + "evp_bytestokey" + ] + }, + "browserify-des@1.0.2": { + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dependencies": [ + "cipher-base", + "des.js", + "inherits", + "safe-buffer@5.2.1" + ] + }, + "browserify-rsa@4.1.1": { + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "dependencies": [ + "bn.js@5.2.1", + "randombytes", + "safe-buffer@5.2.1" + ] + }, + "browserify-sign@4.2.3": { + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "dependencies": [ + "bn.js@5.2.1", + "browserify-rsa", + "create-hash", + "create-hmac", + "elliptic", + "hash-base", + "inherits", + "parse-asn1", + "readable-stream@2.3.8", + "safe-buffer@5.2.1" + ] + }, + "browserify-zlib@0.2.0": { + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": [ + "pako" + ] + }, "browserslist@4.24.4": { "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dependencies": [ @@ -1494,6 +3714,32 @@ "buffer-from@1.1.2": { "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, + "buffer-xor@1.0.3": { + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, + "buffer@5.7.1": { + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dependencies": [ + "base64-js", + "ieee754" + ] + }, + "builtin-status-codes@3.0.0": { + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, + "bytewise-core@1.2.3": { + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "dependencies": [ + "typewise-core" + ] + }, + "bytewise@1.1.0": { + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "dependencies": [ + "bytewise-core", + "typewise" + ] + }, "cac@6.7.14": { "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==" }, @@ -1520,8 +3766,8 @@ "get-intrinsic" ] }, - "caniuse-lite@1.0.30001701": { - "integrity": "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw==" + "caniuse-lite@1.0.30001707": { + "integrity": "sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==" }, "chai@5.2.0": { "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", @@ -1553,6 +3799,41 @@ "chownr@3.0.0": { "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" }, + "cipher-base@1.0.6": { + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "dependencies": [ + "inherits", + "safe-buffer@5.2.1" + ] + }, + "class-validator@0.14.1": { + "integrity": "sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==", + "dependencies": [ + "@types/validator", + "libphonenumber-js", + "validator" + ] + }, + "class-variance-authority@0.7.1": { + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": [ + "clsx" + ] + }, + "clsx@2.1.1": { + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, + "cmdk@1.1.1_react@19.0.0_react-dom@19.0.0__react@19.0.0_@types+react@19.0.12_@types+react-dom@19.0.4__@types+react@19.0.12": { + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "dependencies": [ + "@radix-ui/react-compose-refs", + "@radix-ui/react-dialog", + "@radix-ui/react-id", + "@radix-ui/react-primitive", + "react", + "react-dom" + ] + }, "color-convert@2.0.1": { "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": [ @@ -1574,6 +3855,21 @@ "concat-map@0.0.1": { "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "concaveman@1.2.1": { + "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", + "dependencies": [ + "point-in-polygon", + "rbush@3.0.1", + "robust-predicates@2.0.4", + "tinyqueue@2.0.3" + ] + }, + "console-browserify@1.2.0": { + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "constants-browserify@1.0.0": { + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, "convert-source-map@2.0.0": { "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, @@ -1586,23 +3882,92 @@ "core-util-is@1.0.3": { "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, + "crc@4.3.2": { + "integrity": "sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==" + }, + "create-ecdh@4.0.4": { + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dependencies": [ + "bn.js@4.12.1", + "elliptic" + ] + }, + "create-hash@1.2.0": { + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dependencies": [ + "cipher-base", + "inherits", + "md5.js", + "ripemd160", + "sha.js" + ] + }, + "create-hmac@1.1.7": { + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dependencies": [ + "cipher-base", + "create-hash", + "inherits", + "ripemd160", + "safe-buffer@5.2.1", + "sha.js" + ] + }, + "create-require@1.1.1": { + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, "cross-spawn@7.0.6": { "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": [ "path-key", "shebang-command", - "which" + "which@2.0.2" + ] + }, + "crypto-browserify@3.12.1": { + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "dependencies": [ + "browserify-cipher", + "browserify-sign", + "create-ecdh", + "create-hash", + "create-hmac", + "diffie-hellman", + "hash-base", + "inherits", + "pbkdf2", + "public-encrypt", + "randombytes", + "randomfill" ] }, "crypto-random-string@2.0.0": { "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" }, + "crypto-random-string@5.0.0": { + "integrity": "sha512-KWjTXWwxFd6a94m5CdRGW/t82Tr8DoBc9dNnPCAbFI1EBweN6v1tv8y4Y1m7ndkp/nkIBRxUxAzpaBnR2k3bcQ==", + "dependencies": [ + "type-fest@2.19.0" + ] + }, "css.escape@1.5.1": { "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==" }, "csstype@3.1.3": { "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, + "d3-array@1.2.4": { + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-geo@1.7.1": { + "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", + "dependencies": [ + "d3-array" + ] + }, + "d3-voronoi@1.1.2": { + "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" + }, "data-view-buffer@1.0.2": { "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dependencies": [ @@ -1658,8 +4023,26 @@ "dequal@2.0.3": { "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" }, - "detect-libc@1.0.3": { - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + "des.js@1.1.0": { + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dependencies": [ + "inherits", + "minimalistic-assert" + ] + }, + "detect-libc@2.0.3": { + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==" + }, + "detect-node-es@1.1.0": { + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "diffie-hellman@5.0.3": { + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dependencies": [ + "bn.js@4.12.1", + "miller-rabin", + "randombytes" + ] }, "dom-accessibility-api@0.5.16": { "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" @@ -1667,6 +4050,9 @@ "dom-accessibility-api@0.6.3": { "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==" }, + "domain-browser@4.22.0": { + "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==" + }, "dunder-proto@1.0.1": { "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dependencies": [ @@ -1687,6 +4073,12 @@ "stream-shift" ] }, + "earcut@2.2.4": { + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "earcut@3.0.1": { + "integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==" + }, "eastasianwidth@0.2.0": { "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, @@ -1696,8 +4088,20 @@ "jake" ] }, - "electron-to-chromium@1.5.109": { - "integrity": "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ==" + "electron-to-chromium@1.5.123": { + "integrity": "sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==" + }, + "elliptic@6.6.1": { + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dependencies": [ + "bn.js@4.12.1", + "brorand", + "hash.js", + "hmac-drbg", + "inherits", + "minimalistic-assert", + "minimalistic-crypto-utils" + ] }, "emoji-regex@8.0.0": { "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" @@ -1854,9 +4258,32 @@ "esutils@2.0.3": { "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "events@3.3.0": { + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "evp_bytestokey@1.0.3": { + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dependencies": [ + "md5.js", + "safe-buffer@5.2.1" + ] + }, "expect-type@1.2.0": { "integrity": "sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==" }, + "extend-shallow@2.0.1": { + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": [ + "is-extendable@0.1.1" + ] + }, + "extend-shallow@3.0.2": { + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": [ + "assign-symbols", + "is-extendable@1.0.1" + ] + }, "fast-deep-equal@3.1.3": { "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, @@ -1878,6 +4305,13 @@ "minimatch@5.1.6" ] }, + "find-up@5.0.0": { + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": [ + "locate-path", + "path-exists" + ] + }, "for-each@0.3.5": { "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dependencies": [ @@ -1929,6 +4363,21 @@ "gensync@1.0.0-beta.2": { "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, + "geojson-equality-ts@1.0.2": { + "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", + "dependencies": [ + "@types/geojson" + ] + }, + "geojson-polygon-self-intersections@1.2.1": { + "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", + "dependencies": [ + "rbush@2.0.2" + ] + }, + "geojson-vt@4.0.2": { + "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" + }, "get-intrinsic@1.3.0": { "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dependencies": [ @@ -1944,6 +4393,9 @@ "math-intrinsics" ] }, + "get-nonce@1.0.1": { + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, "get-own-enumerable-property-symbols@3.0.2": { "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==" }, @@ -1954,6 +4406,9 @@ "es-object-atoms" ] }, + "get-stream@6.0.1": { + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, "get-symbol-description@1.1.0": { "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dependencies": [ @@ -1962,6 +4417,12 @@ "get-intrinsic" ] }, + "get-value@2.0.6": { + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==" + }, + "gl-matrix@3.4.3": { + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, "glob@10.4.5": { "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dependencies": [ @@ -1984,6 +4445,14 @@ "path-is-absolute" ] }, + "global-prefix@4.0.0": { + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "dependencies": [ + "ini", + "kind-of", + "which@4.0.0" + ] + }, "globals@11.12.0": { "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, @@ -2000,16 +4469,16 @@ "graceful-fs@4.2.11": { "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "gzipper@8.2.0": { - "integrity": "sha512-JUvhzo8dHQWJp1eyYy1ShaPfcowsPbRc2rvwkD4LRyou/80UUz96bn+EOOYLWO4PG0Y5f3+UlUX9Gmu8RZhrtw==", + "gzipper@8.2.1": { + "integrity": "sha512-Vp2vDpwU4xKtWxTaLPfNTR4euqHJamB6aKCfSEbSd/CrgqihwNxrjihJcWJG1+3Ku1ROsfF6fPXRoytTFLhFlw==", "dependencies": [ "@gfx/zopfli", "commander@12.1.0", "simple-zstd" ] }, - "happy-dom@17.2.2": { - "integrity": "sha512-3I1/CrNi780sdOhuhUnFtgTWhloSc3quSZwsylI41jycx8o97M6Y4aQAu0phSexGusT7+59BxATh4L4xiY0HcA==", + "happy-dom@17.4.4": { + "integrity": "sha512-/Pb0ctk3HTZ5xEL3BZ0hK1AqDSAUuRQitOmROPHhfUYEWpmTImwfD8vFDGADmMAX0JYgbcgxWoLFKtsWhcpuVA==", "dependencies": [ "webidl-conversions@7.0.0", "whatwg-mimetype" @@ -2042,15 +4511,49 @@ "has-symbols" ] }, + "hash-base@3.0.5": { + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "dependencies": [ + "inherits", + "safe-buffer@5.2.1" + ] + }, + "hash.js@1.1.7": { + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": [ + "inherits", + "minimalistic-assert" + ] + }, "hasown@2.0.2": { "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": [ "function-bind" ] }, + "hmac-drbg@1.0.1": { + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": [ + "hash.js", + "minimalistic-assert", + "minimalistic-crypto-utils" + ] + }, + "https-browserify@1.0.0": { + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, + "idb-keyval@6.2.1": { + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + }, "idb@7.1.1": { "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" }, + "ieee754@1.2.1": { + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + }, + "immer@10.1.1": { + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==" + }, "indent-string@4.0.0": { "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, @@ -2064,6 +4567,9 @@ "inherits@2.0.4": { "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "ini@4.1.3": { + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==" + }, "internal-slot@1.1.0": { "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dependencies": [ @@ -2072,6 +4578,13 @@ "side-channel" ] }, + "is-arguments@1.2.0": { + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", + "dependencies": [ + "call-bound", + "has-tostringtag" + ] + }, "is-array-buffer@3.0.5": { "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dependencies": [ @@ -2127,6 +4640,15 @@ "has-tostringtag" ] }, + "is-extendable@0.1.1": { + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==" + }, + "is-extendable@1.0.1": { + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": [ + "is-plain-object" + ] + }, "is-finalizationregistry@1.1.1": { "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dependencies": [ @@ -2151,6 +4673,13 @@ "is-module@1.0.0": { "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" }, + "is-nan@1.3.2": { + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": [ + "call-bind", + "define-properties" + ] + }, "is-number-object@1.1.1": { "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dependencies": [ @@ -2161,6 +4690,12 @@ "is-obj@1.0.1": { "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==" }, + "is-plain-object@2.0.4": { + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": [ + "isobject" + ] + }, "is-regex@1.2.1": { "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dependencies": [ @@ -2234,6 +4769,15 @@ "isexe@2.0.0": { "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "isexe@3.1.1": { + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==" + }, + "isobject@3.0.1": { + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "isomorphic-timers-promises@1.0.1": { + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==" + }, "jackspeak@3.4.3": { "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dependencies": [ @@ -2253,6 +4797,9 @@ "jiti@2.4.2": { "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==" }, + "js-cookie@3.0.5": { + "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==" + }, "js-tokens@4.0.0": { "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, @@ -2268,6 +4815,12 @@ "json-schema@0.4.0": { "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" }, + "json-stringify-pretty-compact@3.0.0": { + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + }, + "json-stringify-pretty-compact@4.0.0": { + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==" + }, "json5@2.2.3": { "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, @@ -2281,41 +4834,53 @@ "jsonpointer@5.0.1": { "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" }, + "jsts@2.7.1": { + "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==" + }, + "kdbush@4.0.2": { + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, + "kind-of@6.0.3": { + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, "leven@3.1.0": { "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, - "lightningcss-darwin-arm64@1.29.1": { - "integrity": "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw==" + "libphonenumber-js@1.12.6": { + "integrity": "sha512-PJiS4ETaUfCOFLpmtKzAbqZQjCCKVu2OhTV4SVNNE7c2nu/dACvtCqj4L0i/KWNnIgRv7yrILvBj5Lonv5Ncxw==" }, - "lightningcss-darwin-x64@1.29.1": { - "integrity": "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA==" + "lightningcss-darwin-arm64@1.29.2": { + "integrity": "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==" }, - "lightningcss-freebsd-x64@1.29.1": { - "integrity": "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ==" + "lightningcss-darwin-x64@1.29.2": { + "integrity": "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==" }, - "lightningcss-linux-arm-gnueabihf@1.29.1": { - "integrity": "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg==" + "lightningcss-freebsd-x64@1.29.2": { + "integrity": "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==" }, - "lightningcss-linux-arm64-gnu@1.29.1": { - "integrity": "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ==" + "lightningcss-linux-arm-gnueabihf@1.29.2": { + "integrity": "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==" }, - "lightningcss-linux-arm64-musl@1.29.1": { - "integrity": "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw==" + "lightningcss-linux-arm64-gnu@1.29.2": { + "integrity": "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==" }, - "lightningcss-linux-x64-gnu@1.29.1": { - "integrity": "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw==" + "lightningcss-linux-arm64-musl@1.29.2": { + "integrity": "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==" }, - "lightningcss-linux-x64-musl@1.29.1": { - "integrity": "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw==" + "lightningcss-linux-x64-gnu@1.29.2": { + "integrity": "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==" }, - "lightningcss-win32-arm64-msvc@1.29.1": { - "integrity": "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog==" + "lightningcss-linux-x64-musl@1.29.2": { + "integrity": "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==" }, - "lightningcss-win32-x64-msvc@1.29.1": { - "integrity": "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q==" + "lightningcss-win32-arm64-msvc@1.29.2": { + "integrity": "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==" }, - "lightningcss@1.29.1": { - "integrity": "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q==", + "lightningcss-win32-x64-msvc@1.29.2": { + "integrity": "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==" + }, + "lightningcss@1.29.2": { + "integrity": "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==", "dependencies": [ "detect-libc", "lightningcss-darwin-arm64", @@ -2330,9 +4895,18 @@ "lightningcss-win32-x64-msvc" ] }, + "locate-path@6.0.0": { + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": [ + "p-locate" + ] + }, "lodash.debounce@4.0.8": { "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, + "lodash.isequal@4.5.0": { + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "lodash.sortby@4.7.0": { "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" }, @@ -2351,6 +4925,12 @@ "yallist@3.1.1" ] }, + "lucide-react@0.477.0_react@19.0.0": { + "integrity": "sha512-yCf7aYxerFZAbd8jHJxjwe1j7jEMPptjnaOqdYeirFnEy85cNR3/L+o0I875CYFYya+eEVzZSbNuRk8BZPDpVw==", + "dependencies": [ + "react" + ] + }, "lz-string@1.5.0": { "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" }, @@ -2366,12 +4946,67 @@ "@jridgewell/sourcemap-codec" ] }, + "maplibre-gl@5.1.1": { + "integrity": "sha512-0Z6ODzyFu/grwT6K1eIBpv6MZE4xnJD1AV+Yq1hPzOh/YCY36r9BlSaU7d7n2/HJOaoKOy0b2YF8cS4dD+iEVQ==", + "dependencies": [ + "@mapbox/geojson-rewind", + "@mapbox/jsonlint-lines-primitives", + "@mapbox/point-geometry", + "@mapbox/tiny-sdf", + "@mapbox/unitbezier", + "@mapbox/vector-tile", + "@mapbox/whoots-js", + "@maplibre/maplibre-gl-style-spec@23.1.0", + "@types/geojson", + "@types/geojson-vt", + "@types/mapbox__point-geometry", + "@types/mapbox__vector-tile", + "@types/pbf", + "@types/supercluster", + "earcut@3.0.1", + "geojson-vt", + "gl-matrix", + "global-prefix", + "kdbush", + "murmurhash-js", + "pbf", + "potpack", + "quickselect@3.0.0", + "supercluster", + "tinyqueue@3.0.0", + "vt-pbf" + ] + }, + "marchingsquares@1.3.3": { + "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==" + }, "math-intrinsics@1.1.0": { "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" }, + "md5.js@1.3.5": { + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dependencies": [ + "hash-base", + "inherits", + "safe-buffer@5.2.1" + ] + }, + "miller-rabin@4.0.1": { + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dependencies": [ + "bn.js@4.12.1", + "brorand" + ] + }, "min-indent@1.0.1": { "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, + "minimalistic-assert@1.0.1": { + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils@1.0.1": { + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "minimatch@3.1.2": { "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": [ @@ -2390,6 +5025,9 @@ "brace-expansion@2.0.1" ] }, + "minimist@1.2.8": { + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + }, "minipass@7.1.2": { "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" }, @@ -2406,18 +5044,60 @@ "ms@2.1.3": { "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, - "nanoid@3.3.8": { - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==" + "murmurhash-js@1.0.0": { + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" + }, + "nanoid@3.3.11": { + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==" }, "node-releases@2.0.19": { "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, + "node-stdlib-browser@1.3.1": { + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", + "dependencies": [ + "assert", + "browser-resolve", + "browserify-zlib", + "buffer", + "console-browserify", + "constants-browserify", + "create-require", + "crypto-browserify", + "domain-browser", + "events", + "https-browserify", + "isomorphic-timers-promises", + "os-browserify", + "path-browserify", + "pkg-dir", + "process", + "punycode@1.4.1", + "querystring-es3", + "readable-stream@3.6.2", + "stream-browserify", + "stream-http", + "string_decoder@1.3.0", + "timers-browserify", + "tty-browserify", + "url", + "util", + "vm-browserify" + ] + }, "normalize-range@0.1.2": { "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==" }, "object-inspect@1.13.4": { "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, + "object-is@1.1.6": { + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": [ + "call-bind", + "define-properties" + ] + }, "object-keys@1.1.1": { "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, @@ -2438,6 +5118,9 @@ "wrappy" ] }, + "os-browserify@0.3.0": { + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, "own-keys@1.0.1": { "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dependencies": [ @@ -2446,9 +5129,41 @@ "safe-push-apply" ] }, + "p-limit@3.1.0": { + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": [ + "yocto-queue" + ] + }, + "p-locate@5.0.0": { + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": [ + "p-limit" + ] + }, "package-json-from-dist@1.0.1": { "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" }, + "pako@1.0.11": { + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parse-asn1@5.1.7": { + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "dependencies": [ + "asn1.js", + "browserify-aes", + "evp_bytestokey", + "hash-base", + "pbkdf2", + "safe-buffer@5.2.1" + ] + }, + "path-browserify@1.0.1": { + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "path-exists@4.0.0": { + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, "path-is-absolute@1.0.1": { "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, @@ -2471,6 +5186,23 @@ "pathval@2.0.0": { "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==" }, + "pbf@3.3.0": { + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "dependencies": [ + "ieee754", + "resolve-protobuf-schema" + ] + }, + "pbkdf2@3.1.2": { + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dependencies": [ + "create-hash", + "create-hmac", + "ripemd160", + "safe-buffer@5.2.1", + "sha.js" + ] + }, "peek-stream@1.1.3": { "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", "dependencies": [ @@ -2488,6 +5220,28 @@ "picomatch@4.0.2": { "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" }, + "pkg-dir@5.0.0": { + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dependencies": [ + "find-up" + ] + }, + "point-in-polygon-hao@1.2.4": { + "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", + "dependencies": [ + "robust-predicates@3.0.2" + ] + }, + "point-in-polygon@1.1.0": { + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" + }, + "polyclip-ts@0.16.8": { + "integrity": "sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==", + "dependencies": [ + "bignumber.js", + "splaytree-ts" + ] + }, "possible-typed-array-names@1.1.0": { "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" }, @@ -2502,6 +5256,9 @@ "source-map-js" ] }, + "potpack@2.0.0": { + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + }, "pretty-bytes@5.6.0": { "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==" }, @@ -2525,15 +5282,75 @@ "duplex-maker" ] }, + "process@0.11.10": { + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + }, + "protocol-buffers-schema@3.6.0": { + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, + "public-encrypt@4.0.3": { + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dependencies": [ + "bn.js@4.12.1", + "browserify-rsa", + "create-hash", + "parse-asn1", + "randombytes", + "safe-buffer@5.2.1" + ] + }, + "punycode@1.4.1": { + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, "punycode@2.3.1": { "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, + "qrcode-generator@1.4.4": { + "integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==" + }, + "qs@6.14.0": { + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dependencies": [ + "side-channel" + ] + }, + "querystring-es3@0.2.1": { + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + }, + "quickselect@1.1.1": { + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" + }, + "quickselect@2.0.0": { + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "quickselect@3.0.0": { + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + }, "randombytes@2.1.0": { "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": [ "safe-buffer@5.2.1" ] }, + "randomfill@1.0.4": { + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dependencies": [ + "randombytes", + "safe-buffer@5.2.1" + ] + }, + "rbush@2.0.2": { + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "dependencies": [ + "quickselect@1.1.1" + ] + }, + "rbush@3.0.1": { + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": [ + "quickselect@2.0.0" + ] + }, "react-dom@19.0.0_react@19.0.0": { "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", "dependencies": [ @@ -2541,12 +5358,74 @@ "scheduler" ] }, + "react-error-boundary@5.0.0_react@19.0.0": { + "integrity": "sha512-tnjAxG+IkpLephNcePNA7v6F/QpWLH8He65+DmedchDwg162JZqx4NmbXj0mlAYVVEd81OW7aFhmbsScYfiAFQ==", + "dependencies": [ + "@babel/runtime", + "react" + ] + }, + "react-hook-form@7.54.2_react@19.0.0": { + "integrity": "sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==", + "dependencies": [ + "react" + ] + }, "react-is@17.0.2": { "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-map-gl@8.0.1_maplibre-gl@5.1.1_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-VQjLcZdtyJCPXxy5xVL2QIgfA+YG3v+PzSdt07WWbVmXFhV4wUuy6DZSQYDdfqVH2BujKo/ImdL5zfEJApRnpg==", + "dependencies": [ + "@vis.gl/react-mapbox", + "@vis.gl/react-maplibre", + "maplibre-gl", + "react", + "react-dom" + ] + }, + "react-qrcode-logo@3.0.0_react@19.0.0_react-dom@19.0.0__react@19.0.0": { + "integrity": "sha512-2+vZ3GNBdUpYxIKyt6SFZsDGXa0xniyUQ0wPI4O0hJTzRjttPIx1pPnH9IWQmp/4nDMoN47IBhi3Breu1KudYw==", + "dependencies": [ + "lodash.isequal", + "qrcode-generator", + "react", + "react-dom" + ] + }, "react-refresh@0.14.2": { "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==" }, + "react-remove-scroll-bar@2.3.8_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dependencies": [ + "@types/react", + "react", + "react-style-singleton", + "tslib@2.8.1" + ] + }, + "react-remove-scroll@2.6.3_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "dependencies": [ + "@types/react", + "react", + "react-remove-scroll-bar", + "react-style-singleton", + "tslib@2.8.1", + "use-callback-ref", + "use-sidecar" + ] + }, + "react-style-singleton@2.2.3_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dependencies": [ + "@types/react", + "get-nonce", + "react", + "tslib@2.8.1" + ] + }, "react@19.0.0": { "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" }, @@ -2642,6 +5521,12 @@ "require-from-string@2.0.2": { "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, + "resolve-protobuf-schema@2.1.0": { + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": [ + "protocol-buffers-schema" + ] + }, "resolve@1.22.10": { "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dependencies": [ @@ -2650,12 +5535,28 @@ "supports-preserve-symlinks-flag" ] }, + "rfc4648@1.5.4": { + "integrity": "sha512-rRg/6Lb+IGfJqO05HZkN50UtY7K/JhxJag1kP23+zyMfrvoB0B7RWv06MbOzoc79RgCdNTiUaNsTT1AJZ7Z+cg==" + }, "rimraf@5.0.10": { "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dependencies": [ "glob@10.4.5" ] }, + "ripemd160@2.0.2": { + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dependencies": [ + "hash-base", + "inherits" + ] + }, + "robust-predicates@2.0.4": { + "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==" + }, + "robust-predicates@3.0.2": { + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "rollup@2.79.2": { "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "dependencies": [ @@ -2689,10 +5590,13 @@ "fsevents" ] }, + "rw@1.3.3": { + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "rxjs@6.6.7": { "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dependencies": [ - "tslib" + "tslib@1.14.1" ] }, "safe-array-concat@1.1.3": { @@ -2766,6 +5670,25 @@ "es-object-atoms" ] }, + "set-value@2.0.1": { + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": [ + "extend-shallow@2.0.1", + "is-extendable@0.1.1", + "is-plain-object", + "split-string" + ] + }, + "setimmediate@1.0.5": { + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "sha.js@2.4.11": { + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dependencies": [ + "inherits", + "safe-buffer@5.2.1" + ] + }, "shebang-command@2.0.0": { "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": [ @@ -2817,8 +5740,8 @@ "signal-exit@4.1.0": { "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" }, - "simple-git-hooks@2.11.1": { - "integrity": "sha512-tgqwPUMDcNDhuf1Xf6KTUsyeqGdgKMhzaH4PAZZuzguOgTl5uuyeYe/8mWgAr6IBxB5V06uqEf6Dy37gIWDtDg==" + "simple-git-hooks@2.12.1": { + "integrity": "sha512-NB3V4XyCOrWTIhjh85DyEoVlM3adHWwqQXKYHmuegy/108bJPP6YxuPGm4ZKBq1+GVKRbKJuzNY//09cMJYp+A==" }, "simple-zstd@1.4.2": { "integrity": "sha512-kGYEvT33M5XfyQvvW4wxl3eKcWbdbCc1V7OZzuElnaXft0qbVzoIIXHXiCm3JCUki+MZKKmvjl8p2VGLJc5Y/A==", @@ -2829,9 +5752,29 @@ "through2@4.0.2" ] }, + "skmeans@0.9.7": { + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" + }, "smob@1.5.0": { "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==" }, + "sort-asc@0.2.0": { + "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==" + }, + "sort-desc@0.2.0": { + "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==" + }, + "sort-object@3.0.3": { + "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", + "dependencies": [ + "bytewise", + "get-value", + "is-extendable@0.1.1", + "sort-asc", + "sort-desc", + "union-value" + ] + }, "source-map-js@1.2.1": { "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, @@ -2854,12 +5797,46 @@ "sourcemap-codec@1.4.8": { "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "splaytree-ts@1.0.2": { + "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==" + }, + "split-string@3.1.0": { + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": [ + "extend-shallow@3.0.2" + ] + }, "stackback@0.0.2": { "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==" }, "std-env@3.8.1": { "integrity": "sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==" }, + "ste-core@3.0.11": { + "integrity": "sha512-ivkRENMh0mdGoPlZ4xVcEaC8rXQfTEfvonRw5m8VDKV7kgcbZbaNd1TnKl08wXbcLdT7okSc63HNP8cVhy95zg==" + }, + "ste-simple-events@3.0.11": { + "integrity": "sha512-PDoQajqiTtJLNDWfJCihzACiTVZyFsXi6hNAVNelNJoNmqj+BaWuhJ/NHaAHxzfSRoMbL+hFgfPqFmxiHhAQSQ==", + "dependencies": [ + "ste-core" + ] + }, + "stream-browserify@3.0.0": { + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "dependencies": [ + "inherits", + "readable-stream@3.6.2" + ] + }, + "stream-http@3.2.0": { + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": [ + "builtin-status-codes", + "inherits", + "readable-stream@3.6.2", + "xtend" + ] + }, "stream-shift@1.0.3": { "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, @@ -2967,6 +5944,12 @@ "min-indent" ] }, + "supercluster@8.0.1": { + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "dependencies": [ + "kdbush" + ] + }, "supports-color@7.2.0": { "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": [ @@ -2976,17 +5959,23 @@ "supports-preserve-symlinks-flag@1.0.0": { "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "sweepline-intersections@1.5.0": { + "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", + "dependencies": [ + "tinyqueue@2.0.3" + ] + }, "tailwind-merge@3.0.2": { "integrity": "sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==" }, - "tailwindcss-animate@1.0.7_tailwindcss@4.0.9": { + "tailwindcss-animate@1.0.7_tailwindcss@4.0.15": { "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", "dependencies": [ "tailwindcss" ] }, - "tailwindcss@4.0.9": { - "integrity": "sha512-12laZu+fv1ONDRoNR9ipTOpUD7RN9essRVkX36sjxuRUInpN7hIiHN4lBd/SIFjbISvnXzp8h/hXzmU8SQQYhw==" + "tailwindcss@4.0.15": { + "integrity": "sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg==" }, "tapable@2.2.1": { "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" @@ -3010,7 +5999,7 @@ "dependencies": [ "is-stream", "temp-dir", - "type-fest", + "type-fest@0.16.0", "unique-string" ] }, @@ -3028,7 +6017,7 @@ "dependencies": [ "@angular/common", "@angular/core", - "tslib" + "tslib@1.14.1" ] }, "through2@2.0.5": { @@ -3044,6 +6033,12 @@ "readable-stream@3.6.2" ] }, + "timers-browserify@2.0.12": { + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": [ + "setimmediate" + ] + }, "tinybench@2.9.0": { "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==" }, @@ -3060,24 +6055,54 @@ "tinypool@1.0.2": { "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==" }, + "tinyqueue@2.0.3": { + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, + "tinyqueue@3.0.0": { + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + }, "tinyrainbow@2.0.0": { "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==" }, "tinyspy@3.0.2": { "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==" }, + "topojson-client@3.1.0": { + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": [ + "commander@2.20.3" + ] + }, + "topojson-server@3.0.1": { + "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", + "dependencies": [ + "commander@2.20.3" + ] + }, "tr46@1.0.1": { "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dependencies": [ - "punycode" + "punycode@2.3.1" ] }, "tslib@1.14.1": { "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "tslib@2.8.1": { + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "tslog@4.9.3": { + "integrity": "sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw==" + }, + "tty-browserify@0.0.1": { + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, "type-fest@0.16.0": { "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" }, + "type-fest@2.19.0": { + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, "typed-array-buffer@1.0.3": { "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dependencies": [ @@ -3122,6 +6147,15 @@ "typescript@5.8.2": { "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==" }, + "typewise-core@1.2.0": { + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" + }, + "typewise@1.0.3": { + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "dependencies": [ + "typewise-core" + ] + }, "unbox-primitive@1.1.0": { "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dependencies": [ @@ -3150,10 +6184,19 @@ "unicode-property-aliases-ecmascript@2.1.0": { "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==" }, + "union-value@1.0.1": { + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": [ + "arr-union", + "get-value", + "is-extendable@0.1.1", + "set-value" + ] + }, "unique-string@2.0.0": { "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", "dependencies": [ - "crypto-random-string" + "crypto-random-string@2.0.0" ] }, "universalify@2.0.1": { @@ -3170,10 +6213,47 @@ "picocolors" ] }, + "url@0.11.4": { + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", + "dependencies": [ + "punycode@1.4.1", + "qs" + ] + }, + "use-callback-ref@1.3.3_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "dependencies": [ + "@types/react", + "react", + "tslib@2.8.1" + ] + }, + "use-sidecar@1.1.3_@types+react@19.0.12_react@19.0.0": { + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "dependencies": [ + "@types/react", + "detect-node-es", + "react", + "tslib@2.8.1" + ] + }, "util-deprecate@1.0.2": { "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "vite-node@3.0.9_@types+node@22.13.8": { + "util@0.12.5": { + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": [ + "inherits", + "is-arguments", + "is-generator-function", + "is-typed-array", + "which-typed-array" + ] + }, + "validator@13.12.0": { + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==" + }, + "vite-node@3.0.9_@types+node@22.13.13": { "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==", "dependencies": [ "cac", @@ -3183,7 +6263,15 @@ "vite" ] }, - "vite-plugin-pwa@0.21.2_vite@6.2.3__@types+node@22.13.8_workbox-build@7.3.0__ajv@8.17.1__@babel+core@7.26.10__rollup@2.79.2_workbox-window@7.3.0_@types+node@22.13.8": { + "vite-plugin-node-polyfills@0.23.0_vite@6.2.3__@types+node@22.13.13_@types+node@22.13.13": { + "integrity": "sha512-4n+Ys+2bKHQohPBKigFlndwWQ5fFKwaGY6muNDMTb0fSQLyBzS+jjUNRZG9sKF0S/Go4ApG6LFnUGopjkILg3w==", + "dependencies": [ + "@rollup/plugin-inject", + "node-stdlib-browser", + "vite" + ] + }, + "vite-plugin-pwa@0.21.2_vite@6.2.3__@types+node@22.13.13_workbox-build@7.3.0__ajv@8.17.1__@babel+core@7.26.10__rollup@2.79.2_workbox-window@7.3.0_@types+node@22.13.13": { "integrity": "sha512-vFhH6Waw8itNu37hWUJxL50q+CBbNcMVzsKaYHQVrfxTt3ihk3PeLO22SbiP1UNWzcEPaTQv+YVxe4G0KOjAkg==", "dependencies": [ "debug", @@ -3194,7 +6282,7 @@ "workbox-window" ] }, - "vite@6.2.3_@types+node@22.13.8": { + "vite@6.2.3_@types+node@22.13.13": { "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", "dependencies": [ "@types/node", @@ -3204,7 +6292,7 @@ "rollup@4.37.0" ] }, - "vitest@3.0.9_@types+node@22.13.8_happy-dom@17.2.2_vite@6.2.3__@types+node@22.13.8": { + "vitest@3.0.9_@types+node@22.13.13_happy-dom@17.4.4_vite@6.2.3__@types+node@22.13.13": { "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==", "dependencies": [ "@types/node", @@ -3231,6 +6319,17 @@ "why-is-node-running" ] }, + "vm-browserify@1.1.2": { + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, + "vt-pbf@3.1.3": { + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "dependencies": [ + "@mapbox/point-geometry", + "@mapbox/vector-tile", + "pbf" + ] + }, "webidl-conversions@4.0.2": { "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" }, @@ -3300,7 +6399,13 @@ "which@2.0.2": { "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": [ - "isexe" + "isexe@2.0.0" + ] + }, + "which@4.0.0": { + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": [ + "isexe@3.1.1" ] }, "why-is-node-running@2.3.0": { @@ -3478,98 +6583,49 @@ "yallist@5.0.0": { "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" }, + "yocto-queue@0.1.0": { + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + }, "zone.js@0.8.29": { "integrity": "sha512-mla2acNCMkWXBD+c+yeUrBUrzOxYMNFdQ6FGfigGGtEVBPJx07BQeJekjt9DmH1FtZek4E9rE1eRR9qQpxACOQ==" + }, + "zustand@5.0.3_@types+react@19.0.12_immer@10.1.1_react@19.0.0": { + "integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==", + "dependencies": [ + "@types/react", + "immer", + "react" + ] } }, - "remote": { - "https://deno.land/std@0.223.0/assert/assert.ts": "09d30564c09de846855b7b071e62b5974b001bb72a4b797958fe0660e7849834", - "https://deno.land/std@0.223.0/assert/assertion_error.ts": "ba8752bd27ebc51f723702fac2f54d3e94447598f54264a6653d6413738a8917", - "https://deno.land/std@0.223.0/path/_common/assert_path.ts": "dbdd757a465b690b2cc72fc5fb7698c51507dec6bfafce4ca500c46b76ff7bd8", - "https://deno.land/std@0.223.0/path/_common/basename.ts": "569744855bc8445f3a56087fd2aed56bdad39da971a8d92b138c9913aecc5fa2", - "https://deno.land/std@0.223.0/path/_common/common.ts": "ef73c2860694775fe8ffcbcdd387f9f97c7a656febf0daa8c73b56f4d8a7bd4c", - "https://deno.land/std@0.223.0/path/_common/constants.ts": "dc5f8057159f4b48cd304eb3027e42f1148cf4df1fb4240774d3492b5d12ac0c", - "https://deno.land/std@0.223.0/path/_common/dirname.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.223.0/path/_common/format.ts": "92500e91ea5de21c97f5fe91e178bae62af524b72d5fcd246d6d60ae4bcada8b", - "https://deno.land/std@0.223.0/path/_common/from_file_url.ts": "d672bdeebc11bf80e99bf266f886c70963107bdd31134c4e249eef51133ceccf", - "https://deno.land/std@0.223.0/path/_common/glob_to_reg_exp.ts": "6cac16d5c2dc23af7d66348a7ce430e5de4e70b0eede074bdbcf4903f4374d8d", - "https://deno.land/std@0.223.0/path/_common/normalize.ts": "684df4aa71a04bbcc346c692c8485594fc8a90b9408dfbc26ff32cf3e0c98cc8", - "https://deno.land/std@0.223.0/path/_common/normalize_string.ts": "33edef773c2a8e242761f731adeb2bd6d683e9c69e4e3d0092985bede74f4ac3", - "https://deno.land/std@0.223.0/path/_common/relative.ts": "faa2753d9b32320ed4ada0733261e3357c186e5705678d9dd08b97527deae607", - "https://deno.land/std@0.223.0/path/_common/strip_trailing_separators.ts": "7024a93447efcdcfeaa9339a98fa63ef9d53de363f1fbe9858970f1bba02655a", - "https://deno.land/std@0.223.0/path/_common/to_file_url.ts": "7f76adbc83ece1bba173e6e98a27c647712cab773d3f8cbe0398b74afc817883", - "https://deno.land/std@0.223.0/path/_interface.ts": "8dfeb930ca4a772c458a8c7bbe1e33216fe91c253411338ad80c5b6fa93ddba0", - "https://deno.land/std@0.223.0/path/_os.ts": "8fb9b90fb6b753bd8c77cfd8a33c2ff6c5f5bc185f50de8ca4ac6a05710b2c15", - "https://deno.land/std@0.223.0/path/basename.ts": "7ee495c2d1ee516ffff48fb9a93267ba928b5a3486b550be73071bc14f8cc63e", - "https://deno.land/std@0.223.0/path/common.ts": "03e52e22882402c986fe97ca3b5bb4263c2aa811c515ce84584b23bac4cc2643", - "https://deno.land/std@0.223.0/path/constants.ts": "0c206169ca104938ede9da48ac952de288f23343304a1c3cb6ec7625e7325f36", - "https://deno.land/std@0.223.0/path/dirname.ts": "85bd955bf31d62c9aafdd7ff561c4b5fb587d11a9a5a45e2b01aedffa4238a7c", - "https://deno.land/std@0.223.0/path/extname.ts": "593303db8ae8c865cbd9ceec6e55d4b9ac5410c1e276bfd3131916591b954441", - "https://deno.land/std@0.223.0/path/format.ts": "6ce1779b0980296cf2bc20d66436b12792102b831fd281ab9eb08fa8a3e6f6ac", - "https://deno.land/std@0.223.0/path/from_file_url.ts": "911833ae4fd10a1c84f6271f36151ab785955849117dc48c6e43b929504ee069", - "https://deno.land/std@0.223.0/path/glob_to_regexp.ts": "7f30f0a21439cadfdae1be1bf370880b415e676097fda584a63ce319053b5972", - "https://deno.land/std@0.223.0/path/is_absolute.ts": "4791afc8bfd0c87f0526eaa616b0d16e7b3ab6a65b62942e50eac68de4ef67d7", - "https://deno.land/std@0.223.0/path/is_glob.ts": "a65f6195d3058c3050ab905705891b412ff942a292bcbaa1a807a74439a14141", - "https://deno.land/std@0.223.0/path/join.ts": "ae2ec5ca44c7e84a235fd532e4a0116bfb1f2368b394db1c4fb75e3c0f26a33a", - "https://deno.land/std@0.223.0/path/join_globs.ts": "5b3bf248b93247194f94fa6947b612ab9d3abd571ca8386cf7789038545e54a0", - "https://deno.land/std@0.223.0/path/mod.ts": "2821a1bb3a4148a0ffe79c92aa41aa9319fef73c6d6f5178f52b2c720d3eb02d", - "https://deno.land/std@0.223.0/path/normalize.ts": "4155743ccceeed319b350c1e62e931600272fad8ad00c417b91df093867a8352", - "https://deno.land/std@0.223.0/path/normalize_glob.ts": "cc89a77a7d3b1d01053b9dcd59462b75482b11e9068ae6c754b5cf5d794b374f", - "https://deno.land/std@0.223.0/path/parse.ts": "3e172974e3c71025f5fbd2bd9db4307acb9cc2de14cf6f4464bf40957663cabe", - "https://deno.land/std@0.223.0/path/posix/_util.ts": "1e3937da30f080bfc99fe45d7ed23c47dd8585c5e473b2d771380d3a6937cf9d", - "https://deno.land/std@0.223.0/path/posix/basename.ts": "d2fa5fbbb1c5a3ab8b9326458a8d4ceac77580961b3739cd5bfd1d3541a3e5f0", - "https://deno.land/std@0.223.0/path/posix/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.223.0/path/posix/constants.ts": "93481efb98cdffa4c719c22a0182b994e5a6aed3047e1962f6c2c75b7592bef1", - "https://deno.land/std@0.223.0/path/posix/dirname.ts": "76cd348ffe92345711409f88d4d8561d8645353ac215c8e9c80140069bf42f00", - "https://deno.land/std@0.223.0/path/posix/extname.ts": "e398c1d9d1908d3756a7ed94199fcd169e79466dd88feffd2f47ce0abf9d61d2", - "https://deno.land/std@0.223.0/path/posix/format.ts": "185e9ee2091a42dd39e2a3b8e4925370ee8407572cee1ae52838aed96310c5c1", - "https://deno.land/std@0.223.0/path/posix/from_file_url.ts": "951aee3a2c46fd0ed488899d024c6352b59154c70552e90885ed0c2ab699bc40", - "https://deno.land/std@0.223.0/path/posix/glob_to_regexp.ts": "76f012fcdb22c04b633f536c0b9644d100861bea36e9da56a94b9c589a742e8f", - "https://deno.land/std@0.223.0/path/posix/is_absolute.ts": "cebe561ad0ae294f0ce0365a1879dcfca8abd872821519b4fcc8d8967f888ede", - "https://deno.land/std@0.223.0/path/posix/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.223.0/path/posix/join.ts": "7fc2cb3716aa1b863e990baf30b101d768db479e70b7313b4866a088db016f63", - "https://deno.land/std@0.223.0/path/posix/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.223.0/path/posix/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.223.0/path/posix/normalize.ts": "baeb49816a8299f90a0237d214cef46f00ba3e95c0d2ceb74205a6a584b58a91", - "https://deno.land/std@0.223.0/path/posix/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.223.0/path/posix/parse.ts": "0b1fc4cb890dbb699ec1d2c232d274843b4a7142e1ad976b69fe51c954eb6080", - "https://deno.land/std@0.223.0/path/posix/relative.ts": "3907d6eda41f0ff723d336125a1ad4349112cd4d48f693859980314d5b9da31c", - "https://deno.land/std@0.223.0/path/posix/resolve.ts": "08b699cfeee10cb6857ccab38fa4b2ec703b0ea33e8e69964f29d02a2d5257cf", - "https://deno.land/std@0.223.0/path/posix/to_file_url.ts": "7aa752ba66a35049e0e4a4be5a0a31ac6b645257d2e031142abb1854de250aaf", - "https://deno.land/std@0.223.0/path/posix/to_namespaced_path.ts": "28b216b3c76f892a4dca9734ff1cc0045d135532bfd9c435ae4858bfa5a2ebf0", - "https://deno.land/std@0.223.0/path/relative.ts": "ab739d727180ed8727e34ed71d976912461d98e2b76de3d3de834c1066667add", - "https://deno.land/std@0.223.0/path/resolve.ts": "a6f977bdb4272e79d8d0ed4333e3d71367cc3926acf15ac271f1d059c8494d8d", - "https://deno.land/std@0.223.0/path/to_file_url.ts": "88f049b769bce411e2d2db5bd9e6fd9a185a5fbd6b9f5ad8f52bef517c4ece1b", - "https://deno.land/std@0.223.0/path/to_namespaced_path.ts": "b706a4103b104cfadc09600a5f838c2ba94dbcdb642344557122dda444526e40", - "https://deno.land/std@0.223.0/path/windows/_util.ts": "d5f47363e5293fced22c984550d5e70e98e266cc3f31769e1710511803d04808", - "https://deno.land/std@0.223.0/path/windows/basename.ts": "6bbc57bac9df2cec43288c8c5334919418d784243a00bc10de67d392ab36d660", - "https://deno.land/std@0.223.0/path/windows/common.ts": "26f60ccc8b2cac3e1613000c23ac5a7d392715d479e5be413473a37903a2b5d4", - "https://deno.land/std@0.223.0/path/windows/constants.ts": "5afaac0a1f67b68b0a380a4ef391bf59feb55856aa8c60dfc01bd3b6abb813f5", - "https://deno.land/std@0.223.0/path/windows/dirname.ts": "33e421be5a5558a1346a48e74c330b8e560be7424ed7684ea03c12c21b627bc9", - "https://deno.land/std@0.223.0/path/windows/extname.ts": "165a61b00d781257fda1e9606a48c78b06815385e7d703232548dbfc95346bef", - "https://deno.land/std@0.223.0/path/windows/format.ts": "bbb5ecf379305b472b1082cd2fdc010e44a0020030414974d6029be9ad52aeb6", - "https://deno.land/std@0.223.0/path/windows/from_file_url.ts": "ced2d587b6dff18f963f269d745c4a599cf82b0c4007356bd957cb4cb52efc01", - "https://deno.land/std@0.223.0/path/windows/glob_to_regexp.ts": "e45f1f89bf3fc36f94ab7b3b9d0026729829fabc486c77f414caebef3b7304f8", - "https://deno.land/std@0.223.0/path/windows/is_absolute.ts": "4a8f6853f8598cf91a835f41abed42112cebab09478b072e4beb00ec81f8ca8a", - "https://deno.land/std@0.223.0/path/windows/is_glob.ts": "8a8b08c08bf731acf2c1232218f1f45a11131bc01de81e5f803450a5914434b9", - "https://deno.land/std@0.223.0/path/windows/join.ts": "8d03530ab89195185103b7da9dfc6327af13eabdcd44c7c63e42e27808f50ecf", - "https://deno.land/std@0.223.0/path/windows/join_globs.ts": "a9475b44645feddceb484ee0498e456f4add112e181cb94042cdc6d47d1cdd25", - "https://deno.land/std@0.223.0/path/windows/mod.ts": "2301fc1c54a28b349e20656f68a85f75befa0ee9b6cd75bfac3da5aca9c3f604", - "https://deno.land/std@0.223.0/path/windows/normalize.ts": "78126170ab917f0ca355a9af9e65ad6bfa5be14d574c5fb09bb1920f52577780", - "https://deno.land/std@0.223.0/path/windows/normalize_glob.ts": "9c87a829b6c0f445d03b3ecadc14492e2864c3ebb966f4cea41e98326e4435c6", - "https://deno.land/std@0.223.0/path/windows/parse.ts": "dbdfe2bc6db482d755b5f63f7207cd019240fcac02ad2efa582adf67ff10553a", - "https://deno.land/std@0.223.0/path/windows/relative.ts": "3e1abc7977ee6cc0db2730d1f9cb38be87b0ce4806759d271a70e4997fc638d7", - "https://deno.land/std@0.223.0/path/windows/resolve.ts": "8dae1dadfed9d46ff46cc337c9525c0c7d959fb400a6308f34595c45bdca1972", - "https://deno.land/std@0.223.0/path/windows/to_file_url.ts": "40e560ee4854fe5a3d4d12976cef2f4e8914125c81b11f1108e127934ced502e", - "https://deno.land/std@0.223.0/path/windows/to_namespaced_path.ts": "4ffa4fb6fae321448d5fe810b3ca741d84df4d7897e61ee29be961a6aac89a4c" - }, "workspace": { "packageJson": { "dependencies": [ + "npm:@bufbuild/protobuf@^2.2.3", + "npm:@jsr/meshtastic__core@2.6.0-0", + "npm:@jsr/meshtastic__js@2.6.0-0", + "npm:@jsr/meshtastic__transport-http@*", + "npm:@jsr/meshtastic__transport-web-serial@*", + "npm:@noble/curves@^1.8.1", + "npm:@radix-ui/react-accordion@^1.2.3", + "npm:@radix-ui/react-checkbox@^1.1.4", + "npm:@radix-ui/react-dialog@^1.1.6", + "npm:@radix-ui/react-dropdown-menu@^2.1.6", + "npm:@radix-ui/react-label@^2.1.2", + "npm:@radix-ui/react-menubar@^1.1.6", + "npm:@radix-ui/react-popover@^1.1.6", + "npm:@radix-ui/react-scroll-area@^1.2.3", + "npm:@radix-ui/react-select@^2.1.6", + "npm:@radix-ui/react-separator@^1.1.2", + "npm:@radix-ui/react-switch@^1.1.3", + "npm:@radix-ui/react-tabs@^1.1.3", + "npm:@radix-ui/react-toast@^1.2.6", + "npm:@radix-ui/react-tooltip@^1.1.8", "npm:@tailwindcss/postcss@^4.0.9", "npm:@testing-library/jest-dom@^6.6.3", "npm:@testing-library/react@^16.2.0", "npm:@testing-library/user-event@^14.6.1", + "npm:@turf/turf@^7.2.0", "npm:@types/chrome@^0.0.307", "npm:@types/js-cookie@^3.0.6", "npm:@types/node@^22.13.7", @@ -3580,9 +6636,27 @@ "npm:@types/web-bluetooth@^0.0.21", "npm:@vitejs/plugin-react@^4.3.4", "npm:autoprefixer@^10.4.20", + "npm:base64-js@^1.5.1", + "npm:class-validator@~0.14.1", + "npm:class-variance-authority@~0.7.1", + "npm:clsx@^2.1.1", + "npm:cmdk@^1.0.4", + "npm:crypto-random-string@5", "npm:gzipper@^8.2.0", "npm:happy-dom@^17.2.2", + "npm:idb-keyval@^6.2.1", + "npm:immer@^10.1.1", + "npm:js-cookie@^3.0.5", + "npm:lucide-react@0.477", + "npm:maplibre-gl@5.1.1", "npm:postcss@^8.5.3", + "npm:react-dom@19", + "npm:react-error-boundary@5", + "npm:react-hook-form@^7.54.2", + "npm:react-map-gl@8.0.1", + "npm:react-qrcode-logo@3", + "npm:react@19", + "npm:rfc4648@^1.5.4", "npm:simple-git-hooks@^2.11.1", "npm:tailwind-merge@^3.0.2", "npm:tailwindcss-animate@^1.0.7", @@ -3590,9 +6664,11 @@ "npm:tar@^7.4.3", "npm:testing-library@^0.0.2", "npm:typescript@^5.8.2", + "npm:vite-plugin-node-polyfills@0.23", "npm:vite-plugin-pwa@~0.21.1", "npm:vite@^6.2.3", - "npm:vitest@^3.0.7" + "npm:vitest@^3.0.7", + "npm:zustand@5.0.3" ] } } diff --git a/package.json b/package.json index 7de6a87e..1f6fe94d 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ ] }, "homepage": "https://meshtastic.org", - "ddbependencies": { + "dependencies": { "@bufbuild/protobuf": "^2.2.3", "@meshtastic/core": "npm:@jsr/meshtastic__core@2.6.0-0", "@meshtastic/js": "npm:@jsr/meshtastic__js@2.6.0-0", diff --git a/src/components/PageComponents/Messages/ChannelChat.tsx b/src/components/PageComponents/Messages/ChannelChat.tsx index 54e398b6..6e046d11 100644 --- a/src/components/PageComponents/Messages/ChannelChat.tsx +++ b/src/components/PageComponents/Messages/ChannelChat.tsx @@ -1,10 +1,10 @@ -import { type MessageWithState, useDevice } from "@core/stores/deviceStore.ts"; -import { Message } from "@components/PageComponents/Messages/Message.tsx"; +import { MessageItem } from "@components/PageComponents/Messages/MessageItem.tsx"; +import type { Message as Message } from "@core/stores/messageStore.ts"; import { InboxIcon } from "lucide-react"; import { useCallback, useEffect, useRef } from "react"; export interface ChannelChatProps { - messages?: MessageWithState[]; + messages?: Message[]; } const EmptyState = () => ( @@ -17,8 +17,6 @@ const EmptyState = () => ( export const ChannelChat = ({ messages = [], }: ChannelChatProps) => { - const { nodes } = useDevice(); - const messagesEndRef = useRef(null); const scrollContainerRef = useRef(null); @@ -59,12 +57,12 @@ export const ChannelChat = ({ >
{messages?.map((message, index) => ( - 0 && messages[index - 1].from === message.from + index > 0 && + messages[index - 1].from === message.from } /> ))} diff --git a/src/components/PageComponents/Messages/Message.tsx b/src/components/PageComponents/Messages/Message.tsx deleted file mode 100644 index 1e59c7d5..00000000 --- a/src/components/PageComponents/Messages/Message.tsx +++ /dev/null @@ -1,177 +0,0 @@ -import { memo, useMemo } from "react"; -import { - Tooltip, - TooltipArrow, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@components/UI/Tooltip.tsx"; -import { - type MessageWithState, - useDeviceStore, -} from "@core/stores/deviceStore.ts"; -import { cn } from "@core/utils/cn.ts"; -import { Avatar } from "@components/UI/Avatar.tsx"; -import type { Protobuf } from "@meshtastic/core"; -import { AlertCircle, CheckCircle2, CircleEllipsis, LucideIcon } from "lucide-react"; - -type MessageStateValue = { - state: string; - icon: LucideIcon; - displayText: string; -} - -type MessageState = MessageWithState["state"]; - -interface MessageProps { - lastMsgSameUser: boolean; - message: MessageWithState; - sender: Protobuf.Mesh.NodeInfo; -} - -interface StatusTooltipProps { - state: MessageState; - children: React.ReactNode; -} - -interface StatusIconProps { - state: MessageState; - className?: string; -} - -const MESSAGE_STATES: Record = { - ACK: { state: 'ack', icon: CheckCircle2, displayText: "Message delivered" }, - WAITING: { state: 'waiting', icon: CircleEllipsis, displayText: "Waiting for delivery" }, - FAILED: { state: 'failed', icon: AlertCircle, displayText: "Delivery failed" }, -}; - -const getMessageState = (state: MessageState): MessageStateValue => { - switch (state) { - case MESSAGE_STATES.ACK.state: - return MESSAGE_STATES.ACK; - case MESSAGE_STATES.WAITING.state: - return MESSAGE_STATES.WAITING; - case MESSAGE_STATES.FAILED.state: - return MESSAGE_STATES.FAILED; - default: - return MESSAGE_STATES.FAILED; - } -} - -const StatusTooltip = ({ state, children }: StatusTooltipProps) => ( - - - {children} - - {getMessageState(state).displayText ?? "An unknown error occurred"}; - - - - -); - -const StatusIcon = ({ state, className, ...otherProps }: StatusIconProps) => { - const msgState = getMessageState(state); - - const isFailed = msgState.state === 'failed' - - const iconClass = cn( - className, - "text-slate-500 dark:text-slate-400 size-5 shrink-0" - ); - - const Icon = msgState.icon; - - return ( - - - - ); -}; - -const TimeDisplay = memo(({ date, className }: { date: Date; className?: string }) => ( -
- - {date?.toLocaleDateString()} - - - {date?.toLocaleTimeString(undefined, { - hour: "2-digit", - minute: "2-digit", - })} - -
-)); - -export const Message = (({ lastMsgSameUser, message, sender }: MessageProps) => { - console.log('Message', message); - - const { getDevices } = useDeviceStore(); - - const isDeviceUser = useMemo( - () => - getDevices() - .map((device) => device.nodes.get(device.hardware.myNodeNum)?.num) - .includes(message.from), - [getDevices, message.from] - ); - - const messageUser = sender?.user; - - const getMessageTextStyles = (state: MessageState) => { - const msgState = getMessageState(state); - const isAcknowledged = msgState.state === 'ack' - const isFailed = msgState.state === 'failed' - - return cn( - "break-words overflow-hidden", - isAcknowledged - ? "text-slate-900 dark:text-white" - : "text-slate-900 dark:text-slate-400", - isFailed && "text-red-500 dark:text-red-500", - ); - }; - - const messageTextClass = useMemo(() => getMessageTextStyles(message.state), [message.state]); - - - return ( -
-
-
- {!lastMsgSameUser && ( -
- -
- - {messageUser?.longName} - -
-
- )} -
- -
-
- {message.data} -
- -
-
-
- ); -}); diff --git a/src/components/PageComponents/Messages/MessageInput.tsx b/src/components/PageComponents/Messages/MessageInput.tsx index 18e91bc0..7698e28c 100644 --- a/src/components/PageComponents/Messages/MessageInput.tsx +++ b/src/components/PageComponents/Messages/MessageInput.tsx @@ -5,7 +5,7 @@ import { useDevice } from "@core/stores/deviceStore.ts"; import type { Types } from "@meshtastic/core"; import { SendIcon } from "lucide-react"; import { startTransition, useCallback, useMemo, useState } from "react"; -import { useMessageStore } from "@core/stores/messageStore.ts"; +import { ChatTypes, useMessageStore } from "@core/stores/messageStore.ts"; export interface MessageInputProps { to: Types.Destination; @@ -18,55 +18,40 @@ export const MessageInput = ({ channel, maxBytes, }: MessageInputProps) => { - const { - connection, - messageDraft, - setMessageDraft, - hardware, - } = useDevice(); - const { setMessageState } = useMessageStore() - const myNodeNum = hardware.myNodeNum; + const { connection, messageDraft, setMessageDraft } = useDevice(); + const { setMessageState, activeChat } = useMessageStore(); + const [localDraft, setLocalDraft] = useState(messageDraft); const [messageBytes, setMessageBytes] = useState(0); const debouncedSetMessageDraft = useMemo( - () => debounce(setMessageDraft, 300), - [setMessageDraft], + () => debounce((value: string) => setMessageDraft(value), 300), + [setMessageDraft] ); - // sends the message to the selected destination - const sendText = useCallback( - async (message: string) => { + const calculateBytes = (text: string) => new Blob([text]).size; - await connection - ?.sendText(message, to, true, channel) - .then((id: number) => - setMessageState( - to === "broadcast" ? "broadcast" : "direct", - channel, - to as number, - myNodeNum, - id, - "ack", - ) - ) - .catch((e: Types.PacketError) => - setMessageState( - to === "broadcast" ? "broadcast" : "direct", - channel, - to as number, - myNodeNum, - e.id, - e.error, - ) - ); - }, - [channel, connection, myNodeNum, setMessageState, to], - ); + const chatType = to === 'broadcast' ? ChatTypes.BROADCAST : ChatTypes.DIRECT; + + const sendText = useCallback(async (message: string) => { + try { + const messageId = await connection?.sendText(message, to, true, channel); + if (messageId !== undefined) { + setMessageState({ type: chatType, key: activeChat, messageId, newState: 'ack' }); + } + } catch (e: any) { + setMessageState({ + type: chatType, + key: activeChat, + messageId: e?.id, + newState: 'failed', + }); + } + }, [channel, connection, setMessageState, to, activeChat, chatType]); const handleInputChange = (e: React.ChangeEvent) => { const newValue = e.target.value; - const byteLength = new Blob([newValue]).size; + const byteLength = calculateBytes(newValue); if (byteLength <= maxBytes) { setLocalDraft(newValue); @@ -75,24 +60,29 @@ export const MessageInput = ({ } }; + const handleBeforeInput = (e: React.FormEvent) => { + const nextValue = localDraft + (e.nativeEvent as InputEvent).data; + if (calculateBytes(nextValue) > maxBytes) { + e.preventDefault(); + } + }; + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault(); + if (!localDraft.trim()) return; + + startTransition(() => { + sendText(localDraft.trim()); + setLocalDraft(""); + setMessageDraft(""); + setMessageBytes(0); + }); + }; + return (
-
{ - // prevent user from sending blank/empty message - if (localDraft === "") return; - const message = formData.get("messageInput") as string; - startTransition(() => { - sendText(message); - setLocalDraft(""); - setMessageDraft(""); - setMessageBytes(0); - - }); - }} - > -
+ +
+ -
diff --git a/src/components/PageComponents/Messages/MessageItem.tsx b/src/components/PageComponents/Messages/MessageItem.tsx index 384aaefc..3422b535 100644 --- a/src/components/PageComponents/Messages/MessageItem.tsx +++ b/src/components/PageComponents/Messages/MessageItem.tsx @@ -5,13 +5,13 @@ import { TooltipProvider, TooltipTrigger, } from "@components/UI/Tooltip.tsx"; -import { useDeviceStore } from "@core/stores/deviceStore.ts"; +import { MessageState, useDeviceStore } from "@core/stores/deviceStore.ts"; import { cn } from "@core/utils/cn.ts"; import { Avatar } from "@components/UI/Avatar.tsx"; import { AlertCircle, CheckCircle2, CircleEllipsis } from "lucide-react"; import type { LucideIcon } from "lucide-react"; import { ReactNode, useMemo } from "react"; -import { Message, MessageState } from "@core/services/types.ts"; +import { Message } from "@core/stores/messageStore.ts"; interface MessageProps { lastMsgSameUser: boolean; @@ -73,14 +73,15 @@ const getMessageTextStyles = (status: MessageStatus) => { ); }; -const TimeDisplay = ({ date, className }: { date: Date; className?: string }) => ( -
- {date.toLocaleDateString()} +const TimeDisplay = ({ date, className }: { date: Date; className?: string }) => { + const _date = new Date(date); + return (
+ {_date?.toLocaleDateString()} - {date.toLocaleTimeString(undefined, { hour: "2-digit", minute: "2-digit" })} + {_date?.toLocaleTimeString(undefined, { hour: "2-digit", minute: "2-digit" })} -
-); +
) +}; export const MessageItem = ({ lastMsgSameUser, message }: MessageProps) => { const { getDevices } = useDeviceStore(); diff --git a/src/core/dto/PacketToMessageDTO.ts b/src/core/dto/PacketToMessageDTO.ts new file mode 100644 index 00000000..6ab6a12a --- /dev/null +++ b/src/core/dto/PacketToMessageDTO.ts @@ -0,0 +1,41 @@ +import type { Types } from "@meshtastic/js"; +import { Message, MessageType, MessageState } from "@core/stores/messageStore.ts"; + +class PacketToMessageDTO { + channel: Types.ChannelNumber; + to: number; + from: number; + date: string; + messageId: number; + state: MessageState; + message: string; + type: MessageType; + + constructor(data: Types.PacketMetadata, nodeNum: number) { + const payload = data + + this.channel = payload.channel + this.to = payload.to; + this.from = payload.from; + this.date = new Date(payload.rxTime).toISOString(); + this.messageId = payload.id; + this.state = payload.from !== nodeNum ? "ack" : "waiting"; + this.message = payload.data; + this.type = payload.type; + } + + toMessage(): Message { + return { + channel: this.channel, + to: this.to, + from: this.from, + date: this.date, + messageId: this.messageId, + state: this.state, + message: this.message, + type: this.type, + } as Message; + } +} + +export default PacketToMessageDTO; \ No newline at end of file diff --git a/src/core/services/messaging/db.ts b/src/core/services/messaging/db.ts index 2ca949eb..b6f08d50 100644 --- a/src/core/services/messaging/db.ts +++ b/src/core/services/messaging/db.ts @@ -1,7 +1,7 @@ import { StateStorage } from "zustand/middleware"; import { get, set, del } from "idb-keyval"; -export const zustandIDBStorage: StateStorage = { +export const zustandIndexDBStorage: StateStorage = { getItem: async (name: string): Promise => { return (await get(name)) || null; }, diff --git a/src/core/stores/deviceStore.ts b/src/core/stores/deviceStore.ts index 45636cdd..debbb0e1 100644 --- a/src/core/stores/deviceStore.ts +++ b/src/core/stores/deviceStore.ts @@ -10,7 +10,7 @@ export interface MessageWithState extends Types.PacketMetadata { state: MessageState; } -export type MessageState = "ack" | "waiting" | Protobuf.Mesh.Routing_Error; +export type MessageState = "ack" | "waiting" | 'failed'; export interface ProcessPacketParams { from: number; diff --git a/src/core/stores/messageStore.ts b/src/core/stores/messageStore.ts index a812aa68..5d3252cc 100644 --- a/src/core/stores/messageStore.ts +++ b/src/core/stores/messageStore.ts @@ -2,40 +2,60 @@ import { create } from 'zustand'; import { persist, createJSONStorage } from 'zustand/middleware'; import { produce } from 'immer'; import { Types } from '@meshtastic/core'; -import { zustandIDBStorage } from "@core/services/messaging/db.ts"; +import { zustandIndexDBStorage } from "@core/services/messaging/db.ts"; -export interface MessageWithState { - id: number; - from: number; +const MESSAGE_STATES = { + ack: "ack", + waiting: "waiting", + failed: 'failed', +}; +export type MessageState = keyof typeof MESSAGE_STATES; + +export const ChatTypes = { + DIRECT: "direct", + BROADCAST: "broadcast", +} as const; + +export type MessageType = "broadcast" | "direct"; + +interface MessageBase { + channel: Types.ChannelNumber; to: number; - channel: number; - content: string; - state: 'ack' | 'waiting' | 'failed'; - type: 'direct' | 'broadcast'; + from: number; + date: string; + messageId: number; + state: MessageState; + message: string; +} + +interface GenericMessage extends MessageBase { + type: T; } -type MessageType = 'direct' | 'broadcast'; +export type Message = GenericMessage<'direct'> | GenericMessage<'broadcast'>; export interface MessageStore { messages: { - direct: Record; - broadcast: Record; + direct: Record>; // node -> messageId -> Message + broadcast: Record>; // channel -> messageId -> Message }; - + nodeNum: number; activeChat: number; chatType: MessageType; + setNodeNum: (nodeNum: number) => void; + getNodeNum: () => number; setActiveChat: (chat: number) => void; setChatType: (type: MessageType) => void; - addMessage: (message: MessageWithState) => void; - getMessages: (type: MessageType, key: number) => MessageWithState[]; - setMessageState: ( - type: MessageType, - key: number, - messageId: number, - newState: MessageWithState['state'] - ) => void; + saveMessage: (message: Message) => void; + setMessageState: (params: { + type: MessageType; + key: number; + messageId: number; + newState?: MessageState; + }) => void; clearMessages: () => void; + getMessages: (type: MessageType, options: { myNodeNum?: number; otherNodeNum?: number; channel?: number }) => Message[]; } export const useMessageStore = create()( @@ -45,9 +65,16 @@ export const useMessageStore = create()( direct: {}, broadcast: {}, }, - - activeChat: Types.ChannelNumber.Primary, + activeChat: 0, chatType: 'broadcast', + nodeNum: 0, + setNodeNum: (nodeNum) => { + set(produce((state: MessageStore) => { + state.nodeNum = nodeNum; + })); + }, + + getNodeNum: () => get().nodeNum, setActiveChat: (chat) => { set(produce((state: MessageStore) => { @@ -61,48 +88,62 @@ export const useMessageStore = create()( })); }, - addMessage: (message) => { + saveMessage: (message) => { set(produce((state: MessageStore) => { - const group = message.type === 'direct' ? state.messages.direct : state.messages.broadcast; - const key = message.type === 'direct' ? message.from : message.channel; + const group = state.messages[message.type]; + const key = message.type === 'direct' ? Number(message.from) : Number(message.channel); + if (!group[key]) { - group[key] = []; + group[key] = {}; } - group[key].push(message); + group[key][message.messageId] = message; })); }, - - getMessages: (type, key) => { - const group = type === 'direct' ? get().messages.direct : get().messages.broadcast; - return group[key] ?? []; - }, - - setMessageState: (type, key, messageId, newState) => { + setMessageState: ({ type, key, messageId, newState = 'ack' }) => { set(produce((state: MessageStore) => { - const group = type === 'direct' ? state.messages.direct : state.messages.broadcast; - const messages = group[key]; - if (!messages) return; - const message = messages.find((msg) => msg.id === messageId); - if (message) { - message.state = newState; - } + const group = state.messages[type]; + const messageMap = group[key]; + if (!messageMap || !messageMap[messageId]) return; + messageMap[messageId].state = newState; })); }, - clearMessages: () => { set(produce((state: MessageStore) => { state.messages.direct = {}; state.messages.broadcast = {}; })); }, + getMessages: (type, options) => { + const state = get(); + + if (type === 'broadcast' && options.channel !== undefined) { + const messageMap = state.messages.broadcast[options.channel] ?? {}; + return Object.values(messageMap).sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); + } + + if (type === 'direct' && options.myNodeNum !== undefined && options.otherNodeNum !== undefined) { + const receivedMap = state.messages.direct[options.otherNodeNum] ?? {}; + const sentMap = state.messages.direct[options.myNodeNum] ?? {}; + + // Pull messages where I am the sender and otherNode is the receiver + const sentMessages = Object.values(sentMap).filter(msg => msg.to === options.otherNodeNum); + + // Pull messages received from otherNode + const receivedMessages = Object.values(receivedMap); + + // Merge and sort chronologically + return [...receivedMessages, ...sentMessages].sort( + (a, b) => new Date(a.date).getTime() - new Date(b.date).getTime() + ); + } + + return []; + }, }), { - name: 'mesh-messages', - storage: createJSONStorage(() => zustandIDBStorage), - // ✅ No need for partialize magic — simple object storage + name: 'meshtastic-message-store', + storage: createJSONStorage(() => zustandIndexDBStorage), partialize: (state) => ({ - activeChat: state.activeChat, - chatType: state.chatType, messages: state.messages, }), } diff --git a/src/core/subscriptions.ts b/src/core/subscriptions.ts index c3c23745..1bf93e22 100644 --- a/src/core/subscriptions.ts +++ b/src/core/subscriptions.ts @@ -1,6 +1,7 @@ import type { Device } from "@core/stores/deviceStore.ts"; import { MeshDevice, Protobuf } from "@meshtastic/core"; import type { MessageStore } from "@core/stores/messageStore.ts"; +import PacketToMessageDTO from "@core/dto/PacketToMessageDTO.ts"; export const subscribeAll = ( device: Device, @@ -17,7 +18,7 @@ export const subscribeAll = ( }); connection.events.onRoutingPacket.subscribe((routingPacket) => { - console.log("routingPacket", routingPacket); + console.log("Routing Packet", routingPacket); switch (routingPacket.data.variant.case) { case "errorReason": { @@ -55,6 +56,7 @@ export const subscribeAll = ( connection.events.onMyNodeInfo.subscribe((nodeInfo) => { device.setHardware(nodeInfo); + messageStore.setNodeNum(nodeInfo.myNodeNum); myNodeNum = nodeInfo.myNodeNum; }); @@ -85,12 +87,13 @@ export const subscribeAll = ( connection.events.onMessagePacket.subscribe((messagePacket) => { - console.log("messagePacket", messagePacket); - messageStore.addMessage({ - ...messagePacket, + console.log("before Message Packet", messagePacket); - state: messagePacket.from !== myNodeNum ? "ack" : "waiting", - }); + // incoming and outgoing messages are handled by this event listener + const dto = new PacketToMessageDTO(messagePacket, myNodeNum); + const message = dto.toMessage(); + console.log("after Message Packet", message); + messageStore.saveMessage(message); }); connection.events.onTraceRoutePacket.subscribe((traceRoutePacket) => { @@ -111,9 +114,6 @@ export const subscribeAll = ( }); }); - // connection.events.onQueueStatus.subscribe((queueStatus) => { - // device.setQueueStatus(queueStatus); - // }); connection.events.onRoutingPacket.subscribe((routingPacket) => { if (routingPacket.data.variant.case === "errorReason") { diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index 5afb2d3a..00074025 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -13,11 +13,11 @@ import { HashIcon, LockIcon, LockOpenIcon } from "lucide-react"; import { useState } from "react"; import { MessageInput } from "@components/PageComponents/Messages/MessageInput.tsx"; import { cn } from "@core/utils/cn.ts"; -import { useMessageStore } from "@core/stores/messageStore.ts"; +import { ChatTypes, useMessageStore } from "@core/stores/messageStore.ts"; export const MessagesPage = () => { const { channels, nodes, hardware, hasNodeError } = useDevice(); - const { getMessages, setActiveChat, chatType, activeChat, setChatType } = useMessageStore() + const { nodeNum, getMessages, setActiveChat, chatType, activeChat, setChatType } = useMessageStore() const { toast } = useToast(); const [searchTerm, setSearchTerm] = useState(""); @@ -31,13 +31,15 @@ export const MessagesPage = () => { (ch) => ch.role !== Protobuf.Channel.Channel_Role.DISABLED, ); const currentChannel = channels.get(activeChat); - const node = nodes.get(activeChat); - const nodeHex = node?.num ? numberToHexUnpadded(node.num) : "Unknown"; - const messageDestination = chatType === "direct" ? activeChat : "broadcast"; - const messageChannel = chatType === "direct" - ? Types.ChannelNumber.Primary - : activeChat; + const otherNode = nodes.get(activeChat); + + const nodeHex = otherNode?.num ? numberToHexUnpadded(otherNode.num) : "Unknown"; + + const isDirect = chatType === ChatTypes.DIRECT; + const isBroadcast = chatType === ChatTypes.BROADCAST; + + const currentChat = { type: chatType, id: activeChat }; return ( <> @@ -51,7 +53,6 @@ export const MessagesPage = () => { : channel.index === 0 ? "Primary" : `Ch ${channel.index}`} - active={activeChat === channel.index && chatType === "broadcast"} onClick={() => { setChatType("broadcast"); setActiveChat(channel.index); @@ -71,21 +72,21 @@ export const MessagesPage = () => { />
- {filteredNodes.map((node) => ( + {filteredNodes.map((otherNode) => ( { setChatType("direct"); - setActiveChat(node.num); + setActiveChat(otherNode.num); }} element={ } @@ -126,23 +127,24 @@ export const MessagesPage = () => { : []} >
- {chatType === "broadcast" && currentChannel && ( + {isBroadcast && currentChannel && (
)} - {chatType === "direct" && node && ( + {isDirect && otherNode && (
@@ -151,8 +153,8 @@ export const MessagesPage = () => {